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.c739
1 files changed, 0 insertions, 739 deletions
diff --git a/src/lib/libcrypto/asn1/tasn_typ.c b/src/lib/libcrypto/asn1/tasn_typ.c
deleted file mode 100644
index 0f7fcb0e03..0000000000
--- a/src/lib/libcrypto/asn1/tasn_typ.c
+++ /dev/null
@@ -1,739 +0,0 @@
1/* $OpenBSD: tasn_typ.c,v 1.20 2024/07/08 16:24:22 beck 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_NULL_it = {
65 .itype = ASN1_ITYPE_PRIMITIVE,
66 .utype = V_ASN1_NULL,
67 .sname = "ASN1_NULL",
68};
69LCRYPTO_ALIAS(ASN1_NULL_it);
70
71ASN1_NULL *
72d2i_ASN1_NULL(ASN1_NULL **a, const unsigned char **in, long len)
73{
74 return (ASN1_NULL *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
75 &ASN1_NULL_it);
76}
77LCRYPTO_ALIAS(d2i_ASN1_NULL);
78
79int
80i2d_ASN1_NULL(ASN1_NULL *a, unsigned char **out)
81{
82 return ASN1_item_i2d((ASN1_VALUE *)a, out, &ASN1_NULL_it);
83}
84LCRYPTO_ALIAS(i2d_ASN1_NULL);
85
86ASN1_NULL *
87ASN1_NULL_new(void)
88{
89 return (ASN1_NULL *)ASN1_item_new(&ASN1_NULL_it);
90}
91LCRYPTO_ALIAS(ASN1_NULL_new);
92
93void
94ASN1_NULL_free(ASN1_NULL *a)
95{
96 ASN1_item_free((ASN1_VALUE *)a, &ASN1_NULL_it);
97}
98LCRYPTO_ALIAS(ASN1_NULL_free);
99
100
101const ASN1_ITEM ASN1_UTF8STRING_it = {
102 .itype = ASN1_ITYPE_PRIMITIVE,
103 .utype = V_ASN1_UTF8STRING,
104 .sname = "ASN1_UTF8STRING",
105};
106LCRYPTO_ALIAS(ASN1_UTF8STRING_it);
107
108ASN1_UTF8STRING *
109d2i_ASN1_UTF8STRING(ASN1_UTF8STRING **a, const unsigned char **in, long len)
110{
111 return (ASN1_UTF8STRING *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
112 &ASN1_UTF8STRING_it);
113}
114LCRYPTO_ALIAS(d2i_ASN1_UTF8STRING);
115
116int
117i2d_ASN1_UTF8STRING(ASN1_UTF8STRING *a, unsigned char **out)
118{
119 return ASN1_item_i2d((ASN1_VALUE *)a, out, &ASN1_UTF8STRING_it);
120}
121LCRYPTO_ALIAS(i2d_ASN1_UTF8STRING);
122
123ASN1_UTF8STRING *
124ASN1_UTF8STRING_new(void)
125{
126 return (ASN1_UTF8STRING *)ASN1_item_new(&ASN1_UTF8STRING_it);
127}
128LCRYPTO_ALIAS(ASN1_UTF8STRING_new);
129
130void
131ASN1_UTF8STRING_free(ASN1_UTF8STRING *a)
132{
133 ASN1_item_free((ASN1_VALUE *)a, &ASN1_UTF8STRING_it);
134}
135LCRYPTO_ALIAS(ASN1_UTF8STRING_free);
136
137
138const ASN1_ITEM ASN1_PRINTABLESTRING_it = {
139 .itype = ASN1_ITYPE_PRIMITIVE,
140 .utype = V_ASN1_PRINTABLESTRING,
141 .sname = "ASN1_PRINTABLESTRING",
142};
143LCRYPTO_ALIAS(ASN1_PRINTABLESTRING_it);
144
145ASN1_PRINTABLESTRING *
146d2i_ASN1_PRINTABLESTRING(ASN1_PRINTABLESTRING **a, const unsigned char **in,
147 long len)
148{
149 return (ASN1_PRINTABLESTRING *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
150 &ASN1_PRINTABLESTRING_it);
151}
152LCRYPTO_ALIAS(d2i_ASN1_PRINTABLESTRING);
153
154int
155i2d_ASN1_PRINTABLESTRING(ASN1_PRINTABLESTRING *a, unsigned char **out)
156{
157 return ASN1_item_i2d((ASN1_VALUE *)a, out, &ASN1_PRINTABLESTRING_it);
158}
159LCRYPTO_ALIAS(i2d_ASN1_PRINTABLESTRING);
160
161ASN1_PRINTABLESTRING *
162ASN1_PRINTABLESTRING_new(void)
163{
164 return (ASN1_PRINTABLESTRING *)ASN1_item_new(&ASN1_PRINTABLESTRING_it);
165}
166LCRYPTO_ALIAS(ASN1_PRINTABLESTRING_new);
167
168void
169ASN1_PRINTABLESTRING_free(ASN1_PRINTABLESTRING *a)
170{
171 ASN1_item_free((ASN1_VALUE *)a, &ASN1_PRINTABLESTRING_it);
172}
173LCRYPTO_ALIAS(ASN1_PRINTABLESTRING_free);
174
175
176const ASN1_ITEM ASN1_T61STRING_it = {
177 .itype = ASN1_ITYPE_PRIMITIVE,
178 .utype = V_ASN1_T61STRING,
179 .sname = "ASN1_T61STRING",
180};
181LCRYPTO_ALIAS(ASN1_T61STRING_it);
182
183ASN1_T61STRING *
184d2i_ASN1_T61STRING(ASN1_T61STRING **a, const unsigned char **in, long len)
185{
186 return (ASN1_T61STRING *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
187 &ASN1_T61STRING_it);
188}
189LCRYPTO_ALIAS(d2i_ASN1_T61STRING);
190
191int
192i2d_ASN1_T61STRING(ASN1_T61STRING *a, unsigned char **out)
193{
194 return ASN1_item_i2d((ASN1_VALUE *)a, out, &ASN1_T61STRING_it);
195}
196LCRYPTO_ALIAS(i2d_ASN1_T61STRING);
197
198ASN1_T61STRING *
199ASN1_T61STRING_new(void)
200{
201 return (ASN1_T61STRING *)ASN1_item_new(&ASN1_T61STRING_it);
202}
203LCRYPTO_ALIAS(ASN1_T61STRING_new);
204
205void
206ASN1_T61STRING_free(ASN1_T61STRING *a)
207{
208 ASN1_item_free((ASN1_VALUE *)a, &ASN1_T61STRING_it);
209}
210LCRYPTO_ALIAS(ASN1_T61STRING_free);
211
212
213const ASN1_ITEM ASN1_IA5STRING_it = {
214 .itype = ASN1_ITYPE_PRIMITIVE,
215 .utype = V_ASN1_IA5STRING,
216 .sname = "ASN1_IA5STRING",
217};
218LCRYPTO_ALIAS(ASN1_IA5STRING_it);
219
220ASN1_IA5STRING *
221d2i_ASN1_IA5STRING(ASN1_IA5STRING **a, const unsigned char **in, long len)
222{
223 return (ASN1_IA5STRING *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
224 &ASN1_IA5STRING_it);
225}
226LCRYPTO_ALIAS(d2i_ASN1_IA5STRING);
227
228int
229i2d_ASN1_IA5STRING(ASN1_IA5STRING *a, unsigned char **out)
230{
231 return ASN1_item_i2d((ASN1_VALUE *)a, out, &ASN1_IA5STRING_it);
232}
233LCRYPTO_ALIAS(i2d_ASN1_IA5STRING);
234
235ASN1_IA5STRING *
236ASN1_IA5STRING_new(void)
237{
238 return (ASN1_IA5STRING *)ASN1_item_new(&ASN1_IA5STRING_it);
239}
240LCRYPTO_ALIAS(ASN1_IA5STRING_new);
241
242void
243ASN1_IA5STRING_free(ASN1_IA5STRING *a)
244{
245 ASN1_item_free((ASN1_VALUE *)a, &ASN1_IA5STRING_it);
246}
247LCRYPTO_ALIAS(ASN1_IA5STRING_free);
248
249
250const ASN1_ITEM ASN1_GENERALSTRING_it = {
251 .itype = ASN1_ITYPE_PRIMITIVE,
252 .utype = V_ASN1_GENERALSTRING,
253 .sname = "ASN1_GENERALSTRING",
254};
255LCRYPTO_ALIAS(ASN1_GENERALSTRING_it);
256
257ASN1_GENERALSTRING *
258d2i_ASN1_GENERALSTRING(ASN1_GENERALSTRING **a, const unsigned char **in,
259 long len)
260{
261 return (ASN1_GENERALSTRING *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
262 &ASN1_GENERALSTRING_it);
263}
264LCRYPTO_ALIAS(d2i_ASN1_GENERALSTRING);
265
266int
267i2d_ASN1_GENERALSTRING(ASN1_GENERALSTRING *a, unsigned char **out)
268{
269 return ASN1_item_i2d((ASN1_VALUE *)a, out, &ASN1_GENERALSTRING_it);
270}
271LCRYPTO_ALIAS(i2d_ASN1_GENERALSTRING);
272
273ASN1_GENERALSTRING *
274ASN1_GENERALSTRING_new(void)
275{
276 return (ASN1_GENERALSTRING *)ASN1_item_new(&ASN1_GENERALSTRING_it);
277}
278LCRYPTO_ALIAS(ASN1_GENERALSTRING_new);
279
280void
281ASN1_GENERALSTRING_free(ASN1_GENERALSTRING *a)
282{
283 ASN1_item_free((ASN1_VALUE *)a, &ASN1_GENERALSTRING_it);
284}
285LCRYPTO_ALIAS(ASN1_GENERALSTRING_free);
286
287
288const ASN1_ITEM ASN1_UTCTIME_it = {
289 .itype = ASN1_ITYPE_PRIMITIVE,
290 .utype = V_ASN1_UTCTIME,
291 .sname = "ASN1_UTCTIME",
292};
293LCRYPTO_ALIAS(ASN1_UTCTIME_it);
294
295ASN1_UTCTIME *
296d2i_ASN1_UTCTIME(ASN1_UTCTIME **a, const unsigned char **in, long len)
297{
298 return (ASN1_UTCTIME *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
299 &ASN1_UTCTIME_it);
300}
301LCRYPTO_ALIAS(d2i_ASN1_UTCTIME);
302
303int
304i2d_ASN1_UTCTIME(ASN1_UTCTIME *a, unsigned char **out)
305{
306 return ASN1_item_i2d((ASN1_VALUE *)a, out, &ASN1_UTCTIME_it);
307}
308LCRYPTO_ALIAS(i2d_ASN1_UTCTIME);
309
310ASN1_UTCTIME *
311ASN1_UTCTIME_new(void)
312{
313 return (ASN1_UTCTIME *)ASN1_item_new(&ASN1_UTCTIME_it);
314}
315LCRYPTO_ALIAS(ASN1_UTCTIME_new);
316
317void
318ASN1_UTCTIME_free(ASN1_UTCTIME *a)
319{
320 ASN1_item_free((ASN1_VALUE *)a, &ASN1_UTCTIME_it);
321}
322LCRYPTO_ALIAS(ASN1_UTCTIME_free);
323
324
325const ASN1_ITEM ASN1_GENERALIZEDTIME_it = {
326 .itype = ASN1_ITYPE_PRIMITIVE,
327 .utype = V_ASN1_GENERALIZEDTIME,
328 .sname = "ASN1_GENERALIZEDTIME",
329};
330LCRYPTO_ALIAS(ASN1_GENERALIZEDTIME_it);
331
332ASN1_GENERALIZEDTIME *
333d2i_ASN1_GENERALIZEDTIME(ASN1_GENERALIZEDTIME **a, const unsigned char **in,
334 long len)
335{
336 return (ASN1_GENERALIZEDTIME *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
337 &ASN1_GENERALIZEDTIME_it);
338}
339LCRYPTO_ALIAS(d2i_ASN1_GENERALIZEDTIME);
340
341int
342i2d_ASN1_GENERALIZEDTIME(ASN1_GENERALIZEDTIME *a, unsigned char **out)
343{
344 return ASN1_item_i2d((ASN1_VALUE *)a, out, &ASN1_GENERALIZEDTIME_it);
345}
346LCRYPTO_ALIAS(i2d_ASN1_GENERALIZEDTIME);
347
348ASN1_GENERALIZEDTIME *
349ASN1_GENERALIZEDTIME_new(void)
350{
351 return (ASN1_GENERALIZEDTIME *)ASN1_item_new(&ASN1_GENERALIZEDTIME_it);
352}
353LCRYPTO_ALIAS(ASN1_GENERALIZEDTIME_new);
354
355void
356ASN1_GENERALIZEDTIME_free(ASN1_GENERALIZEDTIME *a)
357{
358 ASN1_item_free((ASN1_VALUE *)a, &ASN1_GENERALIZEDTIME_it);
359}
360LCRYPTO_ALIAS(ASN1_GENERALIZEDTIME_free);
361
362
363const ASN1_ITEM ASN1_VISIBLESTRING_it = {
364 .itype = ASN1_ITYPE_PRIMITIVE,
365 .utype = V_ASN1_VISIBLESTRING,
366 .sname = "ASN1_VISIBLESTRING",
367};
368LCRYPTO_ALIAS(ASN1_VISIBLESTRING_it);
369
370ASN1_VISIBLESTRING *
371d2i_ASN1_VISIBLESTRING(ASN1_VISIBLESTRING **a, const unsigned char **in,
372 long len)
373{
374 return (ASN1_VISIBLESTRING *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
375 &ASN1_VISIBLESTRING_it);
376}
377LCRYPTO_ALIAS(d2i_ASN1_VISIBLESTRING);
378
379int
380i2d_ASN1_VISIBLESTRING(ASN1_VISIBLESTRING *a, unsigned char **out)
381{
382 return ASN1_item_i2d((ASN1_VALUE *)a, out, &ASN1_VISIBLESTRING_it);
383}
384LCRYPTO_ALIAS(i2d_ASN1_VISIBLESTRING);
385
386ASN1_VISIBLESTRING *
387ASN1_VISIBLESTRING_new(void)
388{
389 return (ASN1_VISIBLESTRING *)ASN1_item_new(&ASN1_VISIBLESTRING_it);
390}
391LCRYPTO_ALIAS(ASN1_VISIBLESTRING_new);
392
393void
394ASN1_VISIBLESTRING_free(ASN1_VISIBLESTRING *a)
395{
396 ASN1_item_free((ASN1_VALUE *)a, &ASN1_VISIBLESTRING_it);
397}
398LCRYPTO_ALIAS(ASN1_VISIBLESTRING_free);
399
400
401const ASN1_ITEM ASN1_UNIVERSALSTRING_it = {
402 .itype = ASN1_ITYPE_PRIMITIVE,
403 .utype = V_ASN1_UNIVERSALSTRING,
404 .sname = "ASN1_UNIVERSALSTRING",
405};
406LCRYPTO_ALIAS(ASN1_UNIVERSALSTRING_it);
407
408ASN1_UNIVERSALSTRING *
409d2i_ASN1_UNIVERSALSTRING(ASN1_UNIVERSALSTRING **a, const unsigned char **in,
410 long len)
411{
412 return (ASN1_UNIVERSALSTRING *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
413 &ASN1_UNIVERSALSTRING_it);
414}
415LCRYPTO_ALIAS(d2i_ASN1_UNIVERSALSTRING);
416
417int
418i2d_ASN1_UNIVERSALSTRING(ASN1_UNIVERSALSTRING *a, unsigned char **out)
419{
420 return ASN1_item_i2d((ASN1_VALUE *)a, out, &ASN1_UNIVERSALSTRING_it);
421}
422LCRYPTO_ALIAS(i2d_ASN1_UNIVERSALSTRING);
423
424ASN1_UNIVERSALSTRING *
425ASN1_UNIVERSALSTRING_new(void)
426{
427 return (ASN1_UNIVERSALSTRING *)ASN1_item_new(&ASN1_UNIVERSALSTRING_it);
428}
429LCRYPTO_ALIAS(ASN1_UNIVERSALSTRING_new);
430
431void
432ASN1_UNIVERSALSTRING_free(ASN1_UNIVERSALSTRING *a)
433{
434 ASN1_item_free((ASN1_VALUE *)a, &ASN1_UNIVERSALSTRING_it);
435}
436LCRYPTO_ALIAS(ASN1_UNIVERSALSTRING_free);
437
438
439const ASN1_ITEM ASN1_BMPSTRING_it = {
440 .itype = ASN1_ITYPE_PRIMITIVE,
441 .utype = V_ASN1_BMPSTRING,
442 .sname = "ASN1_BMPSTRING",
443};
444LCRYPTO_ALIAS(ASN1_BMPSTRING_it);
445
446ASN1_BMPSTRING *
447d2i_ASN1_BMPSTRING(ASN1_BMPSTRING **a, const unsigned char **in, long len)
448{
449 return (ASN1_BMPSTRING *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
450 &ASN1_BMPSTRING_it);
451}
452LCRYPTO_ALIAS(d2i_ASN1_BMPSTRING);
453
454int
455i2d_ASN1_BMPSTRING(ASN1_BMPSTRING *a, unsigned char **out)
456{
457 return ASN1_item_i2d((ASN1_VALUE *)a, out, &ASN1_BMPSTRING_it);
458}
459LCRYPTO_ALIAS(i2d_ASN1_BMPSTRING);
460
461ASN1_BMPSTRING *
462ASN1_BMPSTRING_new(void)
463{
464 return (ASN1_BMPSTRING *)ASN1_item_new(&ASN1_BMPSTRING_it);
465}
466LCRYPTO_ALIAS(ASN1_BMPSTRING_new);
467
468void
469ASN1_BMPSTRING_free(ASN1_BMPSTRING *a)
470{
471 ASN1_item_free((ASN1_VALUE *)a, &ASN1_BMPSTRING_it);
472}
473LCRYPTO_ALIAS(ASN1_BMPSTRING_free);
474
475const ASN1_ITEM ASN1_ANY_it = {
476 .itype = ASN1_ITYPE_PRIMITIVE,
477 .utype = V_ASN1_ANY,
478 .sname = "ASN1_ANY",
479};
480LCRYPTO_ALIAS(ASN1_ANY_it);
481
482
483/* Just swallow an ASN1_SEQUENCE in an ASN1_STRING */
484
485const ASN1_ITEM ASN1_SEQUENCE_it = {
486 .itype = ASN1_ITYPE_PRIMITIVE,
487 .utype = V_ASN1_SEQUENCE,
488 .sname = "ASN1_SEQUENCE",
489};
490LCRYPTO_ALIAS(ASN1_SEQUENCE_it);
491
492
493/* Multistring types */
494
495
496const ASN1_ITEM ASN1_PRINTABLE_it = {
497 .itype = ASN1_ITYPE_MSTRING,
498 .utype = B_ASN1_PRINTABLE,
499 .templates = NULL,
500 .tcount = 0,
501 .funcs = NULL,
502 .size = sizeof(ASN1_STRING),
503 .sname = "ASN1_PRINTABLE",
504};
505LCRYPTO_ALIAS(ASN1_PRINTABLE_it);
506
507ASN1_STRING *
508d2i_ASN1_PRINTABLE(ASN1_STRING **a, const unsigned char **in, long len)
509{
510 return (ASN1_STRING *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
511 &ASN1_PRINTABLE_it);
512}
513LCRYPTO_ALIAS(d2i_ASN1_PRINTABLE);
514
515int
516i2d_ASN1_PRINTABLE(ASN1_STRING *a, unsigned char **out)
517{
518 return ASN1_item_i2d((ASN1_VALUE *)a, out, &ASN1_PRINTABLE_it);
519}
520LCRYPTO_ALIAS(i2d_ASN1_PRINTABLE);
521
522ASN1_STRING *
523ASN1_PRINTABLE_new(void)
524{
525 return (ASN1_STRING *)ASN1_item_new(&ASN1_PRINTABLE_it);
526}
527LCRYPTO_ALIAS(ASN1_PRINTABLE_new);
528
529void
530ASN1_PRINTABLE_free(ASN1_STRING *a)
531{
532 ASN1_item_free((ASN1_VALUE *)a, &ASN1_PRINTABLE_it);
533}
534LCRYPTO_ALIAS(ASN1_PRINTABLE_free);
535
536
537const ASN1_ITEM DISPLAYTEXT_it = {
538 .itype = ASN1_ITYPE_MSTRING,
539 .utype = B_ASN1_DISPLAYTEXT,
540 .templates = NULL,
541 .tcount = 0,
542 .funcs = NULL,
543 .size = sizeof(ASN1_STRING),
544 .sname = "DISPLAYTEXT",
545};
546LCRYPTO_ALIAS(DISPLAYTEXT_it);
547
548ASN1_STRING *
549d2i_DISPLAYTEXT(ASN1_STRING **a, const unsigned char **in, long len)
550{
551 return (ASN1_STRING *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
552 &DISPLAYTEXT_it);
553}
554LCRYPTO_ALIAS(d2i_DISPLAYTEXT);
555
556int
557i2d_DISPLAYTEXT(ASN1_STRING *a, unsigned char **out)
558{
559 return ASN1_item_i2d((ASN1_VALUE *)a, out, &DISPLAYTEXT_it);
560}
561LCRYPTO_ALIAS(i2d_DISPLAYTEXT);
562
563ASN1_STRING *
564DISPLAYTEXT_new(void)
565{
566 return (ASN1_STRING *)ASN1_item_new(&DISPLAYTEXT_it);
567}
568LCRYPTO_ALIAS(DISPLAYTEXT_new);
569
570void
571DISPLAYTEXT_free(ASN1_STRING *a)
572{
573 ASN1_item_free((ASN1_VALUE *)a, &DISPLAYTEXT_it);
574}
575LCRYPTO_ALIAS(DISPLAYTEXT_free);
576
577
578const ASN1_ITEM DIRECTORYSTRING_it = {
579 .itype = ASN1_ITYPE_MSTRING,
580 .utype = B_ASN1_DIRECTORYSTRING,
581 .templates = NULL,
582 .tcount = 0,
583 .funcs = NULL,
584 .size = sizeof(ASN1_STRING),
585 .sname = "DIRECTORYSTRING",
586};
587LCRYPTO_ALIAS(DIRECTORYSTRING_it);
588
589ASN1_STRING *
590d2i_DIRECTORYSTRING(ASN1_STRING **a, const unsigned char **in, long len)
591{
592 return (ASN1_STRING *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
593 &DIRECTORYSTRING_it);
594}
595LCRYPTO_ALIAS(d2i_DIRECTORYSTRING);
596
597int
598i2d_DIRECTORYSTRING(ASN1_STRING *a, unsigned char **out)
599{
600 return ASN1_item_i2d((ASN1_VALUE *)a, out, &DIRECTORYSTRING_it);
601}
602LCRYPTO_ALIAS(i2d_DIRECTORYSTRING);
603
604ASN1_STRING *
605DIRECTORYSTRING_new(void)
606{
607 return (ASN1_STRING *)ASN1_item_new(&DIRECTORYSTRING_it);
608}
609LCRYPTO_ALIAS(DIRECTORYSTRING_new);
610
611void
612DIRECTORYSTRING_free(ASN1_STRING *a)
613{
614 ASN1_item_free((ASN1_VALUE *)a, &DIRECTORYSTRING_it);
615}
616LCRYPTO_ALIAS(DIRECTORYSTRING_free);
617
618/* Three separate BOOLEAN type: normal, DEFAULT TRUE and DEFAULT FALSE */
619
620const ASN1_ITEM ASN1_BOOLEAN_it = {
621 .itype = ASN1_ITYPE_PRIMITIVE,
622 .utype = V_ASN1_BOOLEAN,
623 .size = -1,
624 .sname = "ASN1_BOOLEAN",
625};
626
627int
628i2d_ASN1_BOOLEAN(int a, unsigned char **out)
629{
630 return ASN1_item_ex_i2d((ASN1_VALUE **)&a, out,
631 &ASN1_BOOLEAN_it, -1, 0);
632}
633
634int
635d2i_ASN1_BOOLEAN(int *a, const unsigned char **in, long len)
636{
637 ASN1_BOOLEAN abool;
638
639 if (ASN1_item_ex_d2i((ASN1_VALUE **)&abool, in, len, &ASN1_BOOLEAN_it,
640 -1, 0, 0, NULL) <= 0)
641 return -1;
642
643 if (a != NULL)
644 *a = abool;
645
646 return abool;
647}
648
649const ASN1_ITEM ASN1_TBOOLEAN_it = {
650 .itype = ASN1_ITYPE_PRIMITIVE,
651 .utype = V_ASN1_BOOLEAN,
652 .size = 1,
653 .sname = "ASN1_TBOOLEAN",
654};
655
656const ASN1_ITEM ASN1_FBOOLEAN_it = {
657 .itype = ASN1_ITYPE_PRIMITIVE,
658 .utype = V_ASN1_BOOLEAN,
659 .size = 0,
660 .sname = "ASN1_FBOOLEAN",
661};
662
663/* Special, OCTET STRING with indefinite length constructed support */
664
665const ASN1_ITEM ASN1_OCTET_STRING_NDEF_it = {
666 .itype = ASN1_ITYPE_PRIMITIVE,
667 .utype = V_ASN1_OCTET_STRING,
668 .size = ASN1_TFLG_NDEF,
669 .sname = "ASN1_OCTET_STRING_NDEF",
670};
671
672static const ASN1_TEMPLATE ASN1_SEQUENCE_ANY_item_tt = {
673 .flags = ASN1_TFLG_SEQUENCE_OF,
674 .tag = 0,
675 .offset = 0,
676 .field_name = "ASN1_SEQUENCE_ANY",
677 .item = &ASN1_ANY_it,
678};
679
680const ASN1_ITEM ASN1_SEQUENCE_ANY_it = {
681 .itype = ASN1_ITYPE_PRIMITIVE,
682 .utype = -1,
683 .templates = &ASN1_SEQUENCE_ANY_item_tt,
684 .tcount = 0,
685 .funcs = NULL,
686 .size = 0,
687 .sname = "ASN1_SEQUENCE_ANY",
688};
689LCRYPTO_ALIAS(ASN1_SEQUENCE_ANY_it);
690
691static const ASN1_TEMPLATE ASN1_SET_ANY_item_tt = {
692 .flags = ASN1_TFLG_SET_OF,
693 .tag = 0,
694 .offset = 0,
695 .field_name = "ASN1_SET_ANY",
696 .item = &ASN1_ANY_it,
697};
698
699const ASN1_ITEM ASN1_SET_ANY_it = {
700 .itype = ASN1_ITYPE_PRIMITIVE,
701 .utype = -1,
702 .templates = &ASN1_SET_ANY_item_tt,
703 .tcount = 0,
704 .funcs = NULL,
705 .size = 0,
706 .sname = "ASN1_SET_ANY",
707};
708LCRYPTO_ALIAS(ASN1_SET_ANY_it);
709
710
711ASN1_SEQUENCE_ANY *
712d2i_ASN1_SEQUENCE_ANY(ASN1_SEQUENCE_ANY **a, const unsigned char **in, long len)
713{
714 return (ASN1_SEQUENCE_ANY *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
715 &ASN1_SEQUENCE_ANY_it);
716}
717LCRYPTO_ALIAS(d2i_ASN1_SEQUENCE_ANY);
718
719int
720i2d_ASN1_SEQUENCE_ANY(const ASN1_SEQUENCE_ANY *a, unsigned char **out)
721{
722 return ASN1_item_i2d((ASN1_VALUE *)a, out, &ASN1_SEQUENCE_ANY_it);
723}
724LCRYPTO_ALIAS(i2d_ASN1_SEQUENCE_ANY);
725
726ASN1_SEQUENCE_ANY *
727d2i_ASN1_SET_ANY(ASN1_SEQUENCE_ANY **a, const unsigned char **in, long len)
728{
729 return (ASN1_SEQUENCE_ANY *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
730 &ASN1_SET_ANY_it);
731}
732LCRYPTO_ALIAS(d2i_ASN1_SET_ANY);
733
734int
735i2d_ASN1_SET_ANY(const ASN1_SEQUENCE_ANY *a, unsigned char **out)
736{
737 return ASN1_item_i2d((ASN1_VALUE *)a, out, &ASN1_SET_ANY_it);
738}
739LCRYPTO_ALIAS(i2d_ASN1_SET_ANY);