64 #ifndef OPENSSL_NO_BIO
73 #ifndef OPENSSL_NO_DEPRECATED
77 #ifdef OPENSSL_BUILD_SHLIBCRYPTO
78 # undef OPENSSL_EXTERN
79 # define OPENSSL_EXTERN OPENSSL_EXPORT
86 #define V_ASN1_UNIVERSAL 0x00
87 #define V_ASN1_APPLICATION 0x40
88 #define V_ASN1_CONTEXT_SPECIFIC 0x80
89 #define V_ASN1_PRIVATE 0xc0
91 #define V_ASN1_CONSTRUCTED 0x20
92 #define V_ASN1_PRIMITIVE_TAG 0x1f
93 #define V_ASN1_PRIMATIVE_TAG 0x1f
95 #define V_ASN1_APP_CHOOSE -2
96 #define V_ASN1_OTHER -3
99 #define V_ASN1_NEG 0x100
101 #define V_ASN1_UNDEF -1
103 #define V_ASN1_BOOLEAN 1
104 #define V_ASN1_INTEGER 2
105 #define V_ASN1_NEG_INTEGER (2 | V_ASN1_NEG)
106 #define V_ASN1_BIT_STRING 3
107 #define V_ASN1_OCTET_STRING 4
108 #define V_ASN1_NULL 5
109 #define V_ASN1_OBJECT 6
110 #define V_ASN1_OBJECT_DESCRIPTOR 7
111 #define V_ASN1_EXTERNAL 8
112 #define V_ASN1_REAL 9
113 #define V_ASN1_ENUMERATED 10
114 #define V_ASN1_NEG_ENUMERATED (10 | V_ASN1_NEG)
115 #define V_ASN1_UTF8STRING 12
116 #define V_ASN1_SEQUENCE 16
117 #define V_ASN1_SET 17
118 #define V_ASN1_NUMERICSTRING 18
119 #define V_ASN1_PRINTABLESTRING 19
120 #define V_ASN1_T61STRING 20
121 #define V_ASN1_TELETEXSTRING 20
122 #define V_ASN1_VIDEOTEXSTRING 21
123 #define V_ASN1_IA5STRING 22
124 #define V_ASN1_UTCTIME 23
125 #define V_ASN1_GENERALIZEDTIME 24
126 #define V_ASN1_GRAPHICSTRING 25
127 #define V_ASN1_ISO64STRING 26
128 #define V_ASN1_VISIBLESTRING 26
129 #define V_ASN1_GENERALSTRING 27
130 #define V_ASN1_UNIVERSALSTRING 28
131 #define V_ASN1_BMPSTRING 30
134 #define B_ASN1_NUMERICSTRING 0x0001
135 #define B_ASN1_PRINTABLESTRING 0x0002
136 #define B_ASN1_T61STRING 0x0004
137 #define B_ASN1_TELETEXSTRING 0x0004
138 #define B_ASN1_VIDEOTEXSTRING 0x0008
139 #define B_ASN1_IA5STRING 0x0010
140 #define B_ASN1_GRAPHICSTRING 0x0020
141 #define B_ASN1_ISO64STRING 0x0040
142 #define B_ASN1_VISIBLESTRING 0x0040
143 #define B_ASN1_GENERALSTRING 0x0080
144 #define B_ASN1_UNIVERSALSTRING 0x0100
145 #define B_ASN1_OCTET_STRING 0x0200
146 #define B_ASN1_BIT_STRING 0x0400
147 #define B_ASN1_BMPSTRING 0x0800
148 #define B_ASN1_UNKNOWN 0x1000
149 #define B_ASN1_UTF8STRING 0x2000
150 #define B_ASN1_UTCTIME 0x4000
151 #define B_ASN1_GENERALIZEDTIME 0x8000
152 #define B_ASN1_SEQUENCE 0x10000
155 #define MBSTRING_FLAG 0x1000
156 #define MBSTRING_UTF8 (MBSTRING_FLAG)
157 #define MBSTRING_ASC (MBSTRING_FLAG|1)
158 #define MBSTRING_BMP (MBSTRING_FLAG|2)
159 #define MBSTRING_UNIV (MBSTRING_FLAG|4)
161 #define SMIME_OLDMIME 0x400
162 #define SMIME_CRLFEOL 0x800
163 #define SMIME_STREAM 0x1000
168 #define DECLARE_ASN1_SET_OF(type)
169 #define IMPLEMENT_ASN1_SET_OF(type)
192 const unsigned char *
p;
199 const unsigned char *
max;
200 const unsigned char *
q;
201 const unsigned char **
pp;
207 #define ASN1_OBJECT_FLAG_DYNAMIC 0x01
208 #define ASN1_OBJECT_FLAG_CRITICAL 0x02
209 #define ASN1_OBJECT_FLAG_DYNAMIC_STRINGS 0x04
210 #define ASN1_OBJECT_FLAG_DYNAMIC_DATA 0x08
216 const unsigned char *
data;
220 #define ASN1_STRING_FLAG_BITS_LEFT 0x08
225 #define ASN1_STRING_FLAG_NDEF 0x010
232 #define ASN1_STRING_FLAG_CONT 0x020
236 #define ASN1_STRING_FLAG_MSTRING 0x040
263 #define ASN1_LONG_UNDEF 0x7fffffffL
265 #define STABLE_FLAGS_MALLOC 0x01
266 #define STABLE_NO_MASK 0x02
267 #define DIRSTRING_TYPE \
268 (B_ASN1_PRINTABLESTRING|B_ASN1_T61STRING|B_ASN1_BMPSTRING|B_ASN1_UTF8STRING)
269 #define PKCS9STRING_TYPE (DIRSTRING_TYPE|B_ASN1_IA5STRING)
283 #define ub_name 32768
284 #define ub_common_name 64
285 #define ub_locality_name 128
286 #define ub_state_name 128
287 #define ub_organization_name 64
288 #define ub_organization_unit_name 64
290 #define ub_email_address 128
302 #define DECLARE_ASN1_FUNCTIONS(type) DECLARE_ASN1_FUNCTIONS_name(type, type)
304 #define DECLARE_ASN1_ALLOC_FUNCTIONS(type) \
305 DECLARE_ASN1_ALLOC_FUNCTIONS_name(type, type)
307 #define DECLARE_ASN1_FUNCTIONS_name(type, name) \
308 DECLARE_ASN1_ALLOC_FUNCTIONS_name(type, name) \
309 DECLARE_ASN1_ENCODE_FUNCTIONS(type, name, name)
311 #define DECLARE_ASN1_FUNCTIONS_fname(type, itname, name) \
312 DECLARE_ASN1_ALLOC_FUNCTIONS_name(type, name) \
313 DECLARE_ASN1_ENCODE_FUNCTIONS(type, itname, name)
315 #define DECLARE_ASN1_ENCODE_FUNCTIONS(type, itname, name) \
316 type *d2i_##name(type **a, const unsigned char **in, long len); \
317 int i2d_##name(type *a, unsigned char **out); \
318 DECLARE_ASN1_ITEM(itname)
320 #define DECLARE_ASN1_ENCODE_FUNCTIONS_const(type, name) \
321 type *d2i_##name(type **a, const unsigned char **in, long len); \
322 int i2d_##name(const type *a, unsigned char **out); \
323 DECLARE_ASN1_ITEM(name)
325 #define DECLARE_ASN1_NDEF_FUNCTION(name) \
326 int i2d_##name##_NDEF(name *a, unsigned char **out);
328 #define DECLARE_ASN1_FUNCTIONS_const(name) \
329 DECLARE_ASN1_ALLOC_FUNCTIONS(name) \
330 DECLARE_ASN1_ENCODE_FUNCTIONS_const(name, name)
332 #define DECLARE_ASN1_ALLOC_FUNCTIONS_name(type, name) \
333 type *name##_new(void); \
334 void name##_free(type *a);
336 #define DECLARE_ASN1_PRINT_FUNCTION(stname) \
337 DECLARE_ASN1_PRINT_FUNCTION_fname(stname, stname)
339 #define DECLARE_ASN1_PRINT_FUNCTION_fname(stname, fname) \
340 int fname##_print_ctx(BIO *out, stname *x, int indent, \
341 const ASN1_PCTX *pctx);
343 #define D2I_OF(type) type *(*)(type **,const unsigned char **,long)
344 #define I2D_OF(type) int (*)(type *,unsigned char **)
345 #define I2D_OF_const(type) int (*)(const type *,unsigned char **)
347 #define CHECKED_D2I_OF(type, d2i) \
348 ((d2i_of_void*) (1 ? d2i : ((D2I_OF(type))0)))
349 #define CHECKED_I2D_OF(type, i2d) \
350 ((i2d_of_void*) (1 ? i2d : ((I2D_OF(type))0)))
351 #define CHECKED_NEW_OF(type, xnew) \
352 ((void *(*)(void)) (1 ? xnew : ((type *(*)(void))0)))
353 #define CHECKED_PTR_OF(type, p) \
354 ((void*) (1 ? p : (type*)0))
355 #define CHECKED_PPTR_OF(type, p) \
356 ((void**) (1 ? p : (type**)0))
358 #define TYPEDEF_D2I_OF(type) typedef type *d2i_of_##type(type **,const unsigned char **,long)
359 #define TYPEDEF_I2D_OF(type) typedef int i2d_of_##type(type *,unsigned char **)
360 #define TYPEDEF_D2I2D_OF(type) TYPEDEF_D2I_OF(type); TYPEDEF_I2D_OF(type)
399 #ifndef OPENSSL_EXPORT_VAR_AS_FUNCTION
405 #define ASN1_ITEM_ptr(iptr) (iptr)
408 #define ASN1_ITEM_ref(iptr) (&(iptr##_it))
410 #define ASN1_ITEM_rptr(ref) (&(ref##_it))
412 #define DECLARE_ASN1_ITEM(name) \
413 OPENSSL_EXTERN const ASN1_ITEM name##_it;
425 #define ASN1_ITEM_ptr(iptr) (iptr())
428 #define ASN1_ITEM_ref(iptr) (iptr##_it)
430 #define ASN1_ITEM_rptr(ref) (ref##_it())
432 #define DECLARE_ASN1_ITEM(name) \
433 const ASN1_ITEM * name##_it(void);
444 #define ASN1_STRFLGS_ESC_2253 1
445 #define ASN1_STRFLGS_ESC_CTRL 2
446 #define ASN1_STRFLGS_ESC_MSB 4
454 #define ASN1_STRFLGS_ESC_QUOTE 8
460 #define CHARTYPE_PRINTABLESTRING 0x10
462 #define CHARTYPE_FIRST_ESC_2253 0x20
464 #define CHARTYPE_LAST_ESC_2253 0x40
474 #define ASN1_STRFLGS_UTF8_CONVERT 0x10
481 #define ASN1_STRFLGS_IGNORE_TYPE 0x20
484 #define ASN1_STRFLGS_SHOW_TYPE 0x40
494 #define ASN1_STRFLGS_DUMP_ALL 0x80
495 #define ASN1_STRFLGS_DUMP_UNKNOWN 0x100
502 #define ASN1_STRFLGS_DUMP_DER 0x200
509 #define ASN1_STRFLGS_RFC2253 (ASN1_STRFLGS_ESC_2253 | \
510 ASN1_STRFLGS_ESC_CTRL | \
511 ASN1_STRFLGS_ESC_MSB | \
512 ASN1_STRFLGS_UTF8_CONVERT | \
513 ASN1_STRFLGS_DUMP_UNKNOWN | \
514 ASN1_STRFLGS_DUMP_DER)
573 #define M_ASN1_STRING_length(x) ((x)->length)
574 #define M_ASN1_STRING_length_set(x, n) ((x)->length = (n))
575 #define M_ASN1_STRING_type(x) ((x)->type)
576 #define M_ASN1_STRING_data(x) ((x)->data)
579 #define M_ASN1_BIT_STRING_new() (ASN1_BIT_STRING *)\
580 ASN1_STRING_type_new(V_ASN1_BIT_STRING)
581 #define M_ASN1_BIT_STRING_free(a) ASN1_STRING_free((ASN1_STRING *)a)
582 #define M_ASN1_BIT_STRING_dup(a) (ASN1_BIT_STRING *)\
583 ASN1_STRING_dup((const ASN1_STRING *)a)
584 #define M_ASN1_BIT_STRING_cmp(a,b) ASN1_STRING_cmp(\
585 (const ASN1_STRING *)a,(const ASN1_STRING *)b)
586 #define M_ASN1_BIT_STRING_set(a,b,c) ASN1_STRING_set((ASN1_STRING *)a,b,c)
588 #define M_ASN1_INTEGER_new() (ASN1_INTEGER *)\
589 ASN1_STRING_type_new(V_ASN1_INTEGER)
590 #define M_ASN1_INTEGER_free(a) ASN1_STRING_free((ASN1_STRING *)a)
591 #define M_ASN1_INTEGER_dup(a) (ASN1_INTEGER *)\
592 ASN1_STRING_dup((const ASN1_STRING *)a)
593 #define M_ASN1_INTEGER_cmp(a,b) ASN1_STRING_cmp(\
594 (const ASN1_STRING *)a,(const ASN1_STRING *)b)
596 #define M_ASN1_ENUMERATED_new() (ASN1_ENUMERATED *)\
597 ASN1_STRING_type_new(V_ASN1_ENUMERATED)
598 #define M_ASN1_ENUMERATED_free(a) ASN1_STRING_free((ASN1_STRING *)a)
599 #define M_ASN1_ENUMERATED_dup(a) (ASN1_ENUMERATED *)\
600 ASN1_STRING_dup((const ASN1_STRING *)a)
601 #define M_ASN1_ENUMERATED_cmp(a,b) ASN1_STRING_cmp(\
602 (const ASN1_STRING *)a,(const ASN1_STRING *)b)
604 #define M_ASN1_OCTET_STRING_new() (ASN1_OCTET_STRING *)\
605 ASN1_STRING_type_new(V_ASN1_OCTET_STRING)
606 #define M_ASN1_OCTET_STRING_free(a) ASN1_STRING_free((ASN1_STRING *)a)
607 #define M_ASN1_OCTET_STRING_dup(a) (ASN1_OCTET_STRING *)\
608 ASN1_STRING_dup((const ASN1_STRING *)a)
609 #define M_ASN1_OCTET_STRING_cmp(a,b) ASN1_STRING_cmp(\
610 (const ASN1_STRING *)a,(const ASN1_STRING *)b)
611 #define M_ASN1_OCTET_STRING_set(a,b,c) ASN1_STRING_set((ASN1_STRING *)a,b,c)
612 #define M_ASN1_OCTET_STRING_print(a,b) ASN1_STRING_print(a,(ASN1_STRING *)b)
613 #define M_i2d_ASN1_OCTET_STRING(a,pp) \
614 i2d_ASN1_bytes((ASN1_STRING *)a,pp,V_ASN1_OCTET_STRING,\
617 #define B_ASN1_TIME \
619 B_ASN1_GENERALIZEDTIME
621 #define B_ASN1_PRINTABLE \
622 B_ASN1_NUMERICSTRING| \
623 B_ASN1_PRINTABLESTRING| \
627 B_ASN1_UNIVERSALSTRING|\
633 #define B_ASN1_DIRECTORYSTRING \
634 B_ASN1_PRINTABLESTRING| \
635 B_ASN1_TELETEXSTRING|\
637 B_ASN1_UNIVERSALSTRING|\
640 #define B_ASN1_DISPLAYTEXT \
642 B_ASN1_VISIBLESTRING| \
646 #define M_ASN1_PRINTABLE_new() ASN1_STRING_type_new(V_ASN1_T61STRING)
647 #define M_ASN1_PRINTABLE_free(a) ASN1_STRING_free((ASN1_STRING *)a)
648 #define M_i2d_ASN1_PRINTABLE(a,pp) i2d_ASN1_bytes((ASN1_STRING *)a,\
649 pp,a->type,V_ASN1_UNIVERSAL)
650 #define M_d2i_ASN1_PRINTABLE(a,pp,l) \
651 d2i_ASN1_type_bytes((ASN1_STRING **)a,pp,l, \
654 #define M_DIRECTORYSTRING_new() ASN1_STRING_type_new(V_ASN1_PRINTABLESTRING)
655 #define M_DIRECTORYSTRING_free(a) ASN1_STRING_free((ASN1_STRING *)a)
656 #define M_i2d_DIRECTORYSTRING(a,pp) i2d_ASN1_bytes((ASN1_STRING *)a,\
657 pp,a->type,V_ASN1_UNIVERSAL)
658 #define M_d2i_DIRECTORYSTRING(a,pp,l) \
659 d2i_ASN1_type_bytes((ASN1_STRING **)a,pp,l, \
660 B_ASN1_DIRECTORYSTRING)
662 #define M_DISPLAYTEXT_new() ASN1_STRING_type_new(V_ASN1_VISIBLESTRING)
663 #define M_DISPLAYTEXT_free(a) ASN1_STRING_free((ASN1_STRING *)a)
664 #define M_i2d_DISPLAYTEXT(a,pp) i2d_ASN1_bytes((ASN1_STRING *)a,\
665 pp,a->type,V_ASN1_UNIVERSAL)
666 #define M_d2i_DISPLAYTEXT(a,pp,l) \
667 d2i_ASN1_type_bytes((ASN1_STRING **)a,pp,l, \
670 #define M_ASN1_PRINTABLESTRING_new() (ASN1_PRINTABLESTRING *)\
671 ASN1_STRING_type_new(V_ASN1_PRINTABLESTRING)
672 #define M_ASN1_PRINTABLESTRING_free(a) ASN1_STRING_free((ASN1_STRING *)a)
673 #define M_i2d_ASN1_PRINTABLESTRING(a,pp) \
674 i2d_ASN1_bytes((ASN1_STRING *)a,pp,V_ASN1_PRINTABLESTRING,\
676 #define M_d2i_ASN1_PRINTABLESTRING(a,pp,l) \
677 (ASN1_PRINTABLESTRING *)d2i_ASN1_type_bytes\
678 ((ASN1_STRING **)a,pp,l,B_ASN1_PRINTABLESTRING)
680 #define M_ASN1_T61STRING_new() (ASN1_T61STRING *)\
681 ASN1_STRING_type_new(V_ASN1_T61STRING)
682 #define M_ASN1_T61STRING_free(a) ASN1_STRING_free((ASN1_STRING *)a)
683 #define M_i2d_ASN1_T61STRING(a,pp) \
684 i2d_ASN1_bytes((ASN1_STRING *)a,pp,V_ASN1_T61STRING,\
686 #define M_d2i_ASN1_T61STRING(a,pp,l) \
687 (ASN1_T61STRING *)d2i_ASN1_type_bytes\
688 ((ASN1_STRING **)a,pp,l,B_ASN1_T61STRING)
690 #define M_ASN1_IA5STRING_new() (ASN1_IA5STRING *)\
691 ASN1_STRING_type_new(V_ASN1_IA5STRING)
692 #define M_ASN1_IA5STRING_free(a) ASN1_STRING_free((ASN1_STRING *)a)
693 #define M_ASN1_IA5STRING_dup(a) \
694 (ASN1_IA5STRING *)ASN1_STRING_dup((const ASN1_STRING *)a)
695 #define M_i2d_ASN1_IA5STRING(a,pp) \
696 i2d_ASN1_bytes((ASN1_STRING *)a,pp,V_ASN1_IA5STRING,\
698 #define M_d2i_ASN1_IA5STRING(a,pp,l) \
699 (ASN1_IA5STRING *)d2i_ASN1_type_bytes((ASN1_STRING **)a,pp,l,\
702 #define M_ASN1_UTCTIME_new() (ASN1_UTCTIME *)\
703 ASN1_STRING_type_new(V_ASN1_UTCTIME)
704 #define M_ASN1_UTCTIME_free(a) ASN1_STRING_free((ASN1_STRING *)a)
705 #define M_ASN1_UTCTIME_dup(a) (ASN1_UTCTIME *)\
706 ASN1_STRING_dup((const ASN1_STRING *)a)
708 #define M_ASN1_GENERALIZEDTIME_new() (ASN1_GENERALIZEDTIME *)\
709 ASN1_STRING_type_new(V_ASN1_GENERALIZEDTIME)
710 #define M_ASN1_GENERALIZEDTIME_free(a) ASN1_STRING_free((ASN1_STRING *)a)
711 #define M_ASN1_GENERALIZEDTIME_dup(a) (ASN1_GENERALIZEDTIME *)ASN1_STRING_dup(\
712 (const ASN1_STRING *)a)
714 #define M_ASN1_TIME_new() (ASN1_TIME *)\
715 ASN1_STRING_type_new(V_ASN1_UTCTIME)
716 #define M_ASN1_TIME_free(a) ASN1_STRING_free((ASN1_STRING *)a)
717 #define M_ASN1_TIME_dup(a) (ASN1_TIME *)\
718 ASN1_STRING_dup((const ASN1_STRING *)a)
720 #define M_ASN1_GENERALSTRING_new() (ASN1_GENERALSTRING *)\
721 ASN1_STRING_type_new(V_ASN1_GENERALSTRING)
722 #define M_ASN1_GENERALSTRING_free(a) ASN1_STRING_free((ASN1_STRING *)a)
723 #define M_i2d_ASN1_GENERALSTRING(a,pp) \
724 i2d_ASN1_bytes((ASN1_STRING *)a,pp,V_ASN1_GENERALSTRING,\
726 #define M_d2i_ASN1_GENERALSTRING(a,pp,l) \
727 (ASN1_GENERALSTRING *)d2i_ASN1_type_bytes\
728 ((ASN1_STRING **)a,pp,l,B_ASN1_GENERALSTRING)
730 #define M_ASN1_UNIVERSALSTRING_new() (ASN1_UNIVERSALSTRING *)\
731 ASN1_STRING_type_new(V_ASN1_UNIVERSALSTRING)
732 #define M_ASN1_UNIVERSALSTRING_free(a) ASN1_STRING_free((ASN1_STRING *)a)
733 #define M_i2d_ASN1_UNIVERSALSTRING(a,pp) \
734 i2d_ASN1_bytes((ASN1_STRING *)a,pp,V_ASN1_UNIVERSALSTRING,\
736 #define M_d2i_ASN1_UNIVERSALSTRING(a,pp,l) \
737 (ASN1_UNIVERSALSTRING *)d2i_ASN1_type_bytes\
738 ((ASN1_STRING **)a,pp,l,B_ASN1_UNIVERSALSTRING)
740 #define M_ASN1_BMPSTRING_new() (ASN1_BMPSTRING *)\
741 ASN1_STRING_type_new(V_ASN1_BMPSTRING)
742 #define M_ASN1_BMPSTRING_free(a) ASN1_STRING_free((ASN1_STRING *)a)
743 #define M_i2d_ASN1_BMPSTRING(a,pp) \
744 i2d_ASN1_bytes((ASN1_STRING *)a,pp,V_ASN1_BMPSTRING,\
746 #define M_d2i_ASN1_BMPSTRING(a,pp,l) \
747 (ASN1_BMPSTRING *)d2i_ASN1_type_bytes\
748 ((ASN1_STRING **)a,pp,l,B_ASN1_BMPSTRING)
750 #define M_ASN1_VISIBLESTRING_new() (ASN1_VISIBLESTRING *)\
751 ASN1_STRING_type_new(V_ASN1_VISIBLESTRING)
752 #define M_ASN1_VISIBLESTRING_free(a) ASN1_STRING_free((ASN1_STRING *)a)
753 #define M_i2d_ASN1_VISIBLESTRING(a,pp) \
754 i2d_ASN1_bytes((ASN1_STRING *)a,pp,V_ASN1_VISIBLESTRING,\
756 #define M_d2i_ASN1_VISIBLESTRING(a,pp,l) \
757 (ASN1_VISIBLESTRING *)d2i_ASN1_type_bytes\
758 ((ASN1_STRING **)a,pp,l,B_ASN1_VISIBLESTRING)
760 #define M_ASN1_UTF8STRING_new() (ASN1_UTF8STRING *)\
761 ASN1_STRING_type_new(V_ASN1_UTF8STRING)
762 #define M_ASN1_UTF8STRING_free(a) ASN1_STRING_free((ASN1_STRING *)a)
763 #define M_i2d_ASN1_UTF8STRING(a,pp) \
764 i2d_ASN1_bytes((ASN1_STRING *)a,pp,V_ASN1_UTF8STRING,\
766 #define M_d2i_ASN1_UTF8STRING(a,pp,l) \
767 (ASN1_UTF8STRING *)d2i_ASN1_type_bytes\
768 ((ASN1_STRING **)a,pp,l,B_ASN1_UTF8STRING)
771 #define IS_SEQUENCE 0
818 unsigned char *
flags,
int flags_len);
820 #ifndef OPENSSL_NO_BIO
845 int offset_day,
long offset_sec);
855 time_t t,
int offset_day,
long offset_sec);
869 int UTF8_getc(const
unsigned char *str,
int len,
unsigned long *val);
870 int UTF8_putc(
unsigned char *str,
int len,
unsigned long value);
888 int offset_day,
long offset_sec);
897 const
unsigned char **pp,
898 long length, d2i_of_void *
d2i,
902 #ifndef OPENSSL_NO_BIO
915 const char *sn,
const char *ln);
931 int i2d_ASN1_bytes(ASN1_STRING *a,
unsigned char **pp,
int tag,
int xclass);
932 ASN1_STRING *
d2i_ASN1_bytes(ASN1_STRING **a,
const unsigned char **pp,
933 long length,
int Ptag,
int Pclass);
937 long length,
int type);
944 int ASN1_get_object(
const unsigned char **pp,
long *plength,
int *ptag,
945 int *pclass,
long omax);
949 int tag,
int xclass);
954 void *
ASN1_dup(i2d_of_void *i2d, d2i_of_void *d2i,
void *x);
956 #define ASN1_dup_of(type,i2d,d2i,x) \
957 ((type*)ASN1_dup(CHECKED_I2D_OF(type, i2d), \
958 CHECKED_D2I_OF(type, d2i), \
959 CHECKED_PTR_OF(type, x)))
961 #define ASN1_dup_of_const(type,i2d,d2i,x) \
962 ((type*)ASN1_dup(CHECKED_I2D_OF(const type, i2d), \
963 CHECKED_D2I_OF(type, d2i), \
964 CHECKED_PTR_OF(const type, x)))
970 #define M_ASN1_new_of(type) (type *)ASN1_item_new(ASN1_ITEM_rptr(type))
971 #define M_ASN1_free_of(x, type) \
972 ASN1_item_free(CHECKED_PTR_OF(type, x), ASN1_ITEM_rptr(type))
974 #ifndef OPENSSL_NO_FP_API
975 void *
ASN1_d2i_fp(
void *(*xnew)(
void), d2i_of_void *d2i, FILE *in,
void **x);
977 #define ASN1_d2i_fp_of(type,xnew,d2i,in,x) \
978 ((type*)ASN1_d2i_fp(CHECKED_NEW_OF(type, xnew), \
979 CHECKED_D2I_OF(type, d2i), \
981 CHECKED_PPTR_OF(type, x)))
984 int ASN1_i2d_fp(i2d_of_void *i2d,FILE *out,
void *x);
986 #define ASN1_i2d_fp_of(type,i2d,out,x) \
987 (ASN1_i2d_fp(CHECKED_I2D_OF(type, i2d), \
989 CHECKED_PTR_OF(type, x)))
991 #define ASN1_i2d_fp_of_const(type,i2d,out,x) \
992 (ASN1_i2d_fp(CHECKED_I2D_OF(const type, i2d), \
994 CHECKED_PTR_OF(const type, x)))
1002 #ifndef OPENSSL_NO_BIO
1003 void *
ASN1_d2i_bio(
void *(*xnew)(
void), d2i_of_void *d2i,
BIO *in,
void **x);
1005 #define ASN1_d2i_bio_of(type,xnew,d2i,in,x) \
1006 ((type*)ASN1_d2i_bio( CHECKED_NEW_OF(type, xnew), \
1007 CHECKED_D2I_OF(type, d2i), \
1009 CHECKED_PPTR_OF(type, x)))
1014 #define ASN1_i2d_bio_of(type,i2d,out,x) \
1015 (ASN1_i2d_bio(CHECKED_I2D_OF(type, i2d), \
1017 CHECKED_PTR_OF(type, x)))
1019 #define ASN1_i2d_bio_of_const(type,i2d,out,x) \
1020 (ASN1_i2d_bio(CHECKED_I2D_OF(const type, i2d), \
1022 CHECKED_PTR_OF(const type, x)))
1031 unsigned char *buf,
int off);
1044 unsigned char *data,
int len);
1046 unsigned char *data,
int max_len);
1048 unsigned char *data,
int len);
1050 unsigned char *data,
int max_len);
1052 STACK_OF(OPENSSL_BLOCK) *ASN1_seq_unpack(const
unsigned char *buf,
int len,
1053 d2i_of_void *d2i,
void (*
free_func)(OPENSSL_BLOCK));
1055 unsigned char **buf,
int *len );
1061 #define ASN1_pack_string_of(type,obj,i2d,oct) \
1062 (ASN1_pack_string(CHECKED_PTR_OF(type, obj), \
1063 CHECKED_I2D_OF(type, i2d), \
1072 int inform,
unsigned long mask);
1074 int inform,
unsigned long mask,
1075 long minsize,
long maxsize);
1078 const unsigned char *in,
int inlen,
int inform,
int nid);
1100 #define ASN1_PCTX_FLAGS_SHOW_ABSENT 0x001
1102 #define ASN1_PCTX_FLAGS_SHOW_SEQUENCE 0x002
1104 #define ASN1_PCTX_FLAGS_SHOW_SSOF 0x004
1106 #define ASN1_PCTX_FLAGS_SHOW_TYPE 0x008
1108 #define ASN1_PCTX_FLAGS_NO_ANY_TYPE 0x010
1110 #define ASN1_PCTX_FLAGS_NO_MSTRING_TYPE 0x020
1112 #define ASN1_PCTX_FLAGS_NO_FIELD_NAME 0x040
1114 #define ASN1_PCTX_FLAGS_SHOW_FIELD_STRUCT_NAME 0x080
1116 #define ASN1_PCTX_FLAGS_NO_STRUCT_NAME 0x100
1143 int ctype_nid,
int econt_nid,
1159 #define ASN1_F_A2D_ASN1_OBJECT 100
1160 #define ASN1_F_A2I_ASN1_ENUMERATED 101
1161 #define ASN1_F_A2I_ASN1_INTEGER 102
1162 #define ASN1_F_A2I_ASN1_STRING 103
1163 #define ASN1_F_APPEND_EXP 176
1164 #define ASN1_F_ASN1_BIT_STRING_SET_BIT 183
1165 #define ASN1_F_ASN1_CB 177
1166 #define ASN1_F_ASN1_CHECK_TLEN 104
1167 #define ASN1_F_ASN1_COLLATE_PRIMITIVE 105
1168 #define ASN1_F_ASN1_COLLECT 106
1169 #define ASN1_F_ASN1_D2I_EX_PRIMITIVE 108
1170 #define ASN1_F_ASN1_D2I_FP 109
1171 #define ASN1_F_ASN1_D2I_READ_BIO 107
1172 #define ASN1_F_ASN1_DIGEST 184
1173 #define ASN1_F_ASN1_DO_ADB 110
1174 #define ASN1_F_ASN1_DUP 111
1175 #define ASN1_F_ASN1_ENUMERATED_SET 112
1176 #define ASN1_F_ASN1_ENUMERATED_TO_BN 113
1177 #define ASN1_F_ASN1_EX_C2I 204
1178 #define ASN1_F_ASN1_FIND_END 190
1179 #define ASN1_F_ASN1_GENERALIZEDTIME_ADJ 216
1180 #define ASN1_F_ASN1_GENERALIZEDTIME_SET 185
1181 #define ASN1_F_ASN1_GENERATE_V3 178
1182 #define ASN1_F_ASN1_GET_OBJECT 114
1183 #define ASN1_F_ASN1_HEADER_NEW 115
1184 #define ASN1_F_ASN1_I2D_BIO 116
1185 #define ASN1_F_ASN1_I2D_FP 117
1186 #define ASN1_F_ASN1_INTEGER_SET 118
1187 #define ASN1_F_ASN1_INTEGER_TO_BN 119
1188 #define ASN1_F_ASN1_ITEM_D2I_FP 206
1189 #define ASN1_F_ASN1_ITEM_DUP 191
1190 #define ASN1_F_ASN1_ITEM_EX_COMBINE_NEW 121
1191 #define ASN1_F_ASN1_ITEM_EX_D2I 120
1192 #define ASN1_F_ASN1_ITEM_I2D_BIO 192
1193 #define ASN1_F_ASN1_ITEM_I2D_FP 193
1194 #define ASN1_F_ASN1_ITEM_PACK 198
1195 #define ASN1_F_ASN1_ITEM_SIGN 195
1196 #define ASN1_F_ASN1_ITEM_SIGN_CTX 220
1197 #define ASN1_F_ASN1_ITEM_UNPACK 199
1198 #define ASN1_F_ASN1_ITEM_VERIFY 197
1199 #define ASN1_F_ASN1_MBSTRING_NCOPY 122
1200 #define ASN1_F_ASN1_OBJECT_NEW 123
1201 #define ASN1_F_ASN1_OUTPUT_DATA 214
1202 #define ASN1_F_ASN1_PACK_STRING 124
1203 #define ASN1_F_ASN1_PCTX_NEW 205
1204 #define ASN1_F_ASN1_PKCS5_PBE_SET 125
1205 #define ASN1_F_ASN1_SEQ_PACK 126
1206 #define ASN1_F_ASN1_SEQ_UNPACK 127
1207 #define ASN1_F_ASN1_SIGN 128
1208 #define ASN1_F_ASN1_STR2TYPE 179
1209 #define ASN1_F_ASN1_STRING_SET 186
1210 #define ASN1_F_ASN1_STRING_TABLE_ADD 129
1211 #define ASN1_F_ASN1_STRING_TYPE_NEW 130
1212 #define ASN1_F_ASN1_TEMPLATE_EX_D2I 132
1213 #define ASN1_F_ASN1_TEMPLATE_NEW 133
1214 #define ASN1_F_ASN1_TEMPLATE_NOEXP_D2I 131
1215 #define ASN1_F_ASN1_TIME_ADJ 217
1216 #define ASN1_F_ASN1_TIME_SET 175
1217 #define ASN1_F_ASN1_TYPE_GET_INT_OCTETSTRING 134
1218 #define ASN1_F_ASN1_TYPE_GET_OCTETSTRING 135
1219 #define ASN1_F_ASN1_UNPACK_STRING 136
1220 #define ASN1_F_ASN1_UTCTIME_ADJ 218
1221 #define ASN1_F_ASN1_UTCTIME_SET 187
1222 #define ASN1_F_ASN1_VERIFY 137
1223 #define ASN1_F_B64_READ_ASN1 209
1224 #define ASN1_F_B64_WRITE_ASN1 210
1225 #define ASN1_F_BIO_NEW_NDEF 208
1226 #define ASN1_F_BITSTR_CB 180
1227 #define ASN1_F_BN_TO_ASN1_ENUMERATED 138
1228 #define ASN1_F_BN_TO_ASN1_INTEGER 139
1229 #define ASN1_F_C2I_ASN1_BIT_STRING 189
1230 #define ASN1_F_C2I_ASN1_INTEGER 194
1231 #define ASN1_F_C2I_ASN1_OBJECT 196
1232 #define ASN1_F_COLLECT_DATA 140
1233 #define ASN1_F_D2I_ASN1_BIT_STRING 141
1234 #define ASN1_F_D2I_ASN1_BOOLEAN 142
1235 #define ASN1_F_D2I_ASN1_BYTES 143
1236 #define ASN1_F_D2I_ASN1_GENERALIZEDTIME 144
1237 #define ASN1_F_D2I_ASN1_HEADER 145
1238 #define ASN1_F_D2I_ASN1_INTEGER 146
1239 #define ASN1_F_D2I_ASN1_OBJECT 147
1240 #define ASN1_F_D2I_ASN1_SET 148
1241 #define ASN1_F_D2I_ASN1_TYPE_BYTES 149
1242 #define ASN1_F_D2I_ASN1_UINTEGER 150
1243 #define ASN1_F_D2I_ASN1_UTCTIME 151
1244 #define ASN1_F_D2I_AUTOPRIVATEKEY 207
1245 #define ASN1_F_D2I_NETSCAPE_RSA 152
1246 #define ASN1_F_D2I_NETSCAPE_RSA_2 153
1247 #define ASN1_F_D2I_PRIVATEKEY 154
1248 #define ASN1_F_D2I_PUBLICKEY 155
1249 #define ASN1_F_D2I_RSA_NET 200
1250 #define ASN1_F_D2I_RSA_NET_2 201
1251 #define ASN1_F_D2I_X509 156
1252 #define ASN1_F_D2I_X509_CINF 157
1253 #define ASN1_F_D2I_X509_PKEY 159
1254 #define ASN1_F_I2D_ASN1_BIO_STREAM 211
1255 #define ASN1_F_I2D_ASN1_SET 188
1256 #define ASN1_F_I2D_ASN1_TIME 160
1257 #define ASN1_F_I2D_DSA_PUBKEY 161
1258 #define ASN1_F_I2D_EC_PUBKEY 181
1259 #define ASN1_F_I2D_PRIVATEKEY 163
1260 #define ASN1_F_I2D_PUBLICKEY 164
1261 #define ASN1_F_I2D_RSA_NET 162
1262 #define ASN1_F_I2D_RSA_PUBKEY 165
1263 #define ASN1_F_LONG_C2I 166
1264 #define ASN1_F_OID_MODULE_INIT 174
1265 #define ASN1_F_PARSE_TAGGING 182
1266 #define ASN1_F_PKCS5_PBE2_SET_IV 167
1267 #define ASN1_F_PKCS5_PBE_SET 202
1268 #define ASN1_F_PKCS5_PBE_SET0_ALGOR 215
1269 #define ASN1_F_PKCS5_PBKDF2_SET 219
1270 #define ASN1_F_SMIME_READ_ASN1 212
1271 #define ASN1_F_SMIME_TEXT 213
1272 #define ASN1_F_X509_CINF_NEW 168
1273 #define ASN1_F_X509_CRL_ADD0_REVOKED 169
1274 #define ASN1_F_X509_INFO_NEW 170
1275 #define ASN1_F_X509_NAME_ENCODE 203
1276 #define ASN1_F_X509_NAME_EX_D2I 158
1277 #define ASN1_F_X509_NAME_EX_NEW 171
1278 #define ASN1_F_X509_NEW 172
1279 #define ASN1_F_X509_PKEY_NEW 173
1282 #define ASN1_R_ADDING_OBJECT 171
1283 #define ASN1_R_ASN1_PARSE_ERROR 203
1284 #define ASN1_R_ASN1_SIG_PARSE_ERROR 204
1285 #define ASN1_R_AUX_ERROR 100
1286 #define ASN1_R_BAD_CLASS 101
1287 #define ASN1_R_BAD_OBJECT_HEADER 102
1288 #define ASN1_R_BAD_PASSWORD_READ 103
1289 #define ASN1_R_BAD_TAG 104
1290 #define ASN1_R_BMPSTRING_IS_WRONG_LENGTH 214
1291 #define ASN1_R_BN_LIB 105
1292 #define ASN1_R_BOOLEAN_IS_WRONG_LENGTH 106
1293 #define ASN1_R_BUFFER_TOO_SMALL 107
1294 #define ASN1_R_CIPHER_HAS_NO_OBJECT_IDENTIFIER 108
1295 #define ASN1_R_CONTEXT_NOT_INITIALISED 217
1296 #define ASN1_R_DATA_IS_WRONG 109
1297 #define ASN1_R_DECODE_ERROR 110
1298 #define ASN1_R_DECODING_ERROR 111
1299 #define ASN1_R_DEPTH_EXCEEDED 174
1300 #define ASN1_R_DIGEST_AND_KEY_TYPE_NOT_SUPPORTED 198
1301 #define ASN1_R_ENCODE_ERROR 112
1302 #define ASN1_R_ERROR_GETTING_TIME 173
1303 #define ASN1_R_ERROR_LOADING_SECTION 172
1304 #define ASN1_R_ERROR_PARSING_SET_ELEMENT 113
1305 #define ASN1_R_ERROR_SETTING_CIPHER_PARAMS 114
1306 #define ASN1_R_EXPECTING_AN_INTEGER 115
1307 #define ASN1_R_EXPECTING_AN_OBJECT 116
1308 #define ASN1_R_EXPECTING_A_BOOLEAN 117
1309 #define ASN1_R_EXPECTING_A_TIME 118
1310 #define ASN1_R_EXPLICIT_LENGTH_MISMATCH 119
1311 #define ASN1_R_EXPLICIT_TAG_NOT_CONSTRUCTED 120
1312 #define ASN1_R_FIELD_MISSING 121
1313 #define ASN1_R_FIRST_NUM_TOO_LARGE 122
1314 #define ASN1_R_HEADER_TOO_LONG 123
1315 #define ASN1_R_ILLEGAL_BITSTRING_FORMAT 175
1316 #define ASN1_R_ILLEGAL_BOOLEAN 176
1317 #define ASN1_R_ILLEGAL_CHARACTERS 124
1318 #define ASN1_R_ILLEGAL_FORMAT 177
1319 #define ASN1_R_ILLEGAL_HEX 178
1320 #define ASN1_R_ILLEGAL_IMPLICIT_TAG 179
1321 #define ASN1_R_ILLEGAL_INTEGER 180
1322 #define ASN1_R_ILLEGAL_NESTED_TAGGING 181
1323 #define ASN1_R_ILLEGAL_NULL 125
1324 #define ASN1_R_ILLEGAL_NULL_VALUE 182
1325 #define ASN1_R_ILLEGAL_OBJECT 183
1326 #define ASN1_R_ILLEGAL_OPTIONAL_ANY 126
1327 #define ASN1_R_ILLEGAL_OPTIONS_ON_ITEM_TEMPLATE 170
1328 #define ASN1_R_ILLEGAL_TAGGED_ANY 127
1329 #define ASN1_R_ILLEGAL_TIME_VALUE 184
1330 #define ASN1_R_INTEGER_NOT_ASCII_FORMAT 185
1331 #define ASN1_R_INTEGER_TOO_LARGE_FOR_LONG 128
1332 #define ASN1_R_INVALID_BMPSTRING_LENGTH 129
1333 #define ASN1_R_INVALID_DIGIT 130
1334 #define ASN1_R_INVALID_MIME_TYPE 205
1335 #define ASN1_R_INVALID_MODIFIER 186
1336 #define ASN1_R_INVALID_NUMBER 187
1337 #define ASN1_R_INVALID_OBJECT_ENCODING 216
1338 #define ASN1_R_INVALID_SEPARATOR 131
1339 #define ASN1_R_INVALID_TIME_FORMAT 132
1340 #define ASN1_R_INVALID_UNIVERSALSTRING_LENGTH 133
1341 #define ASN1_R_INVALID_UTF8STRING 134
1342 #define ASN1_R_IV_TOO_LARGE 135
1343 #define ASN1_R_LENGTH_ERROR 136
1344 #define ASN1_R_LIST_ERROR 188
1345 #define ASN1_R_MIME_NO_CONTENT_TYPE 206
1346 #define ASN1_R_MIME_PARSE_ERROR 207
1347 #define ASN1_R_MIME_SIG_PARSE_ERROR 208
1348 #define ASN1_R_MISSING_EOC 137
1349 #define ASN1_R_MISSING_SECOND_NUMBER 138
1350 #define ASN1_R_MISSING_VALUE 189
1351 #define ASN1_R_MSTRING_NOT_UNIVERSAL 139
1352 #define ASN1_R_MSTRING_WRONG_TAG 140
1353 #define ASN1_R_NESTED_ASN1_STRING 197
1354 #define ASN1_R_NON_HEX_CHARACTERS 141
1355 #define ASN1_R_NOT_ASCII_FORMAT 190
1356 #define ASN1_R_NOT_ENOUGH_DATA 142
1357 #define ASN1_R_NO_CONTENT_TYPE 209
1358 #define ASN1_R_NO_DEFAULT_DIGEST 201
1359 #define ASN1_R_NO_MATCHING_CHOICE_TYPE 143
1360 #define ASN1_R_NO_MULTIPART_BODY_FAILURE 210
1361 #define ASN1_R_NO_MULTIPART_BOUNDARY 211
1362 #define ASN1_R_NO_SIG_CONTENT_TYPE 212
1363 #define ASN1_R_NULL_IS_WRONG_LENGTH 144
1364 #define ASN1_R_OBJECT_NOT_ASCII_FORMAT 191
1365 #define ASN1_R_ODD_NUMBER_OF_CHARS 145
1366 #define ASN1_R_PRIVATE_KEY_HEADER_MISSING 146
1367 #define ASN1_R_SECOND_NUMBER_TOO_LARGE 147
1368 #define ASN1_R_SEQUENCE_LENGTH_MISMATCH 148
1369 #define ASN1_R_SEQUENCE_NOT_CONSTRUCTED 149
1370 #define ASN1_R_SEQUENCE_OR_SET_NEEDS_CONFIG 192
1371 #define ASN1_R_SHORT_LINE 150
1372 #define ASN1_R_SIG_INVALID_MIME_TYPE 213
1373 #define ASN1_R_STREAMING_NOT_SUPPORTED 202
1374 #define ASN1_R_STRING_TOO_LONG 151
1375 #define ASN1_R_STRING_TOO_SHORT 152
1376 #define ASN1_R_TAG_VALUE_TOO_HIGH 153
1377 #define ASN1_R_THE_ASN1_OBJECT_IDENTIFIER_IS_NOT_KNOWN_FOR_THIS_MD 154
1378 #define ASN1_R_TIME_NOT_ASCII_FORMAT 193
1379 #define ASN1_R_TOO_LONG 155
1380 #define ASN1_R_TYPE_NOT_CONSTRUCTED 156
1381 #define ASN1_R_UNABLE_TO_DECODE_RSA_KEY 157
1382 #define ASN1_R_UNABLE_TO_DECODE_RSA_PRIVATE_KEY 158
1383 #define ASN1_R_UNEXPECTED_EOC 159
1384 #define ASN1_R_UNIVERSALSTRING_IS_WRONG_LENGTH 215
1385 #define ASN1_R_UNKNOWN_FORMAT 160
1386 #define ASN1_R_UNKNOWN_MESSAGE_DIGEST_ALGORITHM 161
1387 #define ASN1_R_UNKNOWN_OBJECT_TYPE 162
1388 #define ASN1_R_UNKNOWN_PUBLIC_KEY_TYPE 163
1389 #define ASN1_R_UNKNOWN_SIGNATURE_ALGORITHM 199
1390 #define ASN1_R_UNKNOWN_TAG 194
1391 #define ASN1_R_UNKOWN_FORMAT 195
1392 #define ASN1_R_UNSUPPORTED_ANY_DEFINED_BY_TYPE 164
1393 #define ASN1_R_UNSUPPORTED_CIPHER 165
1394 #define ASN1_R_UNSUPPORTED_ENCRYPTION_ALGORITHM 166
1395 #define ASN1_R_UNSUPPORTED_PUBLIC_KEY_TYPE 167
1396 #define ASN1_R_UNSUPPORTED_TYPE 196
1397 #define ASN1_R_WRONG_PUBLIC_KEY_TYPE 200
1398 #define ASN1_R_WRONG_TAG 168
1399 #define ASN1_R_WRONG_TYPE 169