]>
Commit | Line | Data |
---|---|---|
d02b48c6 | 1 | /* crypto/asn1/asn1.h */ |
58964a49 | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) |
d02b48c6 RE |
3 | * All rights reserved. |
4 | * | |
5 | * This package is an SSL implementation written | |
6 | * by Eric Young (eay@cryptsoft.com). | |
7 | * The implementation was written so as to conform with Netscapes SSL. | |
8 | * | |
9 | * This library is free for commercial and non-commercial use as long as | |
10 | * the following conditions are aheared to. The following conditions | |
11 | * apply to all code found in this distribution, be it the RC4, RSA, | |
12 | * lhash, DES, etc., code; not just the SSL code. The SSL documentation | |
13 | * included with this distribution is covered by the same copyright terms | |
14 | * except that the holder is Tim Hudson (tjh@cryptsoft.com). | |
15 | * | |
16 | * Copyright remains Eric Young's, and as such any Copyright notices in | |
17 | * the code are not to be removed. | |
18 | * If this package is used in a product, Eric Young should be given attribution | |
19 | * as the author of the parts of the library used. | |
20 | * This can be in the form of a textual message at program startup or | |
21 | * in documentation (online or textual) provided with the package. | |
22 | * | |
23 | * Redistribution and use in source and binary forms, with or without | |
24 | * modification, are permitted provided that the following conditions | |
25 | * are met: | |
26 | * 1. Redistributions of source code must retain the copyright | |
27 | * notice, this list of conditions and the following disclaimer. | |
28 | * 2. Redistributions in binary form must reproduce the above copyright | |
29 | * notice, this list of conditions and the following disclaimer in the | |
30 | * documentation and/or other materials provided with the distribution. | |
31 | * 3. All advertising materials mentioning features or use of this software | |
32 | * must display the following acknowledgement: | |
33 | * "This product includes cryptographic software written by | |
34 | * Eric Young (eay@cryptsoft.com)" | |
35 | * The word 'cryptographic' can be left out if the rouines from the library | |
36 | * being used are not cryptographic related :-). | |
37 | * 4. If you include any Windows specific code (or a derivative thereof) from | |
38 | * the apps directory (application code) you must include an acknowledgement: | |
39 | * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" | |
40 | * | |
41 | * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND | |
42 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | |
43 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | |
44 | * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE | |
45 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | |
46 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS | |
47 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | |
48 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | |
49 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | |
50 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | |
51 | * SUCH DAMAGE. | |
52 | * | |
53 | * The licence and distribution terms for any publically available version or | |
54 | * derivative of this code cannot be changed. i.e. this code cannot simply be | |
55 | * copied and put under another distribution licence | |
56 | * [including the GNU Public Licence.] | |
57 | */ | |
58 | ||
59 | #ifndef HEADER_ASN1_H | |
60 | #define HEADER_ASN1_H | |
61 | ||
62 | #ifdef __cplusplus | |
63 | extern "C" { | |
64 | #endif | |
65 | ||
66 | #include <time.h> | |
67 | #include "bn.h" | |
68 | #include "stack.h" | |
69 | ||
70 | #define V_ASN1_UNIVERSAL 0x00 | |
71 | #define V_ASN1_APPLICATION 0x40 | |
72 | #define V_ASN1_CONTEXT_SPECIFIC 0x80 | |
73 | #define V_ASN1_PRIVATE 0xc0 | |
74 | ||
75 | #define V_ASN1_CONSTRUCTED 0x20 | |
76 | #define V_ASN1_PRIMATIVE_TAG 0x1f | |
77 | ||
78 | #define V_ASN1_APP_CHOOSE -2 /* let the recipent choose */ | |
79 | ||
80 | #define V_ASN1_UNDEF -1 | |
81 | #define V_ASN1_EOC 0 | |
82 | #define V_ASN1_BOOLEAN 1 /**/ | |
83 | #define V_ASN1_INTEGER 2 | |
84 | #define V_ASN1_NEG_INTEGER (2+0x100) | |
85 | #define V_ASN1_BIT_STRING 3 | |
86 | #define V_ASN1_OCTET_STRING 4 | |
87 | #define V_ASN1_NULL 5 | |
88 | #define V_ASN1_OBJECT 6 | |
58964a49 RE |
89 | #define V_ASN1_OBJECT_DESCRIPTOR 7 |
90 | #define V_ASN1_EXTERNAL 8 | |
d02b48c6 RE |
91 | #define V_ASN1_REAL 9 |
92 | #define V_ASN1_ENUMERATED 10 /* microsoft weirdness */ | |
93 | #define V_ASN1_SEQUENCE 16 | |
94 | #define V_ASN1_SET 17 | |
95 | #define V_ASN1_NUMERICSTRING 18 /**/ | |
96 | #define V_ASN1_PRINTABLESTRING 19 | |
97 | #define V_ASN1_T61STRING 20 | |
98 | #define V_ASN1_TELETEXSTRING 20 /* alias */ | |
99 | #define V_ASN1_VIDEOTEXSTRING 21 /**/ | |
100 | #define V_ASN1_IA5STRING 22 | |
101 | #define V_ASN1_UTCTIME 23 | |
102 | #define V_ASN1_GENERALIZEDTIME 24 /**/ | |
103 | #define V_ASN1_GRAPHICSTRING 25 /**/ | |
104 | #define V_ASN1_ISO64STRING 26 /**/ | |
105 | #define V_ASN1_VISIBLESTRING 26 /* alias */ | |
106 | #define V_ASN1_GENERALSTRING 27 /**/ | |
107 | #define V_ASN1_UNIVERSALSTRING 28 /**/ | |
58964a49 | 108 | #define V_ASN1_BMPSTRING 30 |
d02b48c6 RE |
109 | |
110 | /* For use with d2i_ASN1_type_bytes() */ | |
111 | #define B_ASN1_NUMERICSTRING 0x0001 | |
112 | #define B_ASN1_PRINTABLESTRING 0x0002 | |
113 | #define B_ASN1_T61STRING 0x0004 | |
114 | #define B_ASN1_VIDEOTEXSTRING 0x0008 | |
115 | #define B_ASN1_IA5STRING 0x0010 | |
116 | #define B_ASN1_GRAPHICSTRING 0x0020 | |
117 | #define B_ASN1_ISO64STRING 0x0040 | |
118 | #define B_ASN1_GENERALSTRING 0x0080 | |
119 | #define B_ASN1_UNIVERSALSTRING 0x0100 | |
120 | #define B_ASN1_OCTET_STRING 0x0200 | |
58964a49 RE |
121 | #define B_ASN1_BIT_STRING 0x0400 |
122 | #define B_ASN1_BMPSTRING 0x0800 | |
d02b48c6 RE |
123 | #define B_ASN1_UNKNOWN 0x1000 |
124 | ||
d02b48c6 RE |
125 | typedef struct asn1_ctx_st |
126 | { | |
127 | unsigned char *p;/* work char pointer */ | |
128 | int eos; /* end of sequence read for indefinite encoding */ | |
129 | int error; /* error code to use when returning an error */ | |
130 | int inf; /* constructed if 0x20, indefinite is 0x21 */ | |
131 | int tag; /* tag from last 'get object' */ | |
132 | int xclass; /* class from last 'get object' */ | |
133 | long slen; /* length of last 'get object' */ | |
134 | unsigned char *max; /* largest value of p alowed */ | |
135 | unsigned char *q;/* temporary variable */ | |
136 | unsigned char **pp;/* variable */ | |
dfeab068 | 137 | int line; /* used in error processing */ |
d02b48c6 RE |
138 | } ASN1_CTX; |
139 | ||
140 | /* These are used internally in the ASN1_OBJECT to keep track of | |
141 | * whether the names and data need to be free()ed */ | |
142 | #define ASN1_OBJECT_FLAG_DYNAMIC 0x01 /* internal use */ | |
143 | #define ASN1_OBJECT_FLAG_CRITICAL 0x02 /* critical x509v3 object id */ | |
144 | #define ASN1_OBJECT_FLAG_DYNAMIC_STRINGS 0x04 /* internal use */ | |
145 | #define ASN1_OBJECT_FLAG_DYNAMIC_DATA 0x08 /* internal use */ | |
146 | typedef struct asn1_object_st | |
147 | { | |
148 | char *sn,*ln; | |
149 | int nid; | |
150 | int length; | |
151 | unsigned char *data; | |
152 | int flags; /* Should we free this one */ | |
153 | } ASN1_OBJECT; | |
154 | ||
dfeab068 | 155 | #define ASN1_STRING_FLAG_BITS_LEFT 0x08 /* Set if 0x07 has bits left value */ |
d02b48c6 RE |
156 | /* This is the base type that holds just about everything :-) */ |
157 | typedef struct asn1_string_st | |
158 | { | |
159 | int length; | |
160 | int type; | |
161 | unsigned char *data; | |
dfeab068 RE |
162 | /* The value of the following field depends on the type being |
163 | * held. It is mostly being used for BIT_STRING so if the | |
164 | * input data has a non-zero 'unused bits' value, it will be | |
165 | * handled correctly */ | |
166 | long flags; | |
d02b48c6 RE |
167 | } ASN1_STRING; |
168 | ||
dfeab068 RE |
169 | #ifndef DEBUG |
170 | #define ASN1_INTEGER ASN1_STRING | |
171 | #define ASN1_BIT_STRING ASN1_STRING | |
172 | #define ASN1_OCTET_STRING ASN1_STRING | |
173 | #define ASN1_PRINTABLESTRING ASN1_STRING | |
174 | #define ASN1_T61STRING ASN1_STRING | |
175 | #define ASN1_IA5STRING ASN1_STRING | |
176 | #define ASN1_UTCTIME ASN1_STRING | |
177 | #define ASN1_GENERALIZEDTIME ASN1_STRING | |
178 | #define ASN1_GENERALSTRING ASN1_STRING | |
179 | #define ASN1_UNIVERSALSTRING ASN1_STRING | |
180 | #define ASN1_BMPSTRING ASN1_STRING | |
181 | #else | |
182 | typedef struct asn1_string_st ASN1_INTEGER; | |
183 | typedef struct asn1_string_st ASN1_BIT_STRING; | |
184 | typedef struct asn1_string_st ASN1_OCTET_STRING; | |
185 | typedef struct asn1_string_st ASN1_PRINTABLESTRING; | |
186 | typedef struct asn1_string_st ASN1_T61STRING; | |
187 | typedef struct asn1_string_st ASN1_IA5STRING; | |
188 | typedef struct asn1_string_st ASN1_GENERALSTRING; | |
189 | typedef struct asn1_string_st ASN1_UNIVERSALSTRING; | |
190 | typedef struct asn1_string_st ASN1_BMPSTRING; | |
191 | typedef struct asn1_string_st ASN1_UTCTIME; | |
192 | typedef struct asn1_string_st ASN1_GENERALIZEDTIME; | |
193 | #endif | |
194 | ||
d02b48c6 RE |
195 | typedef struct asn1_type_st |
196 | { | |
197 | int type; | |
198 | union { | |
199 | char *ptr; | |
200 | ASN1_STRING * asn1_string; | |
201 | ASN1_OBJECT * object; | |
202 | ASN1_INTEGER * integer; | |
203 | ASN1_BIT_STRING * bit_string; | |
204 | ASN1_OCTET_STRING * octet_string; | |
205 | ASN1_PRINTABLESTRING * printablestring; | |
206 | ASN1_T61STRING * t61string; | |
207 | ASN1_IA5STRING * ia5string; | |
208 | ASN1_GENERALSTRING * generalstring; | |
58964a49 | 209 | ASN1_BMPSTRING * bmpstring; |
d02b48c6 RE |
210 | ASN1_UNIVERSALSTRING * universalstring; |
211 | ASN1_UTCTIME * utctime; | |
58964a49 | 212 | ASN1_GENERALIZEDTIME * generalizedtime; |
d02b48c6 RE |
213 | /* set and sequence are left complete and still |
214 | * contain the set or sequence bytes */ | |
215 | ASN1_STRING * set; | |
216 | ASN1_STRING * sequence; | |
217 | } value; | |
218 | } ASN1_TYPE; | |
219 | ||
220 | typedef struct asn1_method_st | |
221 | { | |
222 | int (*i2d)(); | |
223 | char *(*d2i)(); | |
224 | char *(*create)(); | |
225 | void (*destroy)(); | |
226 | } ASN1_METHOD; | |
227 | ||
228 | /* This is used when parsing some Netscape objects */ | |
229 | typedef struct asn1_header_st | |
230 | { | |
231 | ASN1_OCTET_STRING *header; | |
232 | char *data; | |
233 | ASN1_METHOD *meth; | |
234 | } ASN1_HEADER; | |
235 | ||
58964a49 | 236 | #define ASN1_STRING_length(x) ((x)->length) |
d02b48c6 RE |
237 | #define ASN1_STRING_type(x) ((x)->type) |
238 | #define ASN1_STRING_data(x) ((x)->data) | |
239 | ||
240 | /* Macros for string operations */ | |
241 | #define ASN1_BIT_STRING_new() (ASN1_BIT_STRING *)\ | |
242 | ASN1_STRING_type_new(V_ASN1_BIT_STRING) | |
243 | #define ASN1_BIT_STRING_free(a) ASN1_STRING_free((ASN1_STRING *)a) | |
244 | #define ASN1_BIT_STRING_dup(a) (ASN1_BIT_STRING *)\ | |
245 | ASN1_STRING_dup((ASN1_STRING *)a) | |
246 | #define ASN1_BIT_STRING_cmp(a,b) ASN1_STRING_cmp(\ | |
247 | (ASN1_STRING *)a,(ASN1_STRING *)b) | |
248 | #define ASN1_BIT_STRING_set(a,b,c) ASN1_STRING_set((ASN1_STRING *)a,b,c) | |
249 | /* i2d_ASN1_BIT_STRING() is a function */ | |
250 | /* d2i_ASN1_BIT_STRING() is a function */ | |
251 | ||
252 | #define ASN1_INTEGER_new() (ASN1_INTEGER *)\ | |
253 | ASN1_STRING_type_new(V_ASN1_INTEGER) | |
254 | #define ASN1_INTEGER_free(a) ASN1_STRING_free((ASN1_STRING *)a) | |
255 | #define ASN1_INTEGER_dup(a) (ASN1_INTEGER *)ASN1_STRING_dup((ASN1_STRING *)a) | |
256 | #define ASN1_INTEGER_cmp(a,b) ASN1_STRING_cmp(\ | |
257 | (ASN1_STRING *)a,(ASN1_STRING *)b) | |
258 | /* ASN1_INTEGER_set() is a function, also see BN_to_ASN1_INTEGER() */ | |
259 | /* ASN1_INTEGER_get() is a function, also see ASN1_INTEGER_to_BN() */ | |
260 | /* i2d_ASN1_INTEGER() is a function */ | |
261 | /* d2i_ASN1_INTEGER() is a function */ | |
262 | ||
263 | #define ASN1_OCTET_STRING_new() (ASN1_OCTET_STRING *)\ | |
264 | ASN1_STRING_type_new(V_ASN1_OCTET_STRING) | |
265 | #define ASN1_OCTET_STRING_free(a) ASN1_STRING_free((ASN1_STRING *)a) | |
266 | #define ASN1_OCTET_STRING_dup(a) (ASN1_OCTET_STRING *)\ | |
267 | ASN1_STRING_dup((ASN1_STRING *)a) | |
268 | #define ASN1_OCTET_STRING_cmp(a,b) ASN1_STRING_cmp(\ | |
269 | (ASN1_STRING *)a,(ASN1_STRING *)b) | |
270 | #define ASN1_OCTET_STRING_set(a,b,c) ASN1_STRING_set((ASN1_STRING *)a,b,c) | |
271 | #define ASN1_OCTET_STRING_print(a,b) ASN1_STRING_print(a,(ASN1_STRING *)b) | |
272 | #define M_i2d_ASN1_OCTET_STRING(a,pp) \ | |
273 | i2d_ASN1_bytes((ASN1_STRING *)a,pp,V_ASN1_OCTET_STRING,\ | |
274 | V_ASN1_OCTET_STRING) | |
275 | /* d2i_ASN1_OCTET_STRING() is a function */ | |
276 | ||
277 | #define ASN1_PRINTABLE_new() ASN1_STRING_type_new(V_ASN1_T61STRING) | |
278 | #define ASN1_PRINTABLE_free(a) ASN1_STRING_free((ASN1_STRING *)a) | |
279 | #define M_i2d_ASN1_PRINTABLE(a,pp) i2d_ASN1_bytes((ASN1_STRING *)a,\ | |
280 | pp,a->type,V_ASN1_UNIVERSAL) | |
281 | #define M_d2i_ASN1_PRINTABLE(a,pp,l) \ | |
282 | d2i_ASN1_type_bytes((ASN1_STRING **)a,pp,l, \ | |
283 | B_ASN1_PRINTABLESTRING| \ | |
284 | B_ASN1_T61STRING| \ | |
285 | B_ASN1_IA5STRING| \ | |
58964a49 | 286 | B_ASN1_BIT_STRING| \ |
d02b48c6 | 287 | B_ASN1_UNIVERSALSTRING|\ |
58964a49 | 288 | B_ASN1_BMPSTRING|\ |
d02b48c6 RE |
289 | B_ASN1_UNKNOWN) |
290 | ||
291 | #define ASN1_PRINTABLESTRING_new() (ASN1_PRINTABLESTRING_STRING *)\ | |
292 | ASN1_STRING_type_new(V_ASN1_PRINTABLESTRING) | |
293 | #define ASN1_PRINTABLESTRING_free(a) ASN1_STRING_free((ASN1_STRING *)a) | |
294 | #define M_i2d_ASN1_PRINTABLESTRING(a,pp) \ | |
295 | i2d_ASN1_bytes((ASN1_STRING *)a,pp,V_ASN1_PRINTABLESTRING,\ | |
296 | V_ASN1_UNIVERSAL) | |
297 | #define M_d2i_ASN1_PRINTABLESTRING(a,pp,l) \ | |
298 | (ASN1_PRINTABLESTRING *)d2i_ASN1_type_bytes\ | |
299 | ((ASN1_STRING **)a,pp,l,B_ASN1_PRINTABLESTRING) | |
300 | ||
301 | #define ASN1_T61STRING_new() (ASN1_T61STRING_STRING *)\ | |
302 | ASN1_STRING_type_new(V_ASN1_T61STRING) | |
303 | #define ASN1_T61STRING_free(a) ASN1_STRING_free((ASN1_STRING *)a) | |
304 | #define M_i2d_ASN1_T61STRING(a,pp) \ | |
305 | i2d_ASN1_bytes((ASN1_STRING *)a,pp,V_ASN1_T61STRING,\ | |
306 | V_ASN1_UNIVERSAL) | |
307 | #define M_d2i_ASN1_T61STRING(a,pp,l) \ | |
308 | (ASN1_T61STRING *)d2i_ASN1_type_bytes\ | |
309 | ((ASN1_STRING **)a,pp,l,B_ASN1_T61STRING) | |
310 | ||
311 | #define ASN1_IA5STRING_new() (ASN1_IA5STRING *)\ | |
312 | ASN1_STRING_type_new(V_ASN1_IA5STRING) | |
313 | #define ASN1_IA5STRING_free(a) ASN1_STRING_free((ASN1_STRING *)a) | |
314 | #define M_i2d_ASN1_IA5STRING(a,pp) \ | |
315 | i2d_ASN1_bytes((ASN1_STRING *)a,pp,V_ASN1_IA5STRING,\ | |
316 | V_ASN1_UNIVERSAL) | |
317 | #define M_d2i_ASN1_IA5STRING(a,pp,l) \ | |
318 | (ASN1_IA5STRING *)d2i_ASN1_type_bytes((ASN1_STRING **)a,pp,l,\ | |
319 | B_ASN1_IA5STRING) | |
320 | ||
321 | #define ASN1_UTCTIME_new() (ASN1_UTCTIME *)\ | |
322 | ASN1_STRING_type_new(V_ASN1_UTCTIME) | |
323 | #define ASN1_UTCTIME_free(a) ASN1_STRING_free((ASN1_STRING *)a) | |
324 | #define ASN1_UTCTIME_dup(a) (ASN1_UTCTIME *)ASN1_STRING_dup((ASN1_STRING *)a) | |
325 | /* i2d_ASN1_UTCTIME() is a function */ | |
326 | /* d2i_ASN1_UTCTIME() is a function */ | |
327 | /* ASN1_UTCTIME_set() is a function */ | |
328 | /* ASN1_UTCTIME_check() is a function */ | |
58964a49 RE |
329 | |
330 | #define ASN1_GENERALIZEDTIME_new() (ASN1_GENERALIZEDTIME *)\ | |
331 | ASN1_STRING_type_new(V_ASN1_GENERALIZEDTIME) | |
332 | #define ASN1_GENERALIZEDTIME_free(a) ASN1_STRING_free((ASN1_STRING *)a) | |
333 | #define ASN1_GENERALIZEDTIME_dup(a) (ASN1_UTCTIME *)ASN1_STRING_dup(\ | |
334 | (ASN1_STRING *)a) | |
335 | /* DOES NOT EXIST YET i2d_ASN1_GENERALIZEDTIME() is a function */ | |
336 | /* DOES NOT EXIST YET d2i_ASN1_GENERALIZEDTIME() is a function */ | |
337 | /* DOES NOT EXIST YET ASN1_GENERALIZEDTIME_set() is a function */ | |
338 | /* DOES NOT EXIST YET ASN1_GENERALIZEDTIME_check() is a function */ | |
d02b48c6 RE |
339 | |
340 | #define ASN1_GENERALSTRING_new() (ASN1_GENERALSTRING *)\ | |
341 | ASN1_STRING_type_new(V_ASN1_GENERALSTRING) | |
342 | #define ASN1_GENERALSTRING_free(a) ASN1_STRING_free((ASN1_STRING *)a) | |
343 | #define M_i2d_ASN1_GENERALSTRING(a,pp) \ | |
344 | i2d_ASN1_bytes((ASN1_STRING *)a,pp,V_ASN1_GENERALSTRING,\ | |
345 | V_ASN1_UNIVERSAL) | |
346 | #define M_d2i_ASN1_GENERALSTRING(a,pp,l) \ | |
347 | (ASN1_GENERALSTRING *)d2i_ASN1_type_bytes\ | |
348 | ((ASN1_STRING **)a,pp,l,B_ASN1_GENERALSTRING) | |
349 | ||
350 | #define ASN1_UNIVERSALSTRING_new() (ASN1_UNIVERSALSTRING *)\ | |
351 | ASN1_STRING_type_new(V_ASN1_UNIVERSALSTRING) | |
352 | #define ASN1_UNIVERSALSTRING_free(a) ASN1_STRING_free((ASN1_STRING *)a) | |
353 | #define M_i2d_ASN1_UNIVERSALSTRING(a,pp) \ | |
354 | i2d_ASN1_bytes((ASN1_STRING *)a,pp,V_ASN1_UNIVERSALSTRING,\ | |
355 | V_ASN1_UNIVERSAL) | |
356 | #define M_d2i_ASN1_UNIVERSALSTRING(a,pp,l) \ | |
357 | (ASN1_UNIVERSALSTRING *)d2i_ASN1_type_bytes\ | |
358 | ((ASN1_STRING **)a,pp,l,B_ASN1_UNIVERSALSTRING) | |
359 | ||
58964a49 RE |
360 | #define ASN1_BMPSTRING_new() (ASN1_BMPSTRING *)\ |
361 | ASN1_STRING_type_new(V_ASN1_BMPSTRING) | |
362 | #define ASN1_BMPSTRING_free(a) ASN1_STRING_free((ASN1_STRING *)a) | |
363 | #define M_i2d_ASN1_BMPSTRING(a,pp) \ | |
364 | i2d_ASN1_bytes((ASN1_STRING *)a,pp,V_ASN1_BMPSTRING,\ | |
365 | V_ASN1_UNIVERSAL) | |
366 | #define M_d2i_ASN1_BMPSTRING(a,pp,l) \ | |
367 | (ASN1_BMPSTRING *)d2i_ASN1_type_bytes\ | |
368 | ((ASN1_STRING **)a,pp,l,B_ASN1_BMPSTRING) | |
369 | ||
d02b48c6 RE |
370 | #ifndef NOPROTO |
371 | ASN1_TYPE * ASN1_TYPE_new(void ); | |
372 | void ASN1_TYPE_free(ASN1_TYPE *a); | |
373 | int i2d_ASN1_TYPE(ASN1_TYPE *a,unsigned char **pp); | |
374 | ASN1_TYPE * d2i_ASN1_TYPE(ASN1_TYPE **a,unsigned char **pp,long length); | |
375 | int ASN1_TYPE_get(ASN1_TYPE *a); | |
376 | void ASN1_TYPE_set(ASN1_TYPE *a, int type, char *value); | |
377 | ||
378 | ASN1_OBJECT * ASN1_OBJECT_new(void ); | |
379 | void ASN1_OBJECT_free(ASN1_OBJECT *a); | |
380 | int i2d_ASN1_OBJECT(ASN1_OBJECT *a,unsigned char **pp); | |
381 | ASN1_OBJECT * d2i_ASN1_OBJECT(ASN1_OBJECT **a,unsigned char **pp, | |
382 | long length); | |
383 | ||
384 | ASN1_STRING * ASN1_STRING_new(void ); | |
385 | void ASN1_STRING_free(ASN1_STRING *a); | |
386 | ASN1_STRING * ASN1_STRING_dup(ASN1_STRING *a); | |
387 | ASN1_STRING * ASN1_STRING_type_new(int type ); | |
388 | int ASN1_STRING_cmp(ASN1_STRING *a, ASN1_STRING *b); | |
389 | int ASN1_STRING_set(ASN1_STRING *str,unsigned char *data, int len); | |
390 | ||
391 | int i2d_ASN1_BIT_STRING(ASN1_BIT_STRING *a,unsigned char **pp); | |
392 | ASN1_BIT_STRING *d2i_ASN1_BIT_STRING(ASN1_BIT_STRING **a,unsigned char **pp, | |
393 | long length); | |
58964a49 RE |
394 | int ASN1_BIT_STRING_set_bit(ASN1_BIT_STRING *a, int n, int value); |
395 | int ASN1_BIT_STRING_get_bit(ASN1_BIT_STRING *a, int n); | |
396 | ||
d02b48c6 RE |
397 | |
398 | int i2d_ASN1_BOOLEAN(int a,unsigned char **pp); | |
399 | int d2i_ASN1_BOOLEAN(int *a,unsigned char **pp,long length); | |
400 | ||
401 | int i2d_ASN1_INTEGER(ASN1_INTEGER *a,unsigned char **pp); | |
402 | ASN1_INTEGER *d2i_ASN1_INTEGER(ASN1_INTEGER **a,unsigned char **pp, | |
403 | long length); | |
404 | ||
405 | int ASN1_UTCTIME_check(ASN1_UTCTIME *a); | |
406 | ASN1_UTCTIME *ASN1_UTCTIME_set(ASN1_UTCTIME *s,time_t t); | |
58964a49 | 407 | int ASN1_UTCTIME_set_string(ASN1_UTCTIME *s, char *str); |
d02b48c6 RE |
408 | |
409 | int i2d_ASN1_OCTET_STRING(ASN1_OCTET_STRING *a,unsigned char **pp); | |
410 | ASN1_OCTET_STRING *d2i_ASN1_OCTET_STRING(ASN1_OCTET_STRING **a, | |
411 | unsigned char **pp,long length); | |
412 | ||
dfeab068 RE |
413 | int i2d_ASN1_BMPSTRING(ASN1_BMPSTRING *a, unsigned char **pp); |
414 | ASN1_BMPSTRING *d2i_ASN1_BMPSTRING(ASN1_BMPSTRING **a, unsigned char **pp, | |
415 | long length); | |
416 | ||
d02b48c6 RE |
417 | int i2d_ASN1_PRINTABLE(ASN1_STRING *a,unsigned char **pp); |
418 | ASN1_STRING *d2i_ASN1_PRINTABLE(ASN1_STRING **a, | |
419 | unsigned char **pp, long l); | |
420 | ASN1_PRINTABLESTRING *d2i_ASN1_PRINTABLESTRING(ASN1_PRINTABLESTRING **a, | |
421 | unsigned char **pp, long l); | |
422 | ||
423 | ASN1_T61STRING *d2i_ASN1_T61STRING(ASN1_T61STRING **a, | |
424 | unsigned char **pp, long l); | |
425 | int i2d_ASN1_IA5STRING(ASN1_IA5STRING *a,unsigned char **pp); | |
426 | ASN1_IA5STRING *d2i_ASN1_IA5STRING(ASN1_IA5STRING **a, | |
427 | unsigned char **pp, long l); | |
428 | ||
429 | int i2d_ASN1_UTCTIME(ASN1_UTCTIME *a,unsigned char **pp); | |
430 | ASN1_UTCTIME * d2i_ASN1_UTCTIME(ASN1_UTCTIME **a,unsigned char **pp, | |
431 | long length); | |
432 | ||
4098e89c BL |
433 | /* for the is_set parameter to i2d_ASN1_SET */ |
434 | #define IS_SEQUENCE 0 | |
435 | #define IS_SET 1 | |
d02b48c6 | 436 | int i2d_ASN1_SET(STACK *a, unsigned char **pp, |
4098e89c | 437 | int (*func)(), int ex_tag, int ex_class, int is_set); |
d02b48c6 | 438 | STACK * d2i_ASN1_SET(STACK **a, unsigned char **pp, long length, |
dfeab068 RE |
439 | char *(*func)(), void (*free_func)(), |
440 | int ex_tag, int ex_class); | |
d02b48c6 RE |
441 | |
442 | #ifdef HEADER_BIO_H | |
443 | int i2a_ASN1_INTEGER(BIO *bp, ASN1_INTEGER *a); | |
444 | int a2i_ASN1_INTEGER(BIO *bp,ASN1_INTEGER *bs,char *buf,int size); | |
445 | int i2a_ASN1_OBJECT(BIO *bp,ASN1_OBJECT *a); | |
446 | int a2i_ASN1_STRING(BIO *bp,ASN1_STRING *bs,char *buf,int size); | |
447 | int i2a_ASN1_STRING(BIO *bp, ASN1_STRING *a, int type); | |
448 | #endif | |
58964a49 | 449 | int i2t_ASN1_OBJECT(char *buf,int buf_len,ASN1_OBJECT *a); |
d02b48c6 RE |
450 | |
451 | int a2d_ASN1_OBJECT(unsigned char *out,int olen, char *buf, int num); | |
452 | ASN1_OBJECT *ASN1_OBJECT_create(int nid, unsigned char *data,int len, | |
453 | char *sn, char *ln); | |
454 | ||
455 | int ASN1_INTEGER_set(ASN1_INTEGER *a, long v); | |
456 | long ASN1_INTEGER_get(ASN1_INTEGER *a); | |
457 | ASN1_INTEGER *BN_to_ASN1_INTEGER(BIGNUM *bn, ASN1_INTEGER *ai); | |
458 | BIGNUM *ASN1_INTEGER_to_BN(ASN1_INTEGER *ai,BIGNUM *bn); | |
459 | ||
460 | /* General */ | |
461 | /* given a string, return the correct type, max is the maximum length */ | |
462 | int ASN1_PRINTABLE_type(unsigned char *s, int max); | |
463 | ||
464 | int i2d_ASN1_bytes(ASN1_STRING *a, unsigned char **pp, int tag, int xclass); | |
465 | ASN1_STRING *d2i_ASN1_bytes(ASN1_STRING **a, unsigned char **pp, | |
466 | long length, int Ptag, int Pclass); | |
467 | /* type is one or more of the B_ASN1_ values. */ | |
468 | ASN1_STRING *d2i_ASN1_type_bytes(ASN1_STRING **a,unsigned char **pp, | |
469 | long length,int type); | |
470 | ||
471 | /* PARSING */ | |
472 | int asn1_Finish(ASN1_CTX *c); | |
473 | ||
474 | /* SPECIALS */ | |
475 | int ASN1_get_object(unsigned char **pp, long *plength, int *ptag, | |
476 | int *pclass, long omax); | |
477 | int ASN1_check_infinite_end(unsigned char **p,long len); | |
478 | void ASN1_put_object(unsigned char **pp, int constructed, int length, | |
479 | int tag, int xclass); | |
480 | int ASN1_object_size(int constructed, int length, int tag); | |
481 | ||
482 | /* Used to implement other functions */ | |
483 | char *ASN1_dup(int (*i2d)(),char *(*d2i)(),char *x); | |
484 | ||
58964a49 | 485 | #ifndef NO_FP_API |
d02b48c6 RE |
486 | char *ASN1_d2i_fp(char *(*xnew)(),char *(*d2i)(),FILE *fp,unsigned char **x); |
487 | int ASN1_i2d_fp(int (*i2d)(),FILE *out,unsigned char *x); | |
488 | #endif | |
489 | ||
490 | #ifdef HEADER_BIO_H | |
491 | char *ASN1_d2i_bio(char *(*xnew)(),char *(*d2i)(),BIO *bp,unsigned char **x); | |
492 | int ASN1_i2d_bio(int (*i2d)(),BIO *out,unsigned char *x); | |
493 | int ASN1_UTCTIME_print(BIO *fp,ASN1_UTCTIME *a); | |
494 | int ASN1_STRING_print(BIO *bp,ASN1_STRING *v); | |
495 | int ASN1_parse(BIO *bp,unsigned char *pp,long len,int indent); | |
496 | #endif | |
497 | ||
498 | /* Used to load and write netscape format cert/key */ | |
499 | int i2d_ASN1_HEADER(ASN1_HEADER *a,unsigned char **pp); | |
500 | ASN1_HEADER *d2i_ASN1_HEADER(ASN1_HEADER **a,unsigned char **pp, long length); | |
501 | ASN1_HEADER *ASN1_HEADER_new(void ); | |
502 | void ASN1_HEADER_free(ASN1_HEADER *a); | |
503 | ||
504 | int ASN1_UNIVERSALSTRING_to_string(ASN1_UNIVERSALSTRING *s); | |
505 | ||
506 | void ERR_load_ASN1_strings(void); | |
507 | ||
508 | /* Not used that much at this point, except for the first two */ | |
509 | ASN1_METHOD *X509_asn1_meth(void); | |
510 | ASN1_METHOD *RSAPrivateKey_asn1_meth(void); | |
511 | ASN1_METHOD *ASN1_IA5STRING_asn1_meth(void); | |
512 | ASN1_METHOD *ASN1_BIT_STRING_asn1_meth(void); | |
513 | ||
58964a49 RE |
514 | int ASN1_TYPE_set_octetstring(ASN1_TYPE *a, |
515 | unsigned char *data, int len); | |
516 | int ASN1_TYPE_get_octetstring(ASN1_TYPE *a, | |
517 | unsigned char *data, int max_len); | |
518 | int ASN1_TYPE_set_int_octetstring(ASN1_TYPE *a, long num, | |
519 | unsigned char *data, int len); | |
520 | int ASN1_TYPE_get_int_octetstring(ASN1_TYPE *a,long *num, | |
521 | unsigned char *data, int max_len); | |
522 | ||
d02b48c6 RE |
523 | #else |
524 | ||
525 | ASN1_TYPE * ASN1_TYPE_new(); | |
526 | void ASN1_TYPE_free(); | |
527 | int i2d_ASN1_TYPE(); | |
528 | ASN1_TYPE * d2i_ASN1_TYPE(); | |
529 | int ASN1_TYPE_get(); | |
530 | void ASN1_TYPE_set(); | |
531 | ||
532 | ASN1_OBJECT * ASN1_OBJECT_new(); | |
533 | void ASN1_OBJECT_free(); | |
534 | int i2d_ASN1_OBJECT(); | |
535 | ASN1_OBJECT * d2i_ASN1_OBJECT(); | |
536 | ASN1_STRING * ASN1_STRING_new(); | |
537 | void ASN1_STRING_free(); | |
538 | ASN1_STRING * ASN1_STRING_dup(); | |
539 | ASN1_STRING * ASN1_STRING_type_new(); | |
540 | int ASN1_STRING_cmp(); | |
541 | int ASN1_STRING_set(); | |
542 | int i2d_ASN1_BIT_STRING(); | |
543 | ASN1_BIT_STRING *d2i_ASN1_BIT_STRING(); | |
58964a49 RE |
544 | int ASN1_BIT_STRING_set_bit(); |
545 | int ASN1_BIT_STRING_get_bit(); | |
d02b48c6 RE |
546 | int i2d_ASN1_BOOLEAN(); |
547 | int d2i_ASN1_BOOLEAN(); | |
548 | int i2d_ASN1_INTEGER(); | |
549 | ASN1_INTEGER *d2i_ASN1_INTEGER(); | |
550 | int ASN1_UTCTIME_check(); | |
551 | ASN1_UTCTIME *ASN1_UTCTIME_set(); | |
58964a49 | 552 | int ASN1_UTCTIME_set_string(); |
d02b48c6 RE |
553 | int i2d_ASN1_OCTET_STRING(); |
554 | ASN1_OCTET_STRING *d2i_ASN1_OCTET_STRING(); | |
555 | int i2d_ASN1_PRINTABLE(); | |
556 | ASN1_STRING *d2i_ASN1_PRINTABLE(); | |
557 | ASN1_PRINTABLESTRING *d2i_ASN1_PRINTABLESTRING(); | |
558 | ASN1_T61STRING *d2i_ASN1_T61STRING(); | |
559 | int i2d_ASN1_IA5STRING(); | |
560 | ASN1_IA5STRING *d2i_ASN1_IA5STRING(); | |
561 | int i2d_ASN1_UTCTIME(); | |
562 | ASN1_UTCTIME * d2i_ASN1_UTCTIME(); | |
563 | int i2d_ASN1_SET(); | |
564 | STACK * d2i_ASN1_SET(); | |
565 | int a2d_ASN1_OBJECT(); | |
566 | ASN1_OBJECT *ASN1_OBJECT_create(); | |
567 | int ASN1_INTEGER_set(); | |
568 | long ASN1_INTEGER_get(); | |
569 | ASN1_INTEGER *BN_to_ASN1_INTEGER(); | |
570 | BIGNUM *ASN1_INTEGER_to_BN(); | |
571 | int ASN1_PRINTABLE_type(); | |
572 | int i2d_ASN1_bytes(); | |
573 | ASN1_STRING *d2i_ASN1_bytes(); | |
574 | ASN1_STRING *d2i_ASN1_type_bytes(); | |
575 | int asn1_Finish(); | |
576 | int ASN1_get_object(); | |
577 | int ASN1_check_infinite_end(); | |
578 | void ASN1_put_object(); | |
579 | int ASN1_object_size(); | |
580 | char *ASN1_dup(); | |
58964a49 | 581 | #ifndef NO_FP_API |
d02b48c6 RE |
582 | char *ASN1_d2i_fp(); |
583 | int ASN1_i2d_fp(); | |
584 | #endif | |
585 | ||
586 | char *ASN1_d2i_bio(); | |
587 | int ASN1_i2d_bio(); | |
588 | int ASN1_UTCTIME_print(); | |
589 | int ASN1_STRING_print(); | |
590 | int ASN1_parse(); | |
591 | int i2a_ASN1_INTEGER(); | |
592 | int a2i_ASN1_INTEGER(); | |
593 | int i2a_ASN1_OBJECT(); | |
58964a49 | 594 | int i2t_ASN1_OBJECT(); |
d02b48c6 RE |
595 | int a2i_ASN1_STRING(); |
596 | int i2a_ASN1_STRING(); | |
597 | ||
598 | int i2d_ASN1_HEADER(); | |
599 | ASN1_HEADER *d2i_ASN1_HEADER(); | |
600 | ASN1_HEADER *ASN1_HEADER_new(); | |
601 | void ASN1_HEADER_free(); | |
602 | void ERR_load_ASN1_strings(); | |
603 | ASN1_METHOD *X509_asn1_meth(); | |
604 | ASN1_METHOD *RSAPrivateKey_asn1_meth(); | |
605 | ASN1_METHOD *ASN1_IA5STRING_asn1_meth(); | |
606 | ASN1_METHOD *ASN1_BIT_STRING_asn1_meth(); | |
607 | ||
608 | int ASN1_UNIVERSALSTRING_to_string(); | |
58964a49 RE |
609 | |
610 | int ASN1_TYPE_set_octetstring(); | |
611 | int ASN1_TYPE_get_octetstring(); | |
612 | int ASN1_TYPE_set_int_octetstring(); | |
613 | int ASN1_TYPE_get_int_octetstring(); | |
614 | ||
dfeab068 RE |
615 | int i2d_ASN1_BMPSTRING(); |
616 | ASN1_BMPSTRING *d2i_ASN1_BMPSTRING(); | |
617 | ||
d02b48c6 RE |
618 | #endif |
619 | ||
620 | /* BEGIN ERROR CODES */ | |
621 | /* Error codes for the ASN1 functions. */ | |
622 | ||
623 | /* Function codes. */ | |
624 | #define ASN1_F_A2D_ASN1_OBJECT 100 | |
625 | #define ASN1_F_A2I_ASN1_INTEGER 101 | |
626 | #define ASN1_F_A2I_ASN1_STRING 102 | |
627 | #define ASN1_F_ASN1_COLLATE_PRIMATIVE 103 | |
628 | #define ASN1_F_ASN1_D2I_BIO 104 | |
629 | #define ASN1_F_ASN1_D2I_FP 105 | |
630 | #define ASN1_F_ASN1_DUP 106 | |
631 | #define ASN1_F_ASN1_GET_OBJECT 107 | |
632 | #define ASN1_F_ASN1_HEADER_NEW 108 | |
633 | #define ASN1_F_ASN1_I2D_BIO 109 | |
634 | #define ASN1_F_ASN1_I2D_FP 110 | |
635 | #define ASN1_F_ASN1_INTEGER_SET 111 | |
636 | #define ASN1_F_ASN1_INTEGER_TO_BN 112 | |
637 | #define ASN1_F_ASN1_OBJECT_NEW 113 | |
638 | #define ASN1_F_ASN1_SIGN 114 | |
639 | #define ASN1_F_ASN1_STRING_NEW 115 | |
640 | #define ASN1_F_ASN1_STRING_TYPE_NEW 116 | |
58964a49 RE |
641 | #define ASN1_F_ASN1_TYPE_GET_INT_OCTETSTRING 117 |
642 | #define ASN1_F_ASN1_TYPE_GET_OCTETSTRING 118 | |
643 | #define ASN1_F_ASN1_TYPE_NEW 119 | |
644 | #define ASN1_F_ASN1_UTCTIME_NEW 120 | |
645 | #define ASN1_F_ASN1_VERIFY 121 | |
646 | #define ASN1_F_BN_TO_ASN1_INTEGER 122 | |
647 | #define ASN1_F_D2I_ASN1_BIT_STRING 123 | |
648 | #define ASN1_F_D2I_ASN1_BMPSTRING 124 | |
649 | #define ASN1_F_D2I_ASN1_BOOLEAN 125 | |
650 | #define ASN1_F_D2I_ASN1_BYTES 126 | |
651 | #define ASN1_F_D2I_ASN1_HEADER 127 | |
652 | #define ASN1_F_D2I_ASN1_INTEGER 128 | |
653 | #define ASN1_F_D2I_ASN1_OBJECT 129 | |
654 | #define ASN1_F_D2I_ASN1_OCTET_STRING 130 | |
655 | #define ASN1_F_D2I_ASN1_PRINT_TYPE 131 | |
656 | #define ASN1_F_D2I_ASN1_SET 132 | |
657 | #define ASN1_F_D2I_ASN1_TYPE 133 | |
658 | #define ASN1_F_D2I_ASN1_TYPE_BYTES 134 | |
659 | #define ASN1_F_D2I_ASN1_UTCTIME 135 | |
660 | #define ASN1_F_D2I_DHPARAMS 136 | |
661 | #define ASN1_F_D2I_DSAPARAMS 137 | |
662 | #define ASN1_F_D2I_DSAPRIVATEKEY 138 | |
663 | #define ASN1_F_D2I_DSAPUBLICKEY 139 | |
664 | #define ASN1_F_D2I_NETSCAPE_PKEY 140 | |
665 | #define ASN1_F_D2I_NETSCAPE_RSA 141 | |
666 | #define ASN1_F_D2I_NETSCAPE_RSA_2 142 | |
667 | #define ASN1_F_D2I_NETSCAPE_SPKAC 143 | |
668 | #define ASN1_F_D2I_NETSCAPE_SPKI 144 | |
669 | #define ASN1_F_D2I_PKCS7 145 | |
670 | #define ASN1_F_D2I_PKCS7_DIGEST 146 | |
671 | #define ASN1_F_D2I_PKCS7_ENCRYPT 147 | |
672 | #define ASN1_F_D2I_PKCS7_ENC_CONTENT 148 | |
673 | #define ASN1_F_D2I_PKCS7_ENVELOPE 149 | |
674 | #define ASN1_F_D2I_PKCS7_ISSUER_AND_SERIAL 150 | |
675 | #define ASN1_F_D2I_PKCS7_RECIP_INFO 151 | |
676 | #define ASN1_F_D2I_PKCS7_SIGNED 152 | |
677 | #define ASN1_F_D2I_PKCS7_SIGNER_INFO 153 | |
678 | #define ASN1_F_D2I_PKCS7_SIGN_ENVELOPE 154 | |
679 | #define ASN1_F_D2I_PRIVATEKEY 155 | |
680 | #define ASN1_F_D2I_PUBLICKEY 156 | |
681 | #define ASN1_F_D2I_RSAPRIVATEKEY 157 | |
682 | #define ASN1_F_D2I_RSAPUBLICKEY 158 | |
683 | #define ASN1_F_D2I_X509 159 | |
684 | #define ASN1_F_D2I_X509_ALGOR 160 | |
685 | #define ASN1_F_D2I_X509_ATTRIBUTE 161 | |
686 | #define ASN1_F_D2I_X509_CINF 162 | |
687 | #define ASN1_F_D2I_X509_CRL 163 | |
688 | #define ASN1_F_D2I_X509_CRL_INFO 164 | |
689 | #define ASN1_F_D2I_X509_EXTENSION 165 | |
690 | #define ASN1_F_D2I_X509_KEY 166 | |
691 | #define ASN1_F_D2I_X509_NAME 167 | |
692 | #define ASN1_F_D2I_X509_NAME_ENTRY 168 | |
693 | #define ASN1_F_D2I_X509_PKEY 169 | |
694 | #define ASN1_F_D2I_X509_PUBKEY 170 | |
695 | #define ASN1_F_D2I_X509_REQ 171 | |
696 | #define ASN1_F_D2I_X509_REQ_INFO 172 | |
697 | #define ASN1_F_D2I_X509_REVOKED 173 | |
698 | #define ASN1_F_D2I_X509_SIG 174 | |
699 | #define ASN1_F_D2I_X509_VAL 175 | |
700 | #define ASN1_F_I2D_ASN1_HEADER 176 | |
701 | #define ASN1_F_I2D_DHPARAMS 177 | |
702 | #define ASN1_F_I2D_DSAPARAMS 178 | |
703 | #define ASN1_F_I2D_DSAPRIVATEKEY 179 | |
704 | #define ASN1_F_I2D_DSAPUBLICKEY 180 | |
705 | #define ASN1_F_I2D_NETSCAPE_RSA 181 | |
706 | #define ASN1_F_I2D_PKCS7 182 | |
707 | #define ASN1_F_I2D_PRIVATEKEY 183 | |
708 | #define ASN1_F_I2D_PUBLICKEY 184 | |
709 | #define ASN1_F_I2D_RSAPRIVATEKEY 185 | |
710 | #define ASN1_F_I2D_RSAPUBLICKEY 186 | |
711 | #define ASN1_F_I2D_X509_ATTRIBUTE 187 | |
712 | #define ASN1_F_I2T_ASN1_OBJECT 188 | |
713 | #define ASN1_F_NETSCAPE_PKEY_NEW 189 | |
714 | #define ASN1_F_NETSCAPE_SPKAC_NEW 190 | |
715 | #define ASN1_F_NETSCAPE_SPKI_NEW 191 | |
716 | #define ASN1_F_PKCS7_DIGEST_NEW 192 | |
717 | #define ASN1_F_PKCS7_ENCRYPT_NEW 193 | |
718 | #define ASN1_F_PKCS7_ENC_CONTENT_NEW 194 | |
719 | #define ASN1_F_PKCS7_ENVELOPE_NEW 195 | |
720 | #define ASN1_F_PKCS7_ISSUER_AND_SERIAL_NEW 196 | |
721 | #define ASN1_F_PKCS7_NEW 197 | |
722 | #define ASN1_F_PKCS7_RECIP_INFO_NEW 198 | |
723 | #define ASN1_F_PKCS7_SIGNED_NEW 199 | |
724 | #define ASN1_F_PKCS7_SIGNER_INFO_NEW 200 | |
725 | #define ASN1_F_PKCS7_SIGN_ENVELOPE_NEW 201 | |
726 | #define ASN1_F_X509_ALGOR_NEW 202 | |
727 | #define ASN1_F_X509_ATTRIBUTE_NEW 203 | |
728 | #define ASN1_F_X509_CINF_NEW 204 | |
729 | #define ASN1_F_X509_CRL_INFO_NEW 205 | |
730 | #define ASN1_F_X509_CRL_NEW 206 | |
731 | #define ASN1_F_X509_DHPARAMS_NEW 207 | |
732 | #define ASN1_F_X509_EXTENSION_NEW 208 | |
733 | #define ASN1_F_X509_INFO_NEW 209 | |
734 | #define ASN1_F_X509_KEY_NEW 210 | |
735 | #define ASN1_F_X509_NAME_ENTRY_NEW 211 | |
736 | #define ASN1_F_X509_NAME_NEW 212 | |
737 | #define ASN1_F_X509_NEW 213 | |
738 | #define ASN1_F_X509_PKEY_NEW 214 | |
739 | #define ASN1_F_X509_PUBKEY_NEW 215 | |
740 | #define ASN1_F_X509_REQ_INFO_NEW 216 | |
741 | #define ASN1_F_X509_REQ_NEW 217 | |
742 | #define ASN1_F_X509_REVOKED_NEW 218 | |
743 | #define ASN1_F_X509_SIG_NEW 219 | |
744 | #define ASN1_F_X509_VAL_FREE 220 | |
745 | #define ASN1_F_X509_VAL_NEW 221 | |
d02b48c6 RE |
746 | |
747 | /* Reason codes. */ | |
748 | #define ASN1_R_BAD_CLASS 100 | |
dfeab068 RE |
749 | #define ASN1_R_BAD_OBJECT_HEADER 101 |
750 | #define ASN1_R_BAD_PASSWORD_READ 102 | |
751 | #define ASN1_R_BAD_PKCS7_CONTENT 103 | |
752 | #define ASN1_R_BAD_PKCS7_TYPE 104 | |
753 | #define ASN1_R_BAD_TAG 105 | |
754 | #define ASN1_R_BAD_TYPE 106 | |
755 | #define ASN1_R_BN_LIB 107 | |
756 | #define ASN1_R_BOOLEAN_IS_WRONG_LENGTH 108 | |
757 | #define ASN1_R_BUFFER_TOO_SMALL 109 | |
758 | #define ASN1_R_DATA_IS_WRONG 110 | |
759 | #define ASN1_R_DECODING_ERROR 111 | |
760 | #define ASN1_R_ERROR_PARSING_SET_ELEMENT 112 | |
761 | #define ASN1_R_EXPECTING_AN_INTEGER 113 | |
762 | #define ASN1_R_EXPECTING_AN_OBJECT 114 | |
763 | #define ASN1_R_EXPECTING_AN_OCTET_STRING 115 | |
764 | #define ASN1_R_EXPECTING_A_BIT_STRING 116 | |
765 | #define ASN1_R_EXPECTING_A_BOOLEAN 117 | |
766 | #define ASN1_R_EXPECTING_A_UTCTIME 118 | |
767 | #define ASN1_R_FIRST_NUM_TOO_LARGE 119 | |
768 | #define ASN1_R_HEADER_TOO_LONG 120 | |
769 | #define ASN1_R_INVALID_DIGIT 121 | |
770 | #define ASN1_R_INVALID_SEPARATOR 122 | |
771 | #define ASN1_R_INVALID_TIME_FORMAT 123 | |
772 | #define ASN1_R_IV_TOO_LARGE 124 | |
773 | #define ASN1_R_LENGTH_ERROR 125 | |
774 | #define ASN1_R_MISSING_SECOND_NUMBER 126 | |
775 | #define ASN1_R_NON_HEX_CHARACTERS 127 | |
776 | #define ASN1_R_NOT_ENOUGH_DATA 128 | |
777 | #define ASN1_R_ODD_NUMBER_OF_CHARS 129 | |
778 | #define ASN1_R_PARSING 130 | |
779 | #define ASN1_R_PRIVATE_KEY_HEADER_MISSING 131 | |
780 | #define ASN1_R_SECOND_NUMBER_TOO_LARGE 132 | |
781 | #define ASN1_R_SHORT_LINE 133 | |
782 | #define ASN1_R_STRING_TOO_SHORT 134 | |
783 | #define ASN1_R_TAG_VALUE_TOO_HIGH 135 | |
784 | #define ASN1_R_THE_ASN1_OBJECT_IDENTIFIER_IS_NOT_KNOWN_FOR_THIS_MD 136 | |
785 | #define ASN1_R_TOO_LONG 137 | |
786 | #define ASN1_R_UNABLE_TO_DECODE_RSA_KEY 138 | |
787 | #define ASN1_R_UNABLE_TO_DECODE_RSA_PRIVATE_KEY 139 | |
788 | #define ASN1_R_UNKNOWN_ATTRIBUTE_TYPE 140 | |
789 | #define ASN1_R_UNKNOWN_MESSAGE_DIGEST_ALGORITHM 141 | |
790 | #define ASN1_R_UNKNOWN_OBJECT_TYPE 142 | |
791 | #define ASN1_R_UNKNOWN_PUBLIC_KEY_TYPE 143 | |
792 | #define ASN1_R_UNSUPPORTED_CIPHER 144 | |
793 | #define ASN1_R_UNSUPPORTED_ENCRYPTION_ALGORITHM 145 | |
794 | #define ASN1_R_UNSUPPORTED_PUBLIC_KEY_TYPE 146 | |
795 | #define ASN1_R_UTCTIME_TOO_LONG 147 | |
796 | #define ASN1_R_WRONG_PRINTABLE_TYPE 148 | |
797 | #define ASN1_R_WRONG_TAG 149 | |
798 | #define ASN1_R_WRONG_TYPE 150 | |
d02b48c6 RE |
799 | |
800 | #ifdef __cplusplus | |
801 | } | |
802 | #endif | |
803 | #endif | |
804 |