summaryrefslogtreecommitdiff
path: root/src/lib/libcrypto/asn1/tasn_typ.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/libcrypto/asn1/tasn_typ.c')
-rw-r--r--src/lib/libcrypto/asn1/tasn_typ.c799
1 files changed, 0 insertions, 799 deletions
diff --git a/src/lib/libcrypto/asn1/tasn_typ.c b/src/lib/libcrypto/asn1/tasn_typ.c
deleted file mode 100644
index 542713aa09..0000000000
--- a/src/lib/libcrypto/asn1/tasn_typ.c
+++ /dev/null
@@ -1,799 +0,0 @@
1/* $OpenBSD: tasn_typ.c,v 1.13 2015/07/24 15:09:52 jsing Exp $ */
2/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL
3 * project 2000.
4 */
5/* ====================================================================
6 * Copyright (c) 2000 The OpenSSL Project. All rights reserved.
7 *
8 * Redistribution and use in source and binary forms, with or without
9 * modification, are permitted provided that the following conditions
10 * are met:
11 *
12 * 1. Redistributions of source code must retain the above copyright
13 * notice, this list of conditions and the following disclaimer.
14 *
15 * 2. Redistributions in binary form must reproduce the above copyright
16 * notice, this list of conditions and the following disclaimer in
17 * the documentation and/or other materials provided with the
18 * distribution.
19 *
20 * 3. All advertising materials mentioning features or use of this
21 * software must display the following acknowledgment:
22 * "This product includes software developed by the OpenSSL Project
23 * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)"
24 *
25 * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
26 * endorse or promote products derived from this software without
27 * prior written permission. For written permission, please contact
28 * licensing@OpenSSL.org.
29 *
30 * 5. Products derived from this software may not be called "OpenSSL"
31 * nor may "OpenSSL" appear in their names without prior written
32 * permission of the OpenSSL Project.
33 *
34 * 6. Redistributions of any form whatsoever must retain the following
35 * acknowledgment:
36 * "This product includes software developed by the OpenSSL Project
37 * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)"
38 *
39 * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
40 * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
41 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
42 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
43 * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
44 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
45 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
46 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
47 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
48 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
49 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
50 * OF THE POSSIBILITY OF SUCH DAMAGE.
51 * ====================================================================
52 *
53 * This product includes cryptographic software written by Eric Young
54 * (eay@cryptsoft.com). This product includes software written by Tim
55 * Hudson (tjh@cryptsoft.com).
56 *
57 */
58#include <stdio.h>
59#include <openssl/asn1.h>
60#include <openssl/asn1t.h>
61
62/* Declarations for string types */
63
64const ASN1_ITEM ASN1_INTEGER_it = {
65 .itype = ASN1_ITYPE_PRIMITIVE,
66 .utype = V_ASN1_INTEGER,
67 .sname = "ASN1_INTEGER",
68};
69
70ASN1_INTEGER *
71d2i_ASN1_INTEGER(ASN1_INTEGER **a, const unsigned char **in, long len)
72{
73 return (ASN1_INTEGER *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
74 &ASN1_INTEGER_it);
75}
76
77int
78i2d_ASN1_INTEGER(ASN1_INTEGER *a, unsigned char **out)
79{
80 return ASN1_item_i2d((ASN1_VALUE *)a, out, &ASN1_INTEGER_it);
81}
82
83ASN1_INTEGER *
84ASN1_INTEGER_new(void)
85{
86 return (ASN1_INTEGER *)ASN1_item_new(&ASN1_INTEGER_it);
87}
88
89void
90ASN1_INTEGER_free(ASN1_INTEGER *a)
91{
92 ASN1_item_free((ASN1_VALUE *)a, &ASN1_INTEGER_it);
93}
94
95
96const ASN1_ITEM ASN1_ENUMERATED_it = {
97 .itype = ASN1_ITYPE_PRIMITIVE,
98 .utype = V_ASN1_ENUMERATED,
99 .sname = "ASN1_ENUMERATED",
100};
101
102ASN1_ENUMERATED *
103d2i_ASN1_ENUMERATED(ASN1_ENUMERATED **a, const unsigned char **in, long len)
104{
105 return (ASN1_ENUMERATED *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
106 &ASN1_ENUMERATED_it);
107}
108
109int
110i2d_ASN1_ENUMERATED(ASN1_ENUMERATED *a, unsigned char **out)
111{
112 return ASN1_item_i2d((ASN1_VALUE *)a, out, &ASN1_ENUMERATED_it);
113}
114
115ASN1_ENUMERATED *
116ASN1_ENUMERATED_new(void)
117{
118 return (ASN1_ENUMERATED *)ASN1_item_new(&ASN1_ENUMERATED_it);
119}
120
121void
122ASN1_ENUMERATED_free(ASN1_ENUMERATED *a)
123{
124 ASN1_item_free((ASN1_VALUE *)a, &ASN1_ENUMERATED_it);
125}
126
127
128const ASN1_ITEM ASN1_BIT_STRING_it = {
129 .itype = ASN1_ITYPE_PRIMITIVE,
130 .utype = V_ASN1_BIT_STRING,
131 .sname = "ASN1_BIT_STRING",
132};
133
134ASN1_BIT_STRING *
135d2i_ASN1_BIT_STRING(ASN1_BIT_STRING **a, const unsigned char **in, long len)
136{
137 return (ASN1_BIT_STRING *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
138 &ASN1_BIT_STRING_it);
139}
140
141int
142i2d_ASN1_BIT_STRING(ASN1_BIT_STRING *a, unsigned char **out)
143{
144 return ASN1_item_i2d((ASN1_VALUE *)a, out, &ASN1_BIT_STRING_it);
145}
146
147ASN1_BIT_STRING *
148ASN1_BIT_STRING_new(void)
149{
150 return (ASN1_BIT_STRING *)ASN1_item_new(&ASN1_BIT_STRING_it);
151}
152
153void
154ASN1_BIT_STRING_free(ASN1_BIT_STRING *a)
155{
156 ASN1_item_free((ASN1_VALUE *)a, &ASN1_BIT_STRING_it);
157}
158
159
160const ASN1_ITEM ASN1_OCTET_STRING_it = {
161 .itype = ASN1_ITYPE_PRIMITIVE,
162 .utype = V_ASN1_OCTET_STRING,
163 .sname = "ASN1_OCTET_STRING",
164};
165
166ASN1_OCTET_STRING *
167d2i_ASN1_OCTET_STRING(ASN1_OCTET_STRING **a, const unsigned char **in, long len)
168{
169 return (ASN1_OCTET_STRING *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
170 &ASN1_OCTET_STRING_it);
171}
172
173int
174i2d_ASN1_OCTET_STRING(ASN1_OCTET_STRING *a, unsigned char **out)
175{
176 return ASN1_item_i2d((ASN1_VALUE *)a, out, &ASN1_OCTET_STRING_it);
177}
178
179ASN1_OCTET_STRING *
180ASN1_OCTET_STRING_new(void)
181{
182 return (ASN1_OCTET_STRING *)ASN1_item_new(&ASN1_OCTET_STRING_it);
183}
184
185void
186ASN1_OCTET_STRING_free(ASN1_OCTET_STRING *a)
187{
188 ASN1_item_free((ASN1_VALUE *)a, &ASN1_OCTET_STRING_it);
189}
190
191
192const ASN1_ITEM ASN1_NULL_it = {
193 .itype = ASN1_ITYPE_PRIMITIVE,
194 .utype = V_ASN1_NULL,
195 .sname = "ASN1_NULL",
196};
197
198ASN1_NULL *
199d2i_ASN1_NULL(ASN1_NULL **a, const unsigned char **in, long len)
200{
201 return (ASN1_NULL *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
202 &ASN1_NULL_it);
203}
204
205int
206i2d_ASN1_NULL(ASN1_NULL *a, unsigned char **out)
207{
208 return ASN1_item_i2d((ASN1_VALUE *)a, out, &ASN1_NULL_it);
209}
210
211ASN1_NULL *
212ASN1_NULL_new(void)
213{
214 return (ASN1_NULL *)ASN1_item_new(&ASN1_NULL_it);
215}
216
217void
218ASN1_NULL_free(ASN1_NULL *a)
219{
220 ASN1_item_free((ASN1_VALUE *)a, &ASN1_NULL_it);
221}
222
223
224const ASN1_ITEM ASN1_OBJECT_it = {
225 .itype = ASN1_ITYPE_PRIMITIVE,
226 .utype = V_ASN1_OBJECT,
227 .sname = "ASN1_OBJECT",
228};
229
230
231const ASN1_ITEM ASN1_UTF8STRING_it = {
232 .itype = ASN1_ITYPE_PRIMITIVE,
233 .utype = V_ASN1_UTF8STRING,
234 .sname = "ASN1_UTF8STRING",
235};
236
237ASN1_UTF8STRING *
238d2i_ASN1_UTF8STRING(ASN1_UTF8STRING **a, const unsigned char **in, long len)
239{
240 return (ASN1_UTF8STRING *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
241 &ASN1_UTF8STRING_it);
242}
243
244int
245i2d_ASN1_UTF8STRING(ASN1_UTF8STRING *a, unsigned char **out)
246{
247 return ASN1_item_i2d((ASN1_VALUE *)a, out, &ASN1_UTF8STRING_it);
248}
249
250ASN1_UTF8STRING *
251ASN1_UTF8STRING_new(void)
252{
253 return (ASN1_UTF8STRING *)ASN1_item_new(&ASN1_UTF8STRING_it);
254}
255
256void
257ASN1_UTF8STRING_free(ASN1_UTF8STRING *a)
258{
259 ASN1_item_free((ASN1_VALUE *)a, &ASN1_UTF8STRING_it);
260}
261
262
263const ASN1_ITEM ASN1_PRINTABLESTRING_it = {
264 .itype = ASN1_ITYPE_PRIMITIVE,
265 .utype = V_ASN1_PRINTABLESTRING,
266 .sname = "ASN1_PRINTABLESTRING",
267};
268
269ASN1_PRINTABLESTRING *
270d2i_ASN1_PRINTABLESTRING(ASN1_PRINTABLESTRING **a, const unsigned char **in,
271 long len)
272{
273 return (ASN1_PRINTABLESTRING *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
274 &ASN1_PRINTABLESTRING_it);
275}
276
277int
278i2d_ASN1_PRINTABLESTRING(ASN1_PRINTABLESTRING *a, unsigned char **out)
279{
280 return ASN1_item_i2d((ASN1_VALUE *)a, out, &ASN1_PRINTABLESTRING_it);
281}
282
283ASN1_PRINTABLESTRING *
284ASN1_PRINTABLESTRING_new(void)
285{
286 return (ASN1_PRINTABLESTRING *)ASN1_item_new(&ASN1_PRINTABLESTRING_it);
287}
288
289void
290ASN1_PRINTABLESTRING_free(ASN1_PRINTABLESTRING *a)
291{
292 ASN1_item_free((ASN1_VALUE *)a, &ASN1_PRINTABLESTRING_it);
293}
294
295
296const ASN1_ITEM ASN1_T61STRING_it = {
297 .itype = ASN1_ITYPE_PRIMITIVE,
298 .utype = V_ASN1_T61STRING,
299 .sname = "ASN1_T61STRING",
300};
301
302ASN1_T61STRING *
303d2i_ASN1_T61STRING(ASN1_T61STRING **a, const unsigned char **in, long len)
304{
305 return (ASN1_T61STRING *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
306 &ASN1_T61STRING_it);
307}
308
309int
310i2d_ASN1_T61STRING(ASN1_T61STRING *a, unsigned char **out)
311{
312 return ASN1_item_i2d((ASN1_VALUE *)a, out, &ASN1_T61STRING_it);
313}
314
315ASN1_T61STRING *
316ASN1_T61STRING_new(void)
317{
318 return (ASN1_T61STRING *)ASN1_item_new(&ASN1_T61STRING_it);
319}
320
321void
322ASN1_T61STRING_free(ASN1_T61STRING *a)
323{
324 ASN1_item_free((ASN1_VALUE *)a, &ASN1_T61STRING_it);
325}
326
327
328const ASN1_ITEM ASN1_IA5STRING_it = {
329 .itype = ASN1_ITYPE_PRIMITIVE,
330 .utype = V_ASN1_IA5STRING,
331 .sname = "ASN1_IA5STRING",
332};
333
334ASN1_IA5STRING *
335d2i_ASN1_IA5STRING(ASN1_IA5STRING **a, const unsigned char **in, long len)
336{
337 return (ASN1_IA5STRING *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
338 &ASN1_IA5STRING_it);
339}
340
341int
342i2d_ASN1_IA5STRING(ASN1_IA5STRING *a, unsigned char **out)
343{
344 return ASN1_item_i2d((ASN1_VALUE *)a, out, &ASN1_IA5STRING_it);
345}
346
347ASN1_IA5STRING *
348ASN1_IA5STRING_new(void)
349{
350 return (ASN1_IA5STRING *)ASN1_item_new(&ASN1_IA5STRING_it);
351}
352
353void
354ASN1_IA5STRING_free(ASN1_IA5STRING *a)
355{
356 ASN1_item_free((ASN1_VALUE *)a, &ASN1_IA5STRING_it);
357}
358
359
360const ASN1_ITEM ASN1_GENERALSTRING_it = {
361 .itype = ASN1_ITYPE_PRIMITIVE,
362 .utype = V_ASN1_GENERALSTRING,
363 .sname = "ASN1_GENERALSTRING",
364};
365
366ASN1_GENERALSTRING *
367d2i_ASN1_GENERALSTRING(ASN1_GENERALSTRING **a, const unsigned char **in,
368 long len)
369{
370 return (ASN1_GENERALSTRING *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
371 &ASN1_GENERALSTRING_it);
372}
373
374int
375i2d_ASN1_GENERALSTRING(ASN1_GENERALSTRING *a, unsigned char **out)
376{
377 return ASN1_item_i2d((ASN1_VALUE *)a, out, &ASN1_GENERALSTRING_it);
378}
379
380ASN1_GENERALSTRING *
381ASN1_GENERALSTRING_new(void)
382{
383 return (ASN1_GENERALSTRING *)ASN1_item_new(&ASN1_GENERALSTRING_it);
384}
385
386void
387ASN1_GENERALSTRING_free(ASN1_GENERALSTRING *a)
388{
389 ASN1_item_free((ASN1_VALUE *)a, &ASN1_GENERALSTRING_it);
390}
391
392
393const ASN1_ITEM ASN1_UTCTIME_it = {
394 .itype = ASN1_ITYPE_PRIMITIVE,
395 .utype = V_ASN1_UTCTIME,
396 .sname = "ASN1_UTCTIME",
397};
398
399ASN1_UTCTIME *
400d2i_ASN1_UTCTIME(ASN1_UTCTIME **a, const unsigned char **in, long len)
401{
402 return (ASN1_UTCTIME *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
403 &ASN1_UTCTIME_it);
404}
405
406int
407i2d_ASN1_UTCTIME(ASN1_UTCTIME *a, unsigned char **out)
408{
409 return ASN1_item_i2d((ASN1_VALUE *)a, out, &ASN1_UTCTIME_it);
410}
411
412ASN1_UTCTIME *
413ASN1_UTCTIME_new(void)
414{
415 return (ASN1_UTCTIME *)ASN1_item_new(&ASN1_UTCTIME_it);
416}
417
418void
419ASN1_UTCTIME_free(ASN1_UTCTIME *a)
420{
421 ASN1_item_free((ASN1_VALUE *)a, &ASN1_UTCTIME_it);
422}
423
424
425const ASN1_ITEM ASN1_GENERALIZEDTIME_it = {
426 .itype = ASN1_ITYPE_PRIMITIVE,
427 .utype = V_ASN1_GENERALIZEDTIME,
428 .sname = "ASN1_GENERALIZEDTIME",
429};
430
431ASN1_GENERALIZEDTIME *
432d2i_ASN1_GENERALIZEDTIME(ASN1_GENERALIZEDTIME **a, const unsigned char **in,
433 long len)
434{
435 return (ASN1_GENERALIZEDTIME *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
436 &ASN1_GENERALIZEDTIME_it);
437}
438
439int
440i2d_ASN1_GENERALIZEDTIME(ASN1_GENERALIZEDTIME *a, unsigned char **out)
441{
442 return ASN1_item_i2d((ASN1_VALUE *)a, out, &ASN1_GENERALIZEDTIME_it);
443}
444
445ASN1_GENERALIZEDTIME *
446ASN1_GENERALIZEDTIME_new(void)
447{
448 return (ASN1_GENERALIZEDTIME *)ASN1_item_new(&ASN1_GENERALIZEDTIME_it);
449}
450
451void
452ASN1_GENERALIZEDTIME_free(ASN1_GENERALIZEDTIME *a)
453{
454 ASN1_item_free((ASN1_VALUE *)a, &ASN1_GENERALIZEDTIME_it);
455}
456
457
458const ASN1_ITEM ASN1_VISIBLESTRING_it = {
459 .itype = ASN1_ITYPE_PRIMITIVE,
460 .utype = V_ASN1_VISIBLESTRING,
461 .sname = "ASN1_VISIBLESTRING",
462};
463
464ASN1_VISIBLESTRING *
465d2i_ASN1_VISIBLESTRING(ASN1_VISIBLESTRING **a, const unsigned char **in,
466 long len)
467{
468 return (ASN1_VISIBLESTRING *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
469 &ASN1_VISIBLESTRING_it);
470}
471
472int
473i2d_ASN1_VISIBLESTRING(ASN1_VISIBLESTRING *a, unsigned char **out)
474{
475 return ASN1_item_i2d((ASN1_VALUE *)a, out, &ASN1_VISIBLESTRING_it);
476}
477
478ASN1_VISIBLESTRING *
479ASN1_VISIBLESTRING_new(void)
480{
481 return (ASN1_VISIBLESTRING *)ASN1_item_new(&ASN1_VISIBLESTRING_it);
482}
483
484void
485ASN1_VISIBLESTRING_free(ASN1_VISIBLESTRING *a)
486{
487 ASN1_item_free((ASN1_VALUE *)a, &ASN1_VISIBLESTRING_it);
488}
489
490
491const ASN1_ITEM ASN1_UNIVERSALSTRING_it = {
492 .itype = ASN1_ITYPE_PRIMITIVE,
493 .utype = V_ASN1_UNIVERSALSTRING,
494 .sname = "ASN1_UNIVERSALSTRING",
495};
496
497ASN1_UNIVERSALSTRING *
498d2i_ASN1_UNIVERSALSTRING(ASN1_UNIVERSALSTRING **a, const unsigned char **in,
499 long len)
500{
501 return (ASN1_UNIVERSALSTRING *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
502 &ASN1_UNIVERSALSTRING_it);
503}
504
505int
506i2d_ASN1_UNIVERSALSTRING(ASN1_UNIVERSALSTRING *a, unsigned char **out)
507{
508 return ASN1_item_i2d((ASN1_VALUE *)a, out, &ASN1_UNIVERSALSTRING_it);
509}
510
511ASN1_UNIVERSALSTRING *
512ASN1_UNIVERSALSTRING_new(void)
513{
514 return (ASN1_UNIVERSALSTRING *)ASN1_item_new(&ASN1_UNIVERSALSTRING_it);
515}
516
517void
518ASN1_UNIVERSALSTRING_free(ASN1_UNIVERSALSTRING *a)
519{
520 ASN1_item_free((ASN1_VALUE *)a, &ASN1_UNIVERSALSTRING_it);
521}
522
523
524const ASN1_ITEM ASN1_BMPSTRING_it = {
525 .itype = ASN1_ITYPE_PRIMITIVE,
526 .utype = V_ASN1_BMPSTRING,
527 .sname = "ASN1_BMPSTRING",
528};
529
530ASN1_BMPSTRING *
531d2i_ASN1_BMPSTRING(ASN1_BMPSTRING **a, const unsigned char **in, long len)
532{
533 return (ASN1_BMPSTRING *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
534 &ASN1_BMPSTRING_it);
535}
536
537int
538i2d_ASN1_BMPSTRING(ASN1_BMPSTRING *a, unsigned char **out)
539{
540 return ASN1_item_i2d((ASN1_VALUE *)a, out, &ASN1_BMPSTRING_it);
541}
542
543ASN1_BMPSTRING *
544ASN1_BMPSTRING_new(void)
545{
546 return (ASN1_BMPSTRING *)ASN1_item_new(&ASN1_BMPSTRING_it);
547}
548
549void
550ASN1_BMPSTRING_free(ASN1_BMPSTRING *a)
551{
552 ASN1_item_free((ASN1_VALUE *)a, &ASN1_BMPSTRING_it);
553}
554
555
556const ASN1_ITEM ASN1_ANY_it = {
557 .itype = ASN1_ITYPE_PRIMITIVE,
558 .utype = V_ASN1_ANY,
559 .sname = "ASN1_ANY",
560};
561
562/* Just swallow an ASN1_SEQUENCE in an ASN1_STRING */
563
564const ASN1_ITEM ASN1_SEQUENCE_it = {
565 .itype = ASN1_ITYPE_PRIMITIVE,
566 .utype = V_ASN1_SEQUENCE,
567 .sname = "ASN1_SEQUENCE",
568};
569
570
571ASN1_TYPE *
572d2i_ASN1_TYPE(ASN1_TYPE **a, const unsigned char **in, long len)
573{
574 return (ASN1_TYPE *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
575 &ASN1_ANY_it);
576}
577
578int
579i2d_ASN1_TYPE(ASN1_TYPE *a, unsigned char **out)
580{
581 return ASN1_item_i2d((ASN1_VALUE *)a, out, &ASN1_ANY_it);
582}
583
584ASN1_TYPE *
585ASN1_TYPE_new(void)
586{
587 return (ASN1_TYPE *)ASN1_item_new(&ASN1_ANY_it);
588}
589
590void
591ASN1_TYPE_free(ASN1_TYPE *a)
592{
593 ASN1_item_free((ASN1_VALUE *)a, &ASN1_ANY_it);
594}
595
596/* Multistring types */
597
598
599const ASN1_ITEM ASN1_PRINTABLE_it = {
600 .itype = ASN1_ITYPE_MSTRING,
601 .utype = B_ASN1_PRINTABLE,
602 .templates = NULL,
603 .tcount = 0,
604 .funcs = NULL,
605 .size = sizeof(ASN1_STRING),
606 .sname = "ASN1_PRINTABLE",
607};
608
609ASN1_STRING *
610d2i_ASN1_PRINTABLE(ASN1_STRING **a, const unsigned char **in, long len)
611{
612 return (ASN1_STRING *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
613 &ASN1_PRINTABLE_it);
614}
615
616int
617i2d_ASN1_PRINTABLE(ASN1_STRING *a, unsigned char **out)
618{
619 return ASN1_item_i2d((ASN1_VALUE *)a, out, &ASN1_PRINTABLE_it);
620}
621
622ASN1_STRING *
623ASN1_PRINTABLE_new(void)
624{
625 return (ASN1_STRING *)ASN1_item_new(&ASN1_PRINTABLE_it);
626}
627
628void
629ASN1_PRINTABLE_free(ASN1_STRING *a)
630{
631 ASN1_item_free((ASN1_VALUE *)a, &ASN1_PRINTABLE_it);
632}
633
634
635const ASN1_ITEM DISPLAYTEXT_it = {
636 .itype = ASN1_ITYPE_MSTRING,
637 .utype = B_ASN1_DISPLAYTEXT,
638 .templates = NULL,
639 .tcount = 0,
640 .funcs = NULL,
641 .size = sizeof(ASN1_STRING),
642 .sname = "DISPLAYTEXT",
643};
644
645ASN1_STRING *
646d2i_DISPLAYTEXT(ASN1_STRING **a, const unsigned char **in, long len)
647{
648 return (ASN1_STRING *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
649 &DISPLAYTEXT_it);
650}
651
652int
653i2d_DISPLAYTEXT(ASN1_STRING *a, unsigned char **out)
654{
655 return ASN1_item_i2d((ASN1_VALUE *)a, out, &DISPLAYTEXT_it);
656}
657
658ASN1_STRING *
659DISPLAYTEXT_new(void)
660{
661 return (ASN1_STRING *)ASN1_item_new(&DISPLAYTEXT_it);
662}
663
664void
665DISPLAYTEXT_free(ASN1_STRING *a)
666{
667 ASN1_item_free((ASN1_VALUE *)a, &DISPLAYTEXT_it);
668}
669
670
671const ASN1_ITEM DIRECTORYSTRING_it = {
672 .itype = ASN1_ITYPE_MSTRING,
673 .utype = B_ASN1_DIRECTORYSTRING,
674 .templates = NULL,
675 .tcount = 0,
676 .funcs = NULL,
677 .size = sizeof(ASN1_STRING),
678 .sname = "DIRECTORYSTRING",
679};
680
681ASN1_STRING *
682d2i_DIRECTORYSTRING(ASN1_STRING **a, const unsigned char **in, long len)
683{
684 return (ASN1_STRING *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
685 &DIRECTORYSTRING_it);
686}
687
688int
689i2d_DIRECTORYSTRING(ASN1_STRING *a, unsigned char **out)
690{
691 return ASN1_item_i2d((ASN1_VALUE *)a, out, &DIRECTORYSTRING_it);
692}
693
694ASN1_STRING *
695DIRECTORYSTRING_new(void)
696{
697 return (ASN1_STRING *)ASN1_item_new(&DIRECTORYSTRING_it);
698}
699
700void
701DIRECTORYSTRING_free(ASN1_STRING *a)
702{
703 ASN1_item_free((ASN1_VALUE *)a, &DIRECTORYSTRING_it);
704}
705
706/* Three separate BOOLEAN type: normal, DEFAULT TRUE and DEFAULT FALSE */
707
708const ASN1_ITEM ASN1_BOOLEAN_it = {
709 .itype = ASN1_ITYPE_PRIMITIVE,
710 .utype = V_ASN1_BOOLEAN,
711 .size = -1,
712 .sname = "ASN1_BOOLEAN",
713};
714
715const ASN1_ITEM ASN1_TBOOLEAN_it = {
716 .itype = ASN1_ITYPE_PRIMITIVE,
717 .utype = V_ASN1_BOOLEAN,
718 .size = 1,
719 .sname = "ASN1_TBOOLEAN",
720};
721
722const ASN1_ITEM ASN1_FBOOLEAN_it = {
723 .itype = ASN1_ITYPE_PRIMITIVE,
724 .utype = V_ASN1_BOOLEAN,
725 .size = 0,
726 .sname = "ASN1_FBOOLEAN",
727};
728
729/* Special, OCTET STRING with indefinite length constructed support */
730
731const ASN1_ITEM ASN1_OCTET_STRING_NDEF_it = {
732 .itype = ASN1_ITYPE_PRIMITIVE,
733 .utype = V_ASN1_OCTET_STRING,
734 .size = ASN1_TFLG_NDEF,
735 .sname = "ASN1_OCTET_STRING_NDEF",
736};
737
738static const ASN1_TEMPLATE ASN1_SEQUENCE_ANY_item_tt = {
739 .flags = ASN1_TFLG_SEQUENCE_OF,
740 .tag = 0,
741 .offset = 0,
742 .field_name = "ASN1_SEQUENCE_ANY",
743 .item = &ASN1_ANY_it,
744};
745
746const ASN1_ITEM ASN1_SEQUENCE_ANY_it = {
747 .itype = ASN1_ITYPE_PRIMITIVE,
748 .utype = -1,
749 .templates = &ASN1_SEQUENCE_ANY_item_tt,
750 .tcount = 0,
751 .funcs = NULL,
752 .size = 0,
753 .sname = "ASN1_SEQUENCE_ANY",
754};
755
756static const ASN1_TEMPLATE ASN1_SET_ANY_item_tt = {
757 .flags = ASN1_TFLG_SET_OF,
758 .tag = 0,
759 .offset = 0,
760 .field_name = "ASN1_SET_ANY",
761 .item = &ASN1_ANY_it,
762};
763
764const ASN1_ITEM ASN1_SET_ANY_it = {
765 .itype = ASN1_ITYPE_PRIMITIVE,
766 .utype = -1,
767 .templates = &ASN1_SET_ANY_item_tt,
768 .tcount = 0,
769 .funcs = NULL,
770 .size = 0,
771 .sname = "ASN1_SET_ANY",
772};
773
774
775ASN1_SEQUENCE_ANY *
776d2i_ASN1_SEQUENCE_ANY(ASN1_SEQUENCE_ANY **a, const unsigned char **in, long len)
777{
778 return (ASN1_SEQUENCE_ANY *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
779 &ASN1_SEQUENCE_ANY_it);
780}
781
782int
783i2d_ASN1_SEQUENCE_ANY(const ASN1_SEQUENCE_ANY *a, unsigned char **out)
784{
785 return ASN1_item_i2d((ASN1_VALUE *)a, out, &ASN1_SEQUENCE_ANY_it);
786}
787
788ASN1_SEQUENCE_ANY *
789d2i_ASN1_SET_ANY(ASN1_SEQUENCE_ANY **a, const unsigned char **in, long len)
790{
791 return (ASN1_SEQUENCE_ANY *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
792 &ASN1_SET_ANY_it);
793}
794
795int
796i2d_ASN1_SET_ANY(const ASN1_SEQUENCE_ANY *a, unsigned char **out)
797{
798 return ASN1_item_i2d((ASN1_VALUE *)a, out, &ASN1_SET_ANY_it);
799}