diff options
Diffstat (limited to 'src/lib/libcrypto/asn1/asn1.h')
-rw-r--r-- | src/lib/libcrypto/asn1/asn1.h | 164 |
1 files changed, 124 insertions, 40 deletions
diff --git a/src/lib/libcrypto/asn1/asn1.h b/src/lib/libcrypto/asn1/asn1.h index 99bd64a11e..6f956b1963 100644 --- a/src/lib/libcrypto/asn1/asn1.h +++ b/src/lib/libcrypto/asn1/asn1.h | |||
@@ -59,17 +59,18 @@ | |||
59 | #ifndef HEADER_ASN1_H | 59 | #ifndef HEADER_ASN1_H |
60 | #define HEADER_ASN1_H | 60 | #define HEADER_ASN1_H |
61 | 61 | ||
62 | #ifdef __cplusplus | ||
63 | extern "C" { | ||
64 | #endif | ||
65 | |||
66 | #include <time.h> | 62 | #include <time.h> |
63 | #ifndef NO_BIO | ||
64 | #include <openssl/bio.h> | ||
65 | #endif | ||
67 | #include <openssl/bn.h> | 66 | #include <openssl/bn.h> |
68 | #include <openssl/stack.h> | 67 | #include <openssl/stack.h> |
69 | #include <openssl/safestack.h> | 68 | #include <openssl/safestack.h> |
70 | 69 | ||
71 | #ifdef VMS | 70 | #include <openssl/symhacks.h> |
72 | #include <openssl/vms_idhacks.h> | 71 | |
72 | #ifdef __cplusplus | ||
73 | extern "C" { | ||
73 | #endif | 74 | #endif |
74 | 75 | ||
75 | #define V_ASN1_UNIVERSAL 0x00 | 76 | #define V_ASN1_UNIVERSAL 0x00 |
@@ -82,12 +83,15 @@ extern "C" { | |||
82 | #define V_ASN1_PRIMATIVE_TAG 0x1f | 83 | #define V_ASN1_PRIMATIVE_TAG 0x1f |
83 | 84 | ||
84 | #define V_ASN1_APP_CHOOSE -2 /* let the recipient choose */ | 85 | #define V_ASN1_APP_CHOOSE -2 /* let the recipient choose */ |
86 | #define V_ASN1_OTHER -3 /* used in ASN1_TYPE */ | ||
87 | |||
88 | #define V_ASN1_NEG 0x100 /* negative flag */ | ||
85 | 89 | ||
86 | #define V_ASN1_UNDEF -1 | 90 | #define V_ASN1_UNDEF -1 |
87 | #define V_ASN1_EOC 0 | 91 | #define V_ASN1_EOC 0 |
88 | #define V_ASN1_BOOLEAN 1 /**/ | 92 | #define V_ASN1_BOOLEAN 1 /**/ |
89 | #define V_ASN1_INTEGER 2 | 93 | #define V_ASN1_INTEGER 2 |
90 | #define V_ASN1_NEG_INTEGER (2+0x100) | 94 | #define V_ASN1_NEG_INTEGER (2 | V_ASN1_NEG) |
91 | #define V_ASN1_BIT_STRING 3 | 95 | #define V_ASN1_BIT_STRING 3 |
92 | #define V_ASN1_OCTET_STRING 4 | 96 | #define V_ASN1_OCTET_STRING 4 |
93 | #define V_ASN1_NULL 5 | 97 | #define V_ASN1_NULL 5 |
@@ -96,7 +100,7 @@ extern "C" { | |||
96 | #define V_ASN1_EXTERNAL 8 | 100 | #define V_ASN1_EXTERNAL 8 |
97 | #define V_ASN1_REAL 9 | 101 | #define V_ASN1_REAL 9 |
98 | #define V_ASN1_ENUMERATED 10 | 102 | #define V_ASN1_ENUMERATED 10 |
99 | #define V_ASN1_NEG_ENUMERATED (10+0x100) | 103 | #define V_ASN1_NEG_ENUMERATED (10 | V_ASN1_NEG) |
100 | #define V_ASN1_UTF8STRING 12 | 104 | #define V_ASN1_UTF8STRING 12 |
101 | #define V_ASN1_SEQUENCE 16 | 105 | #define V_ASN1_SEQUENCE 16 |
102 | #define V_ASN1_SET 17 | 106 | #define V_ASN1_SET 17 |
@@ -140,32 +144,10 @@ extern "C" { | |||
140 | #define MBSTRING_UNIV (MBSTRING_FLAG|3) | 144 | #define MBSTRING_UNIV (MBSTRING_FLAG|3) |
141 | #define MBSTRING_UTF8 (MBSTRING_FLAG|4) | 145 | #define MBSTRING_UTF8 (MBSTRING_FLAG|4) |
142 | 146 | ||
143 | #define DECLARE_ASN1_SET_OF(type) \ | 147 | struct X509_algor_st; |
144 | int i2d_ASN1_SET_OF_##type(STACK_OF(type) *a,unsigned char **pp, \ | 148 | |
145 | int (*func)(type *,unsigned char **), int ex_tag, \ | 149 | #define DECLARE_ASN1_SET_OF(type) /* filled in by mkstack.pl */ |
146 | int ex_class, int is_set); \ | 150 | #define IMPLEMENT_ASN1_SET_OF(type) /* nothing, no longer needed */ |
147 | STACK_OF(type) *d2i_ASN1_SET_OF_##type(STACK_OF(type) **a,unsigned char **pp, \ | ||
148 | long length, \ | ||
149 | type *(*func)(type **, \ | ||
150 | unsigned char **,long), \ | ||
151 | void (*free_func)(type *), \ | ||
152 | int ex_tag,int ex_class); | ||
153 | |||
154 | #define IMPLEMENT_ASN1_SET_OF(type) \ | ||
155 | int i2d_ASN1_SET_OF_##type(STACK_OF(type) *a,unsigned char **pp, \ | ||
156 | int (*func)(type *,unsigned char **), int ex_tag, \ | ||
157 | int ex_class, int is_set) \ | ||
158 | { return i2d_ASN1_SET((STACK *)a,pp,func,ex_tag,ex_class,is_set); } \ | ||
159 | STACK_OF(type) *d2i_ASN1_SET_OF_##type(STACK_OF(type) **a,unsigned char **pp, \ | ||
160 | long length, \ | ||
161 | type *(*func)(type **, \ | ||
162 | unsigned char **,long), \ | ||
163 | void (*free_func)(type *), \ | ||
164 | int ex_tag,int ex_class) \ | ||
165 | { return (STACK_OF(type) *)d2i_ASN1_SET((STACK **)a,pp,length, \ | ||
166 | (char *(*)())func, \ | ||
167 | (void (*)())free_func, \ | ||
168 | ex_tag,ex_class); } | ||
169 | 151 | ||
170 | typedef struct asn1_ctx_st | 152 | typedef struct asn1_ctx_st |
171 | { | 153 | { |
@@ -254,6 +236,7 @@ DECLARE_STACK_OF(ASN1_STRING_TABLE) | |||
254 | #define ASN1_BMPSTRING ASN1_STRING | 236 | #define ASN1_BMPSTRING ASN1_STRING |
255 | #define ASN1_VISIBLESTRING ASN1_STRING | 237 | #define ASN1_VISIBLESTRING ASN1_STRING |
256 | #define ASN1_UTF8STRING ASN1_STRING | 238 | #define ASN1_UTF8STRING ASN1_STRING |
239 | #define ASN1_BOOLEAN int | ||
257 | #else | 240 | #else |
258 | typedef struct asn1_string_st ASN1_INTEGER; | 241 | typedef struct asn1_string_st ASN1_INTEGER; |
259 | typedef struct asn1_string_st ASN1_ENUMERATED; | 242 | typedef struct asn1_string_st ASN1_ENUMERATED; |
@@ -270,15 +253,99 @@ typedef struct asn1_string_st ASN1_TIME; | |||
270 | typedef struct asn1_string_st ASN1_GENERALIZEDTIME; | 253 | typedef struct asn1_string_st ASN1_GENERALIZEDTIME; |
271 | typedef struct asn1_string_st ASN1_VISIBLESTRING; | 254 | typedef struct asn1_string_st ASN1_VISIBLESTRING; |
272 | typedef struct asn1_string_st ASN1_UTF8STRING; | 255 | typedef struct asn1_string_st ASN1_UTF8STRING; |
256 | typedef int ASN1_BOOLEAN; | ||
273 | #endif | 257 | #endif |
274 | 258 | ||
275 | typedef int ASN1_NULL; | 259 | typedef int ASN1_NULL; |
276 | 260 | ||
261 | /* Parameters used by ASN1_STRING_print_ex() */ | ||
262 | |||
263 | /* These determine which characters to escape: | ||
264 | * RFC2253 special characters, control characters and | ||
265 | * MSB set characters | ||
266 | */ | ||
267 | |||
268 | #define ASN1_STRFLGS_ESC_2253 1 | ||
269 | #define ASN1_STRFLGS_ESC_CTRL 2 | ||
270 | #define ASN1_STRFLGS_ESC_MSB 4 | ||
271 | |||
272 | |||
273 | /* This flag determines how we do escaping: normally | ||
274 | * RC2253 backslash only, set this to use backslash and | ||
275 | * quote. | ||
276 | */ | ||
277 | |||
278 | #define ASN1_STRFLGS_ESC_QUOTE 8 | ||
279 | |||
280 | |||
281 | /* These three flags are internal use only. */ | ||
282 | |||
283 | /* Character is a valid PrintableString character */ | ||
284 | #define CHARTYPE_PRINTABLESTRING 0x10 | ||
285 | /* Character needs escaping if it is the first character */ | ||
286 | #define CHARTYPE_FIRST_ESC_2253 0x20 | ||
287 | /* Character needs escaping if it is the last character */ | ||
288 | #define CHARTYPE_LAST_ESC_2253 0x40 | ||
289 | |||
290 | /* NB the internal flags are safely reused below by flags | ||
291 | * handled at the top level. | ||
292 | */ | ||
293 | |||
294 | /* If this is set we convert all character strings | ||
295 | * to UTF8 first | ||
296 | */ | ||
297 | |||
298 | #define ASN1_STRFLGS_UTF8_CONVERT 0x10 | ||
299 | |||
300 | /* If this is set we don't attempt to interpret content: | ||
301 | * just assume all strings are 1 byte per character. This | ||
302 | * will produce some pretty odd looking output! | ||
303 | */ | ||
304 | |||
305 | #define ASN1_STRFLGS_IGNORE_TYPE 0x20 | ||
306 | |||
307 | /* If this is set we include the string type in the output */ | ||
308 | #define ASN1_STRFLGS_SHOW_TYPE 0x40 | ||
309 | |||
310 | /* This determines which strings to display and which to | ||
311 | * 'dump' (hex dump of content octets or DER encoding). We can | ||
312 | * only dump non character strings or everything. If we | ||
313 | * don't dump 'unknown' they are interpreted as character | ||
314 | * strings with 1 octet per character and are subject to | ||
315 | * the usual escaping options. | ||
316 | */ | ||
317 | |||
318 | #define ASN1_STRFLGS_DUMP_ALL 0x80 | ||
319 | #define ASN1_STRFLGS_DUMP_UNKNOWN 0x100 | ||
320 | |||
321 | /* These determine what 'dumping' does, we can dump the | ||
322 | * content octets or the DER encoding: both use the | ||
323 | * RFC2253 #XXXXX notation. | ||
324 | */ | ||
325 | |||
326 | #define ASN1_STRFLGS_DUMP_DER 0x200 | ||
327 | |||
328 | /* All the string flags consistent with RFC2253, | ||
329 | * escaping control characters isn't essential in | ||
330 | * RFC2253 but it is advisable anyway. | ||
331 | */ | ||
332 | |||
333 | #define ASN1_STRFLGS_RFC2253 (ASN1_STRFLGS_ESC_2253 | \ | ||
334 | ASN1_STRFLGS_ESC_CTRL | \ | ||
335 | ASN1_STRFLGS_ESC_MSB | \ | ||
336 | ASN1_STRFLGS_UTF8_CONVERT | \ | ||
337 | ASN1_STRFLGS_DUMP_UNKNOWN | \ | ||
338 | ASN1_STRFLGS_DUMP_DER) | ||
339 | |||
340 | DECLARE_STACK_OF(ASN1_INTEGER) | ||
341 | DECLARE_ASN1_SET_OF(ASN1_INTEGER) | ||
342 | |||
277 | typedef struct asn1_type_st | 343 | typedef struct asn1_type_st |
278 | { | 344 | { |
279 | int type; | 345 | int type; |
280 | union { | 346 | union { |
281 | char *ptr; | 347 | char *ptr; |
348 | ASN1_BOOLEAN boolean; | ||
282 | ASN1_STRING * asn1_string; | 349 | ASN1_STRING * asn1_string; |
283 | ASN1_OBJECT * object; | 350 | ASN1_OBJECT * object; |
284 | ASN1_INTEGER * integer; | 351 | ASN1_INTEGER * integer; |
@@ -520,6 +587,8 @@ void ASN1_TYPE_set(ASN1_TYPE *a, int type, void *value); | |||
520 | ASN1_OBJECT * ASN1_OBJECT_new(void ); | 587 | ASN1_OBJECT * ASN1_OBJECT_new(void ); |
521 | void ASN1_OBJECT_free(ASN1_OBJECT *a); | 588 | void ASN1_OBJECT_free(ASN1_OBJECT *a); |
522 | int i2d_ASN1_OBJECT(ASN1_OBJECT *a,unsigned char **pp); | 589 | int i2d_ASN1_OBJECT(ASN1_OBJECT *a,unsigned char **pp); |
590 | ASN1_OBJECT * c2i_ASN1_OBJECT(ASN1_OBJECT **a,unsigned char **pp, | ||
591 | long length); | ||
523 | ASN1_OBJECT * d2i_ASN1_OBJECT(ASN1_OBJECT **a,unsigned char **pp, | 592 | ASN1_OBJECT * d2i_ASN1_OBJECT(ASN1_OBJECT **a,unsigned char **pp, |
524 | long length); | 593 | long length); |
525 | 594 | ||
@@ -542,14 +611,17 @@ unsigned char * ASN1_STRING_data(ASN1_STRING *x); | |||
542 | ASN1_BIT_STRING * ASN1_BIT_STRING_new(void); | 611 | ASN1_BIT_STRING * ASN1_BIT_STRING_new(void); |
543 | void ASN1_BIT_STRING_free(ASN1_BIT_STRING *a); | 612 | void ASN1_BIT_STRING_free(ASN1_BIT_STRING *a); |
544 | int i2d_ASN1_BIT_STRING(ASN1_BIT_STRING *a,unsigned char **pp); | 613 | int i2d_ASN1_BIT_STRING(ASN1_BIT_STRING *a,unsigned char **pp); |
614 | int i2c_ASN1_BIT_STRING(ASN1_BIT_STRING *a,unsigned char **pp); | ||
545 | ASN1_BIT_STRING *d2i_ASN1_BIT_STRING(ASN1_BIT_STRING **a,unsigned char **pp, | 615 | ASN1_BIT_STRING *d2i_ASN1_BIT_STRING(ASN1_BIT_STRING **a,unsigned char **pp, |
546 | long length); | 616 | long length); |
617 | ASN1_BIT_STRING *c2i_ASN1_BIT_STRING(ASN1_BIT_STRING **a,unsigned char **pp, | ||
618 | long length); | ||
547 | int ASN1_BIT_STRING_set(ASN1_BIT_STRING *a, unsigned char *d, | 619 | int ASN1_BIT_STRING_set(ASN1_BIT_STRING *a, unsigned char *d, |
548 | int length ); | 620 | int length ); |
549 | int ASN1_BIT_STRING_set_bit(ASN1_BIT_STRING *a, int n, int value); | 621 | int ASN1_BIT_STRING_set_bit(ASN1_BIT_STRING *a, int n, int value); |
550 | int ASN1_BIT_STRING_get_bit(ASN1_BIT_STRING *a, int n); | 622 | int ASN1_BIT_STRING_get_bit(ASN1_BIT_STRING *a, int n); |
551 | 623 | ||
552 | #ifdef HEADER_BIO_H | 624 | #ifndef NO_BIO |
553 | int ASN1_BIT_STRING_name_print(BIO *out, ASN1_BIT_STRING *bs, | 625 | int ASN1_BIT_STRING_name_print(BIO *out, ASN1_BIT_STRING *bs, |
554 | BIT_STRING_BITNAME *tbl, int indent); | 626 | BIT_STRING_BITNAME *tbl, int indent); |
555 | #endif | 627 | #endif |
@@ -563,8 +635,11 @@ int d2i_ASN1_BOOLEAN(int *a,unsigned char **pp,long length); | |||
563 | ASN1_INTEGER * ASN1_INTEGER_new(void); | 635 | ASN1_INTEGER * ASN1_INTEGER_new(void); |
564 | void ASN1_INTEGER_free(ASN1_INTEGER *a); | 636 | void ASN1_INTEGER_free(ASN1_INTEGER *a); |
565 | int i2d_ASN1_INTEGER(ASN1_INTEGER *a,unsigned char **pp); | 637 | int i2d_ASN1_INTEGER(ASN1_INTEGER *a,unsigned char **pp); |
638 | int i2c_ASN1_INTEGER(ASN1_INTEGER *a,unsigned char **pp); | ||
566 | ASN1_INTEGER *d2i_ASN1_INTEGER(ASN1_INTEGER **a,unsigned char **pp, | 639 | ASN1_INTEGER *d2i_ASN1_INTEGER(ASN1_INTEGER **a,unsigned char **pp, |
567 | long length); | 640 | long length); |
641 | ASN1_INTEGER *c2i_ASN1_INTEGER(ASN1_INTEGER **a,unsigned char **pp, | ||
642 | long length); | ||
568 | ASN1_INTEGER *d2i_ASN1_UINTEGER(ASN1_INTEGER **a,unsigned char **pp, | 643 | ASN1_INTEGER *d2i_ASN1_UINTEGER(ASN1_INTEGER **a,unsigned char **pp, |
569 | long length); | 644 | long length); |
570 | ASN1_INTEGER * ASN1_INTEGER_dup(ASN1_INTEGER *x); | 645 | ASN1_INTEGER * ASN1_INTEGER_dup(ASN1_INTEGER *x); |
@@ -579,6 +654,10 @@ ASN1_ENUMERATED *d2i_ASN1_ENUMERATED(ASN1_ENUMERATED **a,unsigned char **pp, | |||
579 | int ASN1_UTCTIME_check(ASN1_UTCTIME *a); | 654 | int ASN1_UTCTIME_check(ASN1_UTCTIME *a); |
580 | ASN1_UTCTIME *ASN1_UTCTIME_set(ASN1_UTCTIME *s,time_t t); | 655 | ASN1_UTCTIME *ASN1_UTCTIME_set(ASN1_UTCTIME *s,time_t t); |
581 | int ASN1_UTCTIME_set_string(ASN1_UTCTIME *s, char *str); | 656 | int ASN1_UTCTIME_set_string(ASN1_UTCTIME *s, char *str); |
657 | int ASN1_UTCTIME_cmp_time_t(const ASN1_UTCTIME *s, time_t t); | ||
658 | #if 0 | ||
659 | time_t ASN1_UTCTIME_get(const ASN1_UTCTIME *s); | ||
660 | #endif | ||
582 | 661 | ||
583 | int ASN1_GENERALIZEDTIME_check(ASN1_GENERALIZEDTIME *a); | 662 | int ASN1_GENERALIZEDTIME_check(ASN1_GENERALIZEDTIME *a); |
584 | ASN1_GENERALIZEDTIME *ASN1_GENERALIZEDTIME_set(ASN1_GENERALIZEDTIME *s,time_t t); | 663 | ASN1_GENERALIZEDTIME *ASN1_GENERALIZEDTIME_set(ASN1_GENERALIZEDTIME *s,time_t t); |
@@ -673,10 +752,10 @@ ASN1_TIME *ASN1_TIME_set(ASN1_TIME *s,time_t t); | |||
673 | int i2d_ASN1_SET(STACK *a, unsigned char **pp, | 752 | int i2d_ASN1_SET(STACK *a, unsigned char **pp, |
674 | int (*func)(), int ex_tag, int ex_class, int is_set); | 753 | int (*func)(), int ex_tag, int ex_class, int is_set); |
675 | STACK * d2i_ASN1_SET(STACK **a, unsigned char **pp, long length, | 754 | STACK * d2i_ASN1_SET(STACK **a, unsigned char **pp, long length, |
676 | char *(*func)(), void (*free_func)(), | 755 | char *(*func)(), void (*free_func)(void *), |
677 | int ex_tag, int ex_class); | 756 | int ex_tag, int ex_class); |
678 | 757 | ||
679 | #ifdef HEADER_BIO_H | 758 | #ifndef NO_BIO |
680 | int i2a_ASN1_INTEGER(BIO *bp, ASN1_INTEGER *a); | 759 | int i2a_ASN1_INTEGER(BIO *bp, ASN1_INTEGER *a); |
681 | int a2i_ASN1_INTEGER(BIO *bp,ASN1_INTEGER *bs,char *buf,int size); | 760 | int a2i_ASN1_INTEGER(BIO *bp,ASN1_INTEGER *bs,char *buf,int size); |
682 | int i2a_ASN1_ENUMERATED(BIO *bp, ASN1_ENUMERATED *a); | 761 | int i2a_ASN1_ENUMERATED(BIO *bp, ASN1_ENUMERATED *a); |
@@ -729,16 +808,21 @@ char *ASN1_dup(int (*i2d)(),char *(*d2i)(),char *x); | |||
729 | #ifndef NO_FP_API | 808 | #ifndef NO_FP_API |
730 | char *ASN1_d2i_fp(char *(*xnew)(),char *(*d2i)(),FILE *fp,unsigned char **x); | 809 | char *ASN1_d2i_fp(char *(*xnew)(),char *(*d2i)(),FILE *fp,unsigned char **x); |
731 | int ASN1_i2d_fp(int (*i2d)(),FILE *out,unsigned char *x); | 810 | int ASN1_i2d_fp(int (*i2d)(),FILE *out,unsigned char *x); |
811 | int ASN1_STRING_print_ex_fp(FILE *fp, ASN1_STRING *str, unsigned long flags); | ||
732 | #endif | 812 | #endif |
733 | 813 | ||
734 | #ifdef HEADER_BIO_H | 814 | int ASN1_STRING_to_UTF8(unsigned char **out, ASN1_STRING *in); |
815 | |||
816 | #ifndef NO_BIO | ||
735 | char *ASN1_d2i_bio(char *(*xnew)(),char *(*d2i)(),BIO *bp,unsigned char **x); | 817 | char *ASN1_d2i_bio(char *(*xnew)(),char *(*d2i)(),BIO *bp,unsigned char **x); |
736 | int ASN1_i2d_bio(int (*i2d)(),BIO *out,unsigned char *x); | 818 | int ASN1_i2d_bio(int (*i2d)(),BIO *out,unsigned char *x); |
737 | int ASN1_UTCTIME_print(BIO *fp,ASN1_UTCTIME *a); | 819 | int ASN1_UTCTIME_print(BIO *fp,ASN1_UTCTIME *a); |
738 | int ASN1_GENERALIZEDTIME_print(BIO *fp,ASN1_GENERALIZEDTIME *a); | 820 | int ASN1_GENERALIZEDTIME_print(BIO *fp,ASN1_GENERALIZEDTIME *a); |
739 | int ASN1_TIME_print(BIO *fp,ASN1_TIME *a); | 821 | int ASN1_TIME_print(BIO *fp,ASN1_TIME *a); |
740 | int ASN1_STRING_print(BIO *bp,ASN1_STRING *v); | 822 | int ASN1_STRING_print(BIO *bp,ASN1_STRING *v); |
823 | int ASN1_STRING_print_ex(BIO *out, ASN1_STRING *str, unsigned long flags); | ||
741 | int ASN1_parse(BIO *bp,unsigned char *pp,long len,int indent); | 824 | int ASN1_parse(BIO *bp,unsigned char *pp,long len,int indent); |
825 | int ASN1_parse_dump(BIO *bp,unsigned char *pp,long len,int indent,int dump); | ||
742 | #endif | 826 | #endif |
743 | const char *ASN1_tag2str(int tag); | 827 | const char *ASN1_tag2str(int tag); |
744 | 828 | ||
@@ -768,9 +852,9 @@ int ASN1_TYPE_get_int_octetstring(ASN1_TYPE *a,long *num, | |||
768 | unsigned char *data, int max_len); | 852 | unsigned char *data, int max_len); |
769 | 853 | ||
770 | STACK *ASN1_seq_unpack(unsigned char *buf, int len, char *(*d2i)(), | 854 | STACK *ASN1_seq_unpack(unsigned char *buf, int len, char *(*d2i)(), |
771 | void (*free_func)() ); | 855 | void (*free_func)(void *) ); |
772 | unsigned char *ASN1_seq_pack(STACK *safes, int (*i2d)(), unsigned char **buf, | 856 | unsigned char *ASN1_seq_pack(STACK *safes, int (*i2d)(), unsigned char **buf, |
773 | int *len ); | 857 | int *len ); |
774 | void *ASN1_unpack_string(ASN1_STRING *oct, char *(*d2i)()); | 858 | void *ASN1_unpack_string(ASN1_STRING *oct, char *(*d2i)()); |
775 | ASN1_STRING *ASN1_pack_string(void *obj, int (*i2d)(), ASN1_OCTET_STRING **oct); | 859 | ASN1_STRING *ASN1_pack_string(void *obj, int (*i2d)(), ASN1_OCTET_STRING **oct); |
776 | 860 | ||