diff options
Diffstat (limited to 'src/lib/libcrypto/asn1/tasn_typ.c')
-rw-r--r-- | src/lib/libcrypto/asn1/tasn_typ.c | 392 |
1 files changed, 376 insertions, 16 deletions
diff --git a/src/lib/libcrypto/asn1/tasn_typ.c b/src/lib/libcrypto/asn1/tasn_typ.c index 04d9c84180..2f44b4229b 100644 --- a/src/lib/libcrypto/asn1/tasn_typ.c +++ b/src/lib/libcrypto/asn1/tasn_typ.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: tasn_typ.c,v 1.6 2014/06/12 15:49:27 deraadt Exp $ */ | 1 | /* $OpenBSD: tasn_typ.c,v 1.7 2015/02/09 15:05:59 jsing Exp $ */ |
2 | /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL | 2 | /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL |
3 | * project 2000. | 3 | * project 2000. |
4 | */ | 4 | */ |
@@ -63,51 +63,411 @@ | |||
63 | 63 | ||
64 | 64 | ||
65 | IMPLEMENT_ASN1_TYPE(ASN1_INTEGER) | 65 | IMPLEMENT_ASN1_TYPE(ASN1_INTEGER) |
66 | IMPLEMENT_ASN1_FUNCTIONS(ASN1_INTEGER) | 66 | |
67 | ASN1_INTEGER * | ||
68 | d2i_ASN1_INTEGER(ASN1_INTEGER **a, const unsigned char **in, long len) | ||
69 | { | ||
70 | return (ASN1_INTEGER *)ASN1_item_d2i((ASN1_VALUE **)a, in, len, | ||
71 | &ASN1_INTEGER_it); | ||
72 | } | ||
73 | |||
74 | int | ||
75 | i2d_ASN1_INTEGER(ASN1_INTEGER *a, unsigned char **out) | ||
76 | { | ||
77 | return ASN1_item_i2d((ASN1_VALUE *)a, out, &ASN1_INTEGER_it); | ||
78 | } | ||
79 | |||
80 | ASN1_INTEGER * | ||
81 | ASN1_INTEGER_new(void) | ||
82 | { | ||
83 | return (ASN1_INTEGER *)ASN1_item_new(&ASN1_INTEGER_it); | ||
84 | } | ||
85 | |||
86 | void | ||
87 | ASN1_INTEGER_free(ASN1_INTEGER *a) | ||
88 | { | ||
89 | ASN1_item_free((ASN1_VALUE *)a, &ASN1_INTEGER_it); | ||
90 | } | ||
67 | 91 | ||
68 | IMPLEMENT_ASN1_TYPE(ASN1_ENUMERATED) | 92 | IMPLEMENT_ASN1_TYPE(ASN1_ENUMERATED) |
69 | IMPLEMENT_ASN1_FUNCTIONS(ASN1_ENUMERATED) | 93 | |
94 | ASN1_ENUMERATED * | ||
95 | d2i_ASN1_ENUMERATED(ASN1_ENUMERATED **a, const unsigned char **in, long len) | ||
96 | { | ||
97 | return (ASN1_ENUMERATED *)ASN1_item_d2i((ASN1_VALUE **)a, in, len, | ||
98 | &ASN1_ENUMERATED_it); | ||
99 | } | ||
100 | |||
101 | int | ||
102 | i2d_ASN1_ENUMERATED(ASN1_ENUMERATED *a, unsigned char **out) | ||
103 | { | ||
104 | return ASN1_item_i2d((ASN1_VALUE *)a, out, &ASN1_ENUMERATED_it); | ||
105 | } | ||
106 | |||
107 | ASN1_ENUMERATED * | ||
108 | ASN1_ENUMERATED_new(void) | ||
109 | { | ||
110 | return (ASN1_ENUMERATED *)ASN1_item_new(&ASN1_ENUMERATED_it); | ||
111 | } | ||
112 | |||
113 | void | ||
114 | ASN1_ENUMERATED_free(ASN1_ENUMERATED *a) | ||
115 | { | ||
116 | ASN1_item_free((ASN1_VALUE *)a, &ASN1_ENUMERATED_it); | ||
117 | } | ||
70 | 118 | ||
71 | IMPLEMENT_ASN1_TYPE(ASN1_BIT_STRING) | 119 | IMPLEMENT_ASN1_TYPE(ASN1_BIT_STRING) |
72 | IMPLEMENT_ASN1_FUNCTIONS(ASN1_BIT_STRING) | 120 | |
121 | ASN1_BIT_STRING * | ||
122 | d2i_ASN1_BIT_STRING(ASN1_BIT_STRING **a, const unsigned char **in, long len) | ||
123 | { | ||
124 | return (ASN1_BIT_STRING *)ASN1_item_d2i((ASN1_VALUE **)a, in, len, | ||
125 | &ASN1_BIT_STRING_it); | ||
126 | } | ||
127 | |||
128 | int | ||
129 | i2d_ASN1_BIT_STRING(ASN1_BIT_STRING *a, unsigned char **out) | ||
130 | { | ||
131 | return ASN1_item_i2d((ASN1_VALUE *)a, out, &ASN1_BIT_STRING_it); | ||
132 | } | ||
133 | |||
134 | ASN1_BIT_STRING * | ||
135 | ASN1_BIT_STRING_new(void) | ||
136 | { | ||
137 | return (ASN1_BIT_STRING *)ASN1_item_new(&ASN1_BIT_STRING_it); | ||
138 | } | ||
139 | |||
140 | void | ||
141 | ASN1_BIT_STRING_free(ASN1_BIT_STRING *a) | ||
142 | { | ||
143 | ASN1_item_free((ASN1_VALUE *)a, &ASN1_BIT_STRING_it); | ||
144 | } | ||
73 | 145 | ||
74 | IMPLEMENT_ASN1_TYPE(ASN1_OCTET_STRING) | 146 | IMPLEMENT_ASN1_TYPE(ASN1_OCTET_STRING) |
75 | IMPLEMENT_ASN1_FUNCTIONS(ASN1_OCTET_STRING) | 147 | |
148 | ASN1_OCTET_STRING * | ||
149 | d2i_ASN1_OCTET_STRING(ASN1_OCTET_STRING **a, const unsigned char **in, long len) | ||
150 | { | ||
151 | return (ASN1_OCTET_STRING *)ASN1_item_d2i((ASN1_VALUE **)a, in, len, | ||
152 | &ASN1_OCTET_STRING_it); | ||
153 | } | ||
154 | |||
155 | int | ||
156 | i2d_ASN1_OCTET_STRING(ASN1_OCTET_STRING *a, unsigned char **out) | ||
157 | { | ||
158 | return ASN1_item_i2d((ASN1_VALUE *)a, out, &ASN1_OCTET_STRING_it); | ||
159 | } | ||
160 | |||
161 | ASN1_OCTET_STRING * | ||
162 | ASN1_OCTET_STRING_new(void) | ||
163 | { | ||
164 | return (ASN1_OCTET_STRING *)ASN1_item_new(&ASN1_OCTET_STRING_it); | ||
165 | } | ||
166 | |||
167 | void | ||
168 | ASN1_OCTET_STRING_free(ASN1_OCTET_STRING *a) | ||
169 | { | ||
170 | ASN1_item_free((ASN1_VALUE *)a, &ASN1_OCTET_STRING_it); | ||
171 | } | ||
76 | 172 | ||
77 | IMPLEMENT_ASN1_TYPE(ASN1_NULL) | 173 | IMPLEMENT_ASN1_TYPE(ASN1_NULL) |
78 | IMPLEMENT_ASN1_FUNCTIONS(ASN1_NULL) | 174 | |
175 | ASN1_NULL * | ||
176 | d2i_ASN1_NULL(ASN1_NULL **a, const unsigned char **in, long len) | ||
177 | { | ||
178 | return (ASN1_NULL *)ASN1_item_d2i((ASN1_VALUE **)a, in, len, | ||
179 | &ASN1_NULL_it); | ||
180 | } | ||
181 | |||
182 | int | ||
183 | i2d_ASN1_NULL(ASN1_NULL *a, unsigned char **out) | ||
184 | { | ||
185 | return ASN1_item_i2d((ASN1_VALUE *)a, out, &ASN1_NULL_it); | ||
186 | } | ||
187 | |||
188 | ASN1_NULL * | ||
189 | ASN1_NULL_new(void) | ||
190 | { | ||
191 | return (ASN1_NULL *)ASN1_item_new(&ASN1_NULL_it); | ||
192 | } | ||
193 | |||
194 | void | ||
195 | ASN1_NULL_free(ASN1_NULL *a) | ||
196 | { | ||
197 | ASN1_item_free((ASN1_VALUE *)a, &ASN1_NULL_it); | ||
198 | } | ||
79 | 199 | ||
80 | IMPLEMENT_ASN1_TYPE(ASN1_OBJECT) | 200 | IMPLEMENT_ASN1_TYPE(ASN1_OBJECT) |
81 | 201 | ||
82 | IMPLEMENT_ASN1_TYPE(ASN1_UTF8STRING) | 202 | IMPLEMENT_ASN1_TYPE(ASN1_UTF8STRING) |
83 | IMPLEMENT_ASN1_FUNCTIONS(ASN1_UTF8STRING) | 203 | |
204 | ASN1_UTF8STRING * | ||
205 | d2i_ASN1_UTF8STRING(ASN1_UTF8STRING **a, const unsigned char **in, long len) | ||
206 | { | ||
207 | return (ASN1_UTF8STRING *)ASN1_item_d2i((ASN1_VALUE **)a, in, len, | ||
208 | &ASN1_UTF8STRING_it); | ||
209 | } | ||
210 | |||
211 | int | ||
212 | i2d_ASN1_UTF8STRING(ASN1_UTF8STRING *a, unsigned char **out) | ||
213 | { | ||
214 | return ASN1_item_i2d((ASN1_VALUE *)a, out, &ASN1_UTF8STRING_it); | ||
215 | } | ||
216 | |||
217 | ASN1_UTF8STRING * | ||
218 | ASN1_UTF8STRING_new(void) | ||
219 | { | ||
220 | return (ASN1_UTF8STRING *)ASN1_item_new(&ASN1_UTF8STRING_it); | ||
221 | } | ||
222 | |||
223 | void | ||
224 | ASN1_UTF8STRING_free(ASN1_UTF8STRING *a) | ||
225 | { | ||
226 | ASN1_item_free((ASN1_VALUE *)a, &ASN1_UTF8STRING_it); | ||
227 | } | ||
84 | 228 | ||
85 | IMPLEMENT_ASN1_TYPE(ASN1_PRINTABLESTRING) | 229 | IMPLEMENT_ASN1_TYPE(ASN1_PRINTABLESTRING) |
86 | IMPLEMENT_ASN1_FUNCTIONS(ASN1_PRINTABLESTRING) | 230 | |
231 | ASN1_PRINTABLESTRING * | ||
232 | d2i_ASN1_PRINTABLESTRING(ASN1_PRINTABLESTRING **a, const unsigned char **in, long len) | ||
233 | { | ||
234 | return (ASN1_PRINTABLESTRING *)ASN1_item_d2i((ASN1_VALUE **)a, in, len, | ||
235 | &ASN1_PRINTABLESTRING_it); | ||
236 | } | ||
237 | |||
238 | int | ||
239 | i2d_ASN1_PRINTABLESTRING(ASN1_PRINTABLESTRING *a, unsigned char **out) | ||
240 | { | ||
241 | return ASN1_item_i2d((ASN1_VALUE *)a, out, &ASN1_PRINTABLESTRING_it); | ||
242 | } | ||
243 | |||
244 | ASN1_PRINTABLESTRING * | ||
245 | ASN1_PRINTABLESTRING_new(void) | ||
246 | { | ||
247 | return (ASN1_PRINTABLESTRING *)ASN1_item_new(&ASN1_PRINTABLESTRING_it); | ||
248 | } | ||
249 | |||
250 | void | ||
251 | ASN1_PRINTABLESTRING_free(ASN1_PRINTABLESTRING *a) | ||
252 | { | ||
253 | ASN1_item_free((ASN1_VALUE *)a, &ASN1_PRINTABLESTRING_it); | ||
254 | } | ||
87 | 255 | ||
88 | IMPLEMENT_ASN1_TYPE(ASN1_T61STRING) | 256 | IMPLEMENT_ASN1_TYPE(ASN1_T61STRING) |
89 | IMPLEMENT_ASN1_FUNCTIONS(ASN1_T61STRING) | 257 | |
258 | ASN1_T61STRING * | ||
259 | d2i_ASN1_T61STRING(ASN1_T61STRING **a, const unsigned char **in, long len) | ||
260 | { | ||
261 | return (ASN1_T61STRING *)ASN1_item_d2i((ASN1_VALUE **)a, in, len, | ||
262 | &ASN1_T61STRING_it); | ||
263 | } | ||
264 | |||
265 | int | ||
266 | i2d_ASN1_T61STRING(ASN1_T61STRING *a, unsigned char **out) | ||
267 | { | ||
268 | return ASN1_item_i2d((ASN1_VALUE *)a, out, &ASN1_T61STRING_it); | ||
269 | } | ||
270 | |||
271 | ASN1_T61STRING * | ||
272 | ASN1_T61STRING_new(void) | ||
273 | { | ||
274 | return (ASN1_T61STRING *)ASN1_item_new(&ASN1_T61STRING_it); | ||
275 | } | ||
276 | |||
277 | void | ||
278 | ASN1_T61STRING_free(ASN1_T61STRING *a) | ||
279 | { | ||
280 | ASN1_item_free((ASN1_VALUE *)a, &ASN1_T61STRING_it); | ||
281 | } | ||
90 | 282 | ||
91 | IMPLEMENT_ASN1_TYPE(ASN1_IA5STRING) | 283 | IMPLEMENT_ASN1_TYPE(ASN1_IA5STRING) |
92 | IMPLEMENT_ASN1_FUNCTIONS(ASN1_IA5STRING) | 284 | |
285 | ASN1_IA5STRING * | ||
286 | d2i_ASN1_IA5STRING(ASN1_IA5STRING **a, const unsigned char **in, long len) | ||
287 | { | ||
288 | return (ASN1_IA5STRING *)ASN1_item_d2i((ASN1_VALUE **)a, in, len, | ||
289 | &ASN1_IA5STRING_it); | ||
290 | } | ||
291 | |||
292 | int | ||
293 | i2d_ASN1_IA5STRING(ASN1_IA5STRING *a, unsigned char **out) | ||
294 | { | ||
295 | return ASN1_item_i2d((ASN1_VALUE *)a, out, &ASN1_IA5STRING_it); | ||
296 | } | ||
297 | |||
298 | ASN1_IA5STRING * | ||
299 | ASN1_IA5STRING_new(void) | ||
300 | { | ||
301 | return (ASN1_IA5STRING *)ASN1_item_new(&ASN1_IA5STRING_it); | ||
302 | } | ||
303 | |||
304 | void | ||
305 | ASN1_IA5STRING_free(ASN1_IA5STRING *a) | ||
306 | { | ||
307 | ASN1_item_free((ASN1_VALUE *)a, &ASN1_IA5STRING_it); | ||
308 | } | ||
93 | 309 | ||
94 | IMPLEMENT_ASN1_TYPE(ASN1_GENERALSTRING) | 310 | IMPLEMENT_ASN1_TYPE(ASN1_GENERALSTRING) |
95 | IMPLEMENT_ASN1_FUNCTIONS(ASN1_GENERALSTRING) | 311 | |
312 | ASN1_GENERALSTRING * | ||
313 | d2i_ASN1_GENERALSTRING(ASN1_GENERALSTRING **a, const unsigned char **in, long len) | ||
314 | { | ||
315 | return (ASN1_GENERALSTRING *)ASN1_item_d2i((ASN1_VALUE **)a, in, len, | ||
316 | &ASN1_GENERALSTRING_it); | ||
317 | } | ||
318 | |||
319 | int | ||
320 | i2d_ASN1_GENERALSTRING(ASN1_GENERALSTRING *a, unsigned char **out) | ||
321 | { | ||
322 | return ASN1_item_i2d((ASN1_VALUE *)a, out, &ASN1_GENERALSTRING_it); | ||
323 | } | ||
324 | |||
325 | ASN1_GENERALSTRING * | ||
326 | ASN1_GENERALSTRING_new(void) | ||
327 | { | ||
328 | return (ASN1_GENERALSTRING *)ASN1_item_new(&ASN1_GENERALSTRING_it); | ||
329 | } | ||
330 | |||
331 | void | ||
332 | ASN1_GENERALSTRING_free(ASN1_GENERALSTRING *a) | ||
333 | { | ||
334 | ASN1_item_free((ASN1_VALUE *)a, &ASN1_GENERALSTRING_it); | ||
335 | } | ||
96 | 336 | ||
97 | IMPLEMENT_ASN1_TYPE(ASN1_UTCTIME) | 337 | IMPLEMENT_ASN1_TYPE(ASN1_UTCTIME) |
98 | IMPLEMENT_ASN1_FUNCTIONS(ASN1_UTCTIME) | 338 | |
339 | ASN1_UTCTIME * | ||
340 | d2i_ASN1_UTCTIME(ASN1_UTCTIME **a, const unsigned char **in, long len) | ||
341 | { | ||
342 | return (ASN1_UTCTIME *)ASN1_item_d2i((ASN1_VALUE **)a, in, len, | ||
343 | &ASN1_UTCTIME_it); | ||
344 | } | ||
345 | |||
346 | int | ||
347 | i2d_ASN1_UTCTIME(ASN1_UTCTIME *a, unsigned char **out) | ||
348 | { | ||
349 | return ASN1_item_i2d((ASN1_VALUE *)a, out, &ASN1_UTCTIME_it); | ||
350 | } | ||
351 | |||
352 | ASN1_UTCTIME * | ||
353 | ASN1_UTCTIME_new(void) | ||
354 | { | ||
355 | return (ASN1_UTCTIME *)ASN1_item_new(&ASN1_UTCTIME_it); | ||
356 | } | ||
357 | |||
358 | void | ||
359 | ASN1_UTCTIME_free(ASN1_UTCTIME *a) | ||
360 | { | ||
361 | ASN1_item_free((ASN1_VALUE *)a, &ASN1_UTCTIME_it); | ||
362 | } | ||
99 | 363 | ||
100 | IMPLEMENT_ASN1_TYPE(ASN1_GENERALIZEDTIME) | 364 | IMPLEMENT_ASN1_TYPE(ASN1_GENERALIZEDTIME) |
101 | IMPLEMENT_ASN1_FUNCTIONS(ASN1_GENERALIZEDTIME) | 365 | |
366 | ASN1_GENERALIZEDTIME * | ||
367 | d2i_ASN1_GENERALIZEDTIME(ASN1_GENERALIZEDTIME **a, const unsigned char **in, long len) | ||
368 | { | ||
369 | return (ASN1_GENERALIZEDTIME *)ASN1_item_d2i((ASN1_VALUE **)a, in, len, | ||
370 | &ASN1_GENERALIZEDTIME_it); | ||
371 | } | ||
372 | |||
373 | int | ||
374 | i2d_ASN1_GENERALIZEDTIME(ASN1_GENERALIZEDTIME *a, unsigned char **out) | ||
375 | { | ||
376 | return ASN1_item_i2d((ASN1_VALUE *)a, out, &ASN1_GENERALIZEDTIME_it); | ||
377 | } | ||
378 | |||
379 | ASN1_GENERALIZEDTIME * | ||
380 | ASN1_GENERALIZEDTIME_new(void) | ||
381 | { | ||
382 | return (ASN1_GENERALIZEDTIME *)ASN1_item_new(&ASN1_GENERALIZEDTIME_it); | ||
383 | } | ||
384 | |||
385 | void | ||
386 | ASN1_GENERALIZEDTIME_free(ASN1_GENERALIZEDTIME *a) | ||
387 | { | ||
388 | ASN1_item_free((ASN1_VALUE *)a, &ASN1_GENERALIZEDTIME_it); | ||
389 | } | ||
102 | 390 | ||
103 | IMPLEMENT_ASN1_TYPE(ASN1_VISIBLESTRING) | 391 | IMPLEMENT_ASN1_TYPE(ASN1_VISIBLESTRING) |
104 | IMPLEMENT_ASN1_FUNCTIONS(ASN1_VISIBLESTRING) | 392 | |
393 | ASN1_VISIBLESTRING * | ||
394 | d2i_ASN1_VISIBLESTRING(ASN1_VISIBLESTRING **a, const unsigned char **in, long len) | ||
395 | { | ||
396 | return (ASN1_VISIBLESTRING *)ASN1_item_d2i((ASN1_VALUE **)a, in, len, | ||
397 | &ASN1_VISIBLESTRING_it); | ||
398 | } | ||
399 | |||
400 | int | ||
401 | i2d_ASN1_VISIBLESTRING(ASN1_VISIBLESTRING *a, unsigned char **out) | ||
402 | { | ||
403 | return ASN1_item_i2d((ASN1_VALUE *)a, out, &ASN1_VISIBLESTRING_it); | ||
404 | } | ||
405 | |||
406 | ASN1_VISIBLESTRING * | ||
407 | ASN1_VISIBLESTRING_new(void) | ||
408 | { | ||
409 | return (ASN1_VISIBLESTRING *)ASN1_item_new(&ASN1_VISIBLESTRING_it); | ||
410 | } | ||
411 | |||
412 | void | ||
413 | ASN1_VISIBLESTRING_free(ASN1_VISIBLESTRING *a) | ||
414 | { | ||
415 | ASN1_item_free((ASN1_VALUE *)a, &ASN1_VISIBLESTRING_it); | ||
416 | } | ||
105 | 417 | ||
106 | IMPLEMENT_ASN1_TYPE(ASN1_UNIVERSALSTRING) | 418 | IMPLEMENT_ASN1_TYPE(ASN1_UNIVERSALSTRING) |
107 | IMPLEMENT_ASN1_FUNCTIONS(ASN1_UNIVERSALSTRING) | 419 | |
420 | ASN1_UNIVERSALSTRING * | ||
421 | d2i_ASN1_UNIVERSALSTRING(ASN1_UNIVERSALSTRING **a, const unsigned char **in, long len) | ||
422 | { | ||
423 | return (ASN1_UNIVERSALSTRING *)ASN1_item_d2i((ASN1_VALUE **)a, in, len, | ||
424 | &ASN1_UNIVERSALSTRING_it); | ||
425 | } | ||
426 | |||
427 | int | ||
428 | i2d_ASN1_UNIVERSALSTRING(ASN1_UNIVERSALSTRING *a, unsigned char **out) | ||
429 | { | ||
430 | return ASN1_item_i2d((ASN1_VALUE *)a, out, &ASN1_UNIVERSALSTRING_it); | ||
431 | } | ||
432 | |||
433 | ASN1_UNIVERSALSTRING * | ||
434 | ASN1_UNIVERSALSTRING_new(void) | ||
435 | { | ||
436 | return (ASN1_UNIVERSALSTRING *)ASN1_item_new(&ASN1_UNIVERSALSTRING_it); | ||
437 | } | ||
438 | |||
439 | void | ||
440 | ASN1_UNIVERSALSTRING_free(ASN1_UNIVERSALSTRING *a) | ||
441 | { | ||
442 | ASN1_item_free((ASN1_VALUE *)a, &ASN1_UNIVERSALSTRING_it); | ||
443 | } | ||
108 | 444 | ||
109 | IMPLEMENT_ASN1_TYPE(ASN1_BMPSTRING) | 445 | IMPLEMENT_ASN1_TYPE(ASN1_BMPSTRING) |
110 | IMPLEMENT_ASN1_FUNCTIONS(ASN1_BMPSTRING) | 446 | |
447 | ASN1_BMPSTRING * | ||
448 | d2i_ASN1_BMPSTRING(ASN1_BMPSTRING **a, const unsigned char **in, long len) | ||
449 | { | ||
450 | return (ASN1_BMPSTRING *)ASN1_item_d2i((ASN1_VALUE **)a, in, len, | ||
451 | &ASN1_BMPSTRING_it); | ||
452 | } | ||
453 | |||
454 | int | ||
455 | i2d_ASN1_BMPSTRING(ASN1_BMPSTRING *a, unsigned char **out) | ||
456 | { | ||
457 | return ASN1_item_i2d((ASN1_VALUE *)a, out, &ASN1_BMPSTRING_it); | ||
458 | } | ||
459 | |||
460 | ASN1_BMPSTRING * | ||
461 | ASN1_BMPSTRING_new(void) | ||
462 | { | ||
463 | return (ASN1_BMPSTRING *)ASN1_item_new(&ASN1_BMPSTRING_it); | ||
464 | } | ||
465 | |||
466 | void | ||
467 | ASN1_BMPSTRING_free(ASN1_BMPSTRING *a) | ||
468 | { | ||
469 | ASN1_item_free((ASN1_VALUE *)a, &ASN1_BMPSTRING_it); | ||
470 | } | ||
111 | 471 | ||
112 | IMPLEMENT_ASN1_TYPE(ASN1_ANY) | 472 | IMPLEMENT_ASN1_TYPE(ASN1_ANY) |
113 | 473 | ||