summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjsing <>2015-02-10 09:39:13 +0000
committerjsing <>2015-02-10 09:39:13 +0000
commitbedef42af36243e74221aa77e809718c15fae035 (patch)
treedd8707b7c17a43ec050097242f7ff3c8803cc7f6
parent703b21ab4c794e7b44460fa1cee2b085dee30874 (diff)
downloadopenbsd-bedef42af36243e74221aa77e809718c15fae035.tar.gz
openbsd-bedef42af36243e74221aa77e809718c15fae035.tar.bz2
openbsd-bedef42af36243e74221aa77e809718c15fae035.zip
Expand IMPLEMENT_ASN1_TYPE macros - no change to generated assembly.
-rw-r--r--src/lib/libcrypto/asn1/tasn_typ.c244
-rw-r--r--src/lib/libssl/src/crypto/asn1/tasn_typ.c244
2 files changed, 442 insertions, 46 deletions
diff --git a/src/lib/libcrypto/asn1/tasn_typ.c b/src/lib/libcrypto/asn1/tasn_typ.c
index 094b041a80..0e2aac1788 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.9 2015/02/10 05:12:23 jsing Exp $ */ 1/* $OpenBSD: tasn_typ.c,v 1.10 2015/02/10 09:39:13 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 */
@@ -62,7 +62,16 @@
62/* Declarations for string types */ 62/* Declarations for string types */
63 63
64 64
65IMPLEMENT_ASN1_TYPE(ASN1_INTEGER) 65
66const ASN1_ITEM ASN1_INTEGER_it = {
67 .itype = ASN1_ITYPE_PRIMITIVE,
68 .utype = V_ASN1_INTEGER,
69 .templates = NULL,
70 .tcount = 0,
71 .funcs = NULL,
72 .size = 0,
73 .sname = "ASN1_INTEGER",
74};
66 75
67ASN1_INTEGER * 76ASN1_INTEGER *
68d2i_ASN1_INTEGER(ASN1_INTEGER **a, const unsigned char **in, long len) 77d2i_ASN1_INTEGER(ASN1_INTEGER **a, const unsigned char **in, long len)
@@ -89,7 +98,16 @@ ASN1_INTEGER_free(ASN1_INTEGER *a)
89 ASN1_item_free((ASN1_VALUE *)a, &ASN1_INTEGER_it); 98 ASN1_item_free((ASN1_VALUE *)a, &ASN1_INTEGER_it);
90} 99}
91 100
92IMPLEMENT_ASN1_TYPE(ASN1_ENUMERATED) 101
102const ASN1_ITEM ASN1_ENUMERATED_it = {
103 .itype = ASN1_ITYPE_PRIMITIVE,
104 .utype = V_ASN1_ENUMERATED,
105 .templates = NULL,
106 .tcount = 0,
107 .funcs = NULL,
108 .size = 0,
109 .sname = "ASN1_ENUMERATED",
110};
93 111
94ASN1_ENUMERATED * 112ASN1_ENUMERATED *
95d2i_ASN1_ENUMERATED(ASN1_ENUMERATED **a, const unsigned char **in, long len) 113d2i_ASN1_ENUMERATED(ASN1_ENUMERATED **a, const unsigned char **in, long len)
@@ -116,7 +134,16 @@ ASN1_ENUMERATED_free(ASN1_ENUMERATED *a)
116 ASN1_item_free((ASN1_VALUE *)a, &ASN1_ENUMERATED_it); 134 ASN1_item_free((ASN1_VALUE *)a, &ASN1_ENUMERATED_it);
117} 135}
118 136
119IMPLEMENT_ASN1_TYPE(ASN1_BIT_STRING) 137
138const ASN1_ITEM ASN1_BIT_STRING_it = {
139 .itype = ASN1_ITYPE_PRIMITIVE,
140 .utype = V_ASN1_BIT_STRING,
141 .templates = NULL,
142 .tcount = 0,
143 .funcs = NULL,
144 .size = 0,
145 .sname = "ASN1_BIT_STRING",
146};
120 147
121ASN1_BIT_STRING * 148ASN1_BIT_STRING *
122d2i_ASN1_BIT_STRING(ASN1_BIT_STRING **a, const unsigned char **in, long len) 149d2i_ASN1_BIT_STRING(ASN1_BIT_STRING **a, const unsigned char **in, long len)
@@ -143,7 +170,16 @@ ASN1_BIT_STRING_free(ASN1_BIT_STRING *a)
143 ASN1_item_free((ASN1_VALUE *)a, &ASN1_BIT_STRING_it); 170 ASN1_item_free((ASN1_VALUE *)a, &ASN1_BIT_STRING_it);
144} 171}
145 172
146IMPLEMENT_ASN1_TYPE(ASN1_OCTET_STRING) 173
174const ASN1_ITEM ASN1_OCTET_STRING_it = {
175 .itype = ASN1_ITYPE_PRIMITIVE,
176 .utype = V_ASN1_OCTET_STRING,
177 .templates = NULL,
178 .tcount = 0,
179 .funcs = NULL,
180 .size = 0,
181 .sname = "ASN1_OCTET_STRING",
182};
147 183
148ASN1_OCTET_STRING * 184ASN1_OCTET_STRING *
149d2i_ASN1_OCTET_STRING(ASN1_OCTET_STRING **a, const unsigned char **in, long len) 185d2i_ASN1_OCTET_STRING(ASN1_OCTET_STRING **a, const unsigned char **in, long len)
@@ -170,7 +206,16 @@ ASN1_OCTET_STRING_free(ASN1_OCTET_STRING *a)
170 ASN1_item_free((ASN1_VALUE *)a, &ASN1_OCTET_STRING_it); 206 ASN1_item_free((ASN1_VALUE *)a, &ASN1_OCTET_STRING_it);
171} 207}
172 208
173IMPLEMENT_ASN1_TYPE(ASN1_NULL) 209
210const ASN1_ITEM ASN1_NULL_it = {
211 .itype = ASN1_ITYPE_PRIMITIVE,
212 .utype = V_ASN1_NULL,
213 .templates = NULL,
214 .tcount = 0,
215 .funcs = NULL,
216 .size = 0,
217 .sname = "ASN1_NULL",
218};
174 219
175ASN1_NULL * 220ASN1_NULL *
176d2i_ASN1_NULL(ASN1_NULL **a, const unsigned char **in, long len) 221d2i_ASN1_NULL(ASN1_NULL **a, const unsigned char **in, long len)
@@ -197,9 +242,27 @@ ASN1_NULL_free(ASN1_NULL *a)
197 ASN1_item_free((ASN1_VALUE *)a, &ASN1_NULL_it); 242 ASN1_item_free((ASN1_VALUE *)a, &ASN1_NULL_it);
198} 243}
199 244
200IMPLEMENT_ASN1_TYPE(ASN1_OBJECT)
201 245
202IMPLEMENT_ASN1_TYPE(ASN1_UTF8STRING) 246const ASN1_ITEM ASN1_OBJECT_it = {
247 .itype = ASN1_ITYPE_PRIMITIVE,
248 .utype = V_ASN1_OBJECT,
249 .templates = NULL,
250 .tcount = 0,
251 .funcs = NULL,
252 .size = 0,
253 .sname = "ASN1_OBJECT",
254};
255
256
257const ASN1_ITEM ASN1_UTF8STRING_it = {
258 .itype = ASN1_ITYPE_PRIMITIVE,
259 .utype = V_ASN1_UTF8STRING,
260 .templates = NULL,
261 .tcount = 0,
262 .funcs = NULL,
263 .size = 0,
264 .sname = "ASN1_UTF8STRING",
265};
203 266
204ASN1_UTF8STRING * 267ASN1_UTF8STRING *
205d2i_ASN1_UTF8STRING(ASN1_UTF8STRING **a, const unsigned char **in, long len) 268d2i_ASN1_UTF8STRING(ASN1_UTF8STRING **a, const unsigned char **in, long len)
@@ -226,7 +289,16 @@ ASN1_UTF8STRING_free(ASN1_UTF8STRING *a)
226 ASN1_item_free((ASN1_VALUE *)a, &ASN1_UTF8STRING_it); 289 ASN1_item_free((ASN1_VALUE *)a, &ASN1_UTF8STRING_it);
227} 290}
228 291
229IMPLEMENT_ASN1_TYPE(ASN1_PRINTABLESTRING) 292
293const ASN1_ITEM ASN1_PRINTABLESTRING_it = {
294 .itype = ASN1_ITYPE_PRIMITIVE,
295 .utype = V_ASN1_PRINTABLESTRING,
296 .templates = NULL,
297 .tcount = 0,
298 .funcs = NULL,
299 .size = 0,
300 .sname = "ASN1_PRINTABLESTRING",
301};
230 302
231ASN1_PRINTABLESTRING * 303ASN1_PRINTABLESTRING *
232d2i_ASN1_PRINTABLESTRING(ASN1_PRINTABLESTRING **a, const unsigned char **in, long len) 304d2i_ASN1_PRINTABLESTRING(ASN1_PRINTABLESTRING **a, const unsigned char **in, long len)
@@ -253,7 +325,16 @@ ASN1_PRINTABLESTRING_free(ASN1_PRINTABLESTRING *a)
253 ASN1_item_free((ASN1_VALUE *)a, &ASN1_PRINTABLESTRING_it); 325 ASN1_item_free((ASN1_VALUE *)a, &ASN1_PRINTABLESTRING_it);
254} 326}
255 327
256IMPLEMENT_ASN1_TYPE(ASN1_T61STRING) 328
329const ASN1_ITEM ASN1_T61STRING_it = {
330 .itype = ASN1_ITYPE_PRIMITIVE,
331 .utype = V_ASN1_T61STRING,
332 .templates = NULL,
333 .tcount = 0,
334 .funcs = NULL,
335 .size = 0,
336 .sname = "ASN1_T61STRING",
337};
257 338
258ASN1_T61STRING * 339ASN1_T61STRING *
259d2i_ASN1_T61STRING(ASN1_T61STRING **a, const unsigned char **in, long len) 340d2i_ASN1_T61STRING(ASN1_T61STRING **a, const unsigned char **in, long len)
@@ -280,7 +361,16 @@ ASN1_T61STRING_free(ASN1_T61STRING *a)
280 ASN1_item_free((ASN1_VALUE *)a, &ASN1_T61STRING_it); 361 ASN1_item_free((ASN1_VALUE *)a, &ASN1_T61STRING_it);
281} 362}
282 363
283IMPLEMENT_ASN1_TYPE(ASN1_IA5STRING) 364
365const ASN1_ITEM ASN1_IA5STRING_it = {
366 .itype = ASN1_ITYPE_PRIMITIVE,
367 .utype = V_ASN1_IA5STRING,
368 .templates = NULL,
369 .tcount = 0,
370 .funcs = NULL,
371 .size = 0,
372 .sname = "ASN1_IA5STRING",
373};
284 374
285ASN1_IA5STRING * 375ASN1_IA5STRING *
286d2i_ASN1_IA5STRING(ASN1_IA5STRING **a, const unsigned char **in, long len) 376d2i_ASN1_IA5STRING(ASN1_IA5STRING **a, const unsigned char **in, long len)
@@ -307,7 +397,16 @@ ASN1_IA5STRING_free(ASN1_IA5STRING *a)
307 ASN1_item_free((ASN1_VALUE *)a, &ASN1_IA5STRING_it); 397 ASN1_item_free((ASN1_VALUE *)a, &ASN1_IA5STRING_it);
308} 398}
309 399
310IMPLEMENT_ASN1_TYPE(ASN1_GENERALSTRING) 400
401const ASN1_ITEM ASN1_GENERALSTRING_it = {
402 .itype = ASN1_ITYPE_PRIMITIVE,
403 .utype = V_ASN1_GENERALSTRING,
404 .templates = NULL,
405 .tcount = 0,
406 .funcs = NULL,
407 .size = 0,
408 .sname = "ASN1_GENERALSTRING",
409};
311 410
312ASN1_GENERALSTRING * 411ASN1_GENERALSTRING *
313d2i_ASN1_GENERALSTRING(ASN1_GENERALSTRING **a, const unsigned char **in, long len) 412d2i_ASN1_GENERALSTRING(ASN1_GENERALSTRING **a, const unsigned char **in, long len)
@@ -334,7 +433,16 @@ ASN1_GENERALSTRING_free(ASN1_GENERALSTRING *a)
334 ASN1_item_free((ASN1_VALUE *)a, &ASN1_GENERALSTRING_it); 433 ASN1_item_free((ASN1_VALUE *)a, &ASN1_GENERALSTRING_it);
335} 434}
336 435
337IMPLEMENT_ASN1_TYPE(ASN1_UTCTIME) 436
437const ASN1_ITEM ASN1_UTCTIME_it = {
438 .itype = ASN1_ITYPE_PRIMITIVE,
439 .utype = V_ASN1_UTCTIME,
440 .templates = NULL,
441 .tcount = 0,
442 .funcs = NULL,
443 .size = 0,
444 .sname = "ASN1_UTCTIME",
445};
338 446
339ASN1_UTCTIME * 447ASN1_UTCTIME *
340d2i_ASN1_UTCTIME(ASN1_UTCTIME **a, const unsigned char **in, long len) 448d2i_ASN1_UTCTIME(ASN1_UTCTIME **a, const unsigned char **in, long len)
@@ -361,7 +469,16 @@ ASN1_UTCTIME_free(ASN1_UTCTIME *a)
361 ASN1_item_free((ASN1_VALUE *)a, &ASN1_UTCTIME_it); 469 ASN1_item_free((ASN1_VALUE *)a, &ASN1_UTCTIME_it);
362} 470}
363 471
364IMPLEMENT_ASN1_TYPE(ASN1_GENERALIZEDTIME) 472
473const ASN1_ITEM ASN1_GENERALIZEDTIME_it = {
474 .itype = ASN1_ITYPE_PRIMITIVE,
475 .utype = V_ASN1_GENERALIZEDTIME,
476 .templates = NULL,
477 .tcount = 0,
478 .funcs = NULL,
479 .size = 0,
480 .sname = "ASN1_GENERALIZEDTIME",
481};
365 482
366ASN1_GENERALIZEDTIME * 483ASN1_GENERALIZEDTIME *
367d2i_ASN1_GENERALIZEDTIME(ASN1_GENERALIZEDTIME **a, const unsigned char **in, long len) 484d2i_ASN1_GENERALIZEDTIME(ASN1_GENERALIZEDTIME **a, const unsigned char **in, long len)
@@ -388,7 +505,16 @@ ASN1_GENERALIZEDTIME_free(ASN1_GENERALIZEDTIME *a)
388 ASN1_item_free((ASN1_VALUE *)a, &ASN1_GENERALIZEDTIME_it); 505 ASN1_item_free((ASN1_VALUE *)a, &ASN1_GENERALIZEDTIME_it);
389} 506}
390 507
391IMPLEMENT_ASN1_TYPE(ASN1_VISIBLESTRING) 508
509const ASN1_ITEM ASN1_VISIBLESTRING_it = {
510 .itype = ASN1_ITYPE_PRIMITIVE,
511 .utype = V_ASN1_VISIBLESTRING,
512 .templates = NULL,
513 .tcount = 0,
514 .funcs = NULL,
515 .size = 0,
516 .sname = "ASN1_VISIBLESTRING",
517};
392 518
393ASN1_VISIBLESTRING * 519ASN1_VISIBLESTRING *
394d2i_ASN1_VISIBLESTRING(ASN1_VISIBLESTRING **a, const unsigned char **in, long len) 520d2i_ASN1_VISIBLESTRING(ASN1_VISIBLESTRING **a, const unsigned char **in, long len)
@@ -415,7 +541,16 @@ ASN1_VISIBLESTRING_free(ASN1_VISIBLESTRING *a)
415 ASN1_item_free((ASN1_VALUE *)a, &ASN1_VISIBLESTRING_it); 541 ASN1_item_free((ASN1_VALUE *)a, &ASN1_VISIBLESTRING_it);
416} 542}
417 543
418IMPLEMENT_ASN1_TYPE(ASN1_UNIVERSALSTRING) 544
545const ASN1_ITEM ASN1_UNIVERSALSTRING_it = {
546 .itype = ASN1_ITYPE_PRIMITIVE,
547 .utype = V_ASN1_UNIVERSALSTRING,
548 .templates = NULL,
549 .tcount = 0,
550 .funcs = NULL,
551 .size = 0,
552 .sname = "ASN1_UNIVERSALSTRING",
553};
419 554
420ASN1_UNIVERSALSTRING * 555ASN1_UNIVERSALSTRING *
421d2i_ASN1_UNIVERSALSTRING(ASN1_UNIVERSALSTRING **a, const unsigned char **in, long len) 556d2i_ASN1_UNIVERSALSTRING(ASN1_UNIVERSALSTRING **a, const unsigned char **in, long len)
@@ -442,7 +577,16 @@ ASN1_UNIVERSALSTRING_free(ASN1_UNIVERSALSTRING *a)
442 ASN1_item_free((ASN1_VALUE *)a, &ASN1_UNIVERSALSTRING_it); 577 ASN1_item_free((ASN1_VALUE *)a, &ASN1_UNIVERSALSTRING_it);
443} 578}
444 579
445IMPLEMENT_ASN1_TYPE(ASN1_BMPSTRING) 580
581const ASN1_ITEM ASN1_BMPSTRING_it = {
582 .itype = ASN1_ITYPE_PRIMITIVE,
583 .utype = V_ASN1_BMPSTRING,
584 .templates = NULL,
585 .tcount = 0,
586 .funcs = NULL,
587 .size = 0,
588 .sname = "ASN1_BMPSTRING",
589};
446 590
447ASN1_BMPSTRING * 591ASN1_BMPSTRING *
448d2i_ASN1_BMPSTRING(ASN1_BMPSTRING **a, const unsigned char **in, long len) 592d2i_ASN1_BMPSTRING(ASN1_BMPSTRING **a, const unsigned char **in, long len)
@@ -469,10 +613,28 @@ ASN1_BMPSTRING_free(ASN1_BMPSTRING *a)
469 ASN1_item_free((ASN1_VALUE *)a, &ASN1_BMPSTRING_it); 613 ASN1_item_free((ASN1_VALUE *)a, &ASN1_BMPSTRING_it);
470} 614}
471 615
472IMPLEMENT_ASN1_TYPE(ASN1_ANY) 616
617const ASN1_ITEM ASN1_ANY_it = {
618 .itype = ASN1_ITYPE_PRIMITIVE,
619 .utype = V_ASN1_ANY,
620 .templates = NULL,
621 .tcount = 0,
622 .funcs = NULL,
623 .size = 0,
624 .sname = "ASN1_ANY",
625};
473 626
474/* Just swallow an ASN1_SEQUENCE in an ASN1_STRING */ 627/* Just swallow an ASN1_SEQUENCE in an ASN1_STRING */
475IMPLEMENT_ASN1_TYPE(ASN1_SEQUENCE) 628
629const ASN1_ITEM ASN1_SEQUENCE_it = {
630 .itype = ASN1_ITYPE_PRIMITIVE,
631 .utype = V_ASN1_SEQUENCE,
632 .templates = NULL,
633 .tcount = 0,
634 .funcs = NULL,
635 .size = 0,
636 .sname = "ASN1_SEQUENCE",
637};
476 638
477 639
478ASN1_TYPE * 640ASN1_TYPE *
@@ -584,13 +746,49 @@ DIRECTORYSTRING_free(ASN1_STRING *a)
584} 746}
585 747
586/* Three separate BOOLEAN type: normal, DEFAULT TRUE and DEFAULT FALSE */ 748/* Three separate BOOLEAN type: normal, DEFAULT TRUE and DEFAULT FALSE */
587IMPLEMENT_ASN1_TYPE_ex(ASN1_BOOLEAN, ASN1_BOOLEAN, -1) 749
588IMPLEMENT_ASN1_TYPE_ex(ASN1_TBOOLEAN, ASN1_BOOLEAN, 1) 750const ASN1_ITEM ASN1_BOOLEAN_it = {
589IMPLEMENT_ASN1_TYPE_ex(ASN1_FBOOLEAN, ASN1_BOOLEAN, 0) 751 .itype = ASN1_ITYPE_PRIMITIVE,
752 .utype = V_ASN1_BOOLEAN,
753 .templates = NULL,
754 .tcount = 0,
755 .funcs = NULL,
756 .size = -1,
757 .sname = "ASN1_BOOLEAN",
758};
759
760const ASN1_ITEM ASN1_TBOOLEAN_it = {
761 .itype = ASN1_ITYPE_PRIMITIVE,
762 .utype = V_ASN1_BOOLEAN,
763 .templates = NULL,
764 .tcount = 0,
765 .funcs = NULL,
766 .size = 1,
767 .sname = "ASN1_TBOOLEAN",
768};
769
770const ASN1_ITEM ASN1_FBOOLEAN_it = {
771 .itype = ASN1_ITYPE_PRIMITIVE,
772 .utype = V_ASN1_BOOLEAN,
773 .templates = NULL,
774 .tcount = 0,
775 .funcs = NULL,
776 .size = 0,
777 .sname = "ASN1_FBOOLEAN",
778};
590 779
591/* Special, OCTET STRING with indefinite length constructed support */ 780/* Special, OCTET STRING with indefinite length constructed support */
592 781
593IMPLEMENT_ASN1_TYPE_ex(ASN1_OCTET_STRING_NDEF, ASN1_OCTET_STRING, ASN1_TFLG_NDEF) 782
783const ASN1_ITEM ASN1_OCTET_STRING_NDEF_it = {
784 .itype = ASN1_ITYPE_PRIMITIVE,
785 .utype = V_ASN1_OCTET_STRING,
786 .templates = NULL,
787 .tcount = 0,
788 .funcs = NULL,
789 .size = ASN1_TFLG_NDEF,
790 .sname = "ASN1_OCTET_STRING_NDEF",
791};
594 792
595ASN1_ITEM_TEMPLATE(ASN1_SEQUENCE_ANY) = 793ASN1_ITEM_TEMPLATE(ASN1_SEQUENCE_ANY) =
596 ASN1_EX_TEMPLATE_TYPE(ASN1_TFLG_SEQUENCE_OF, 0, ASN1_SEQUENCE_ANY, ASN1_ANY) 794 ASN1_EX_TEMPLATE_TYPE(ASN1_TFLG_SEQUENCE_OF, 0, ASN1_SEQUENCE_ANY, ASN1_ANY)
diff --git a/src/lib/libssl/src/crypto/asn1/tasn_typ.c b/src/lib/libssl/src/crypto/asn1/tasn_typ.c
index 094b041a80..0e2aac1788 100644
--- a/src/lib/libssl/src/crypto/asn1/tasn_typ.c
+++ b/src/lib/libssl/src/crypto/asn1/tasn_typ.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: tasn_typ.c,v 1.9 2015/02/10 05:12:23 jsing Exp $ */ 1/* $OpenBSD: tasn_typ.c,v 1.10 2015/02/10 09:39:13 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 */
@@ -62,7 +62,16 @@
62/* Declarations for string types */ 62/* Declarations for string types */
63 63
64 64
65IMPLEMENT_ASN1_TYPE(ASN1_INTEGER) 65
66const ASN1_ITEM ASN1_INTEGER_it = {
67 .itype = ASN1_ITYPE_PRIMITIVE,
68 .utype = V_ASN1_INTEGER,
69 .templates = NULL,
70 .tcount = 0,
71 .funcs = NULL,
72 .size = 0,
73 .sname = "ASN1_INTEGER",
74};
66 75
67ASN1_INTEGER * 76ASN1_INTEGER *
68d2i_ASN1_INTEGER(ASN1_INTEGER **a, const unsigned char **in, long len) 77d2i_ASN1_INTEGER(ASN1_INTEGER **a, const unsigned char **in, long len)
@@ -89,7 +98,16 @@ ASN1_INTEGER_free(ASN1_INTEGER *a)
89 ASN1_item_free((ASN1_VALUE *)a, &ASN1_INTEGER_it); 98 ASN1_item_free((ASN1_VALUE *)a, &ASN1_INTEGER_it);
90} 99}
91 100
92IMPLEMENT_ASN1_TYPE(ASN1_ENUMERATED) 101
102const ASN1_ITEM ASN1_ENUMERATED_it = {
103 .itype = ASN1_ITYPE_PRIMITIVE,
104 .utype = V_ASN1_ENUMERATED,
105 .templates = NULL,
106 .tcount = 0,
107 .funcs = NULL,
108 .size = 0,
109 .sname = "ASN1_ENUMERATED",
110};
93 111
94ASN1_ENUMERATED * 112ASN1_ENUMERATED *
95d2i_ASN1_ENUMERATED(ASN1_ENUMERATED **a, const unsigned char **in, long len) 113d2i_ASN1_ENUMERATED(ASN1_ENUMERATED **a, const unsigned char **in, long len)
@@ -116,7 +134,16 @@ ASN1_ENUMERATED_free(ASN1_ENUMERATED *a)
116 ASN1_item_free((ASN1_VALUE *)a, &ASN1_ENUMERATED_it); 134 ASN1_item_free((ASN1_VALUE *)a, &ASN1_ENUMERATED_it);
117} 135}
118 136
119IMPLEMENT_ASN1_TYPE(ASN1_BIT_STRING) 137
138const ASN1_ITEM ASN1_BIT_STRING_it = {
139 .itype = ASN1_ITYPE_PRIMITIVE,
140 .utype = V_ASN1_BIT_STRING,
141 .templates = NULL,
142 .tcount = 0,
143 .funcs = NULL,
144 .size = 0,
145 .sname = "ASN1_BIT_STRING",
146};
120 147
121ASN1_BIT_STRING * 148ASN1_BIT_STRING *
122d2i_ASN1_BIT_STRING(ASN1_BIT_STRING **a, const unsigned char **in, long len) 149d2i_ASN1_BIT_STRING(ASN1_BIT_STRING **a, const unsigned char **in, long len)
@@ -143,7 +170,16 @@ ASN1_BIT_STRING_free(ASN1_BIT_STRING *a)
143 ASN1_item_free((ASN1_VALUE *)a, &ASN1_BIT_STRING_it); 170 ASN1_item_free((ASN1_VALUE *)a, &ASN1_BIT_STRING_it);
144} 171}
145 172
146IMPLEMENT_ASN1_TYPE(ASN1_OCTET_STRING) 173
174const ASN1_ITEM ASN1_OCTET_STRING_it = {
175 .itype = ASN1_ITYPE_PRIMITIVE,
176 .utype = V_ASN1_OCTET_STRING,
177 .templates = NULL,
178 .tcount = 0,
179 .funcs = NULL,
180 .size = 0,
181 .sname = "ASN1_OCTET_STRING",
182};
147 183
148ASN1_OCTET_STRING * 184ASN1_OCTET_STRING *
149d2i_ASN1_OCTET_STRING(ASN1_OCTET_STRING **a, const unsigned char **in, long len) 185d2i_ASN1_OCTET_STRING(ASN1_OCTET_STRING **a, const unsigned char **in, long len)
@@ -170,7 +206,16 @@ ASN1_OCTET_STRING_free(ASN1_OCTET_STRING *a)
170 ASN1_item_free((ASN1_VALUE *)a, &ASN1_OCTET_STRING_it); 206 ASN1_item_free((ASN1_VALUE *)a, &ASN1_OCTET_STRING_it);
171} 207}
172 208
173IMPLEMENT_ASN1_TYPE(ASN1_NULL) 209
210const ASN1_ITEM ASN1_NULL_it = {
211 .itype = ASN1_ITYPE_PRIMITIVE,
212 .utype = V_ASN1_NULL,
213 .templates = NULL,
214 .tcount = 0,
215 .funcs = NULL,
216 .size = 0,
217 .sname = "ASN1_NULL",
218};
174 219
175ASN1_NULL * 220ASN1_NULL *
176d2i_ASN1_NULL(ASN1_NULL **a, const unsigned char **in, long len) 221d2i_ASN1_NULL(ASN1_NULL **a, const unsigned char **in, long len)
@@ -197,9 +242,27 @@ ASN1_NULL_free(ASN1_NULL *a)
197 ASN1_item_free((ASN1_VALUE *)a, &ASN1_NULL_it); 242 ASN1_item_free((ASN1_VALUE *)a, &ASN1_NULL_it);
198} 243}
199 244
200IMPLEMENT_ASN1_TYPE(ASN1_OBJECT)
201 245
202IMPLEMENT_ASN1_TYPE(ASN1_UTF8STRING) 246const ASN1_ITEM ASN1_OBJECT_it = {
247 .itype = ASN1_ITYPE_PRIMITIVE,
248 .utype = V_ASN1_OBJECT,
249 .templates = NULL,
250 .tcount = 0,
251 .funcs = NULL,
252 .size = 0,
253 .sname = "ASN1_OBJECT",
254};
255
256
257const ASN1_ITEM ASN1_UTF8STRING_it = {
258 .itype = ASN1_ITYPE_PRIMITIVE,
259 .utype = V_ASN1_UTF8STRING,
260 .templates = NULL,
261 .tcount = 0,
262 .funcs = NULL,
263 .size = 0,
264 .sname = "ASN1_UTF8STRING",
265};
203 266
204ASN1_UTF8STRING * 267ASN1_UTF8STRING *
205d2i_ASN1_UTF8STRING(ASN1_UTF8STRING **a, const unsigned char **in, long len) 268d2i_ASN1_UTF8STRING(ASN1_UTF8STRING **a, const unsigned char **in, long len)
@@ -226,7 +289,16 @@ ASN1_UTF8STRING_free(ASN1_UTF8STRING *a)
226 ASN1_item_free((ASN1_VALUE *)a, &ASN1_UTF8STRING_it); 289 ASN1_item_free((ASN1_VALUE *)a, &ASN1_UTF8STRING_it);
227} 290}
228 291
229IMPLEMENT_ASN1_TYPE(ASN1_PRINTABLESTRING) 292
293const ASN1_ITEM ASN1_PRINTABLESTRING_it = {
294 .itype = ASN1_ITYPE_PRIMITIVE,
295 .utype = V_ASN1_PRINTABLESTRING,
296 .templates = NULL,
297 .tcount = 0,
298 .funcs = NULL,
299 .size = 0,
300 .sname = "ASN1_PRINTABLESTRING",
301};
230 302
231ASN1_PRINTABLESTRING * 303ASN1_PRINTABLESTRING *
232d2i_ASN1_PRINTABLESTRING(ASN1_PRINTABLESTRING **a, const unsigned char **in, long len) 304d2i_ASN1_PRINTABLESTRING(ASN1_PRINTABLESTRING **a, const unsigned char **in, long len)
@@ -253,7 +325,16 @@ ASN1_PRINTABLESTRING_free(ASN1_PRINTABLESTRING *a)
253 ASN1_item_free((ASN1_VALUE *)a, &ASN1_PRINTABLESTRING_it); 325 ASN1_item_free((ASN1_VALUE *)a, &ASN1_PRINTABLESTRING_it);
254} 326}
255 327
256IMPLEMENT_ASN1_TYPE(ASN1_T61STRING) 328
329const ASN1_ITEM ASN1_T61STRING_it = {
330 .itype = ASN1_ITYPE_PRIMITIVE,
331 .utype = V_ASN1_T61STRING,
332 .templates = NULL,
333 .tcount = 0,
334 .funcs = NULL,
335 .size = 0,
336 .sname = "ASN1_T61STRING",
337};
257 338
258ASN1_T61STRING * 339ASN1_T61STRING *
259d2i_ASN1_T61STRING(ASN1_T61STRING **a, const unsigned char **in, long len) 340d2i_ASN1_T61STRING(ASN1_T61STRING **a, const unsigned char **in, long len)
@@ -280,7 +361,16 @@ ASN1_T61STRING_free(ASN1_T61STRING *a)
280 ASN1_item_free((ASN1_VALUE *)a, &ASN1_T61STRING_it); 361 ASN1_item_free((ASN1_VALUE *)a, &ASN1_T61STRING_it);
281} 362}
282 363
283IMPLEMENT_ASN1_TYPE(ASN1_IA5STRING) 364
365const ASN1_ITEM ASN1_IA5STRING_it = {
366 .itype = ASN1_ITYPE_PRIMITIVE,
367 .utype = V_ASN1_IA5STRING,
368 .templates = NULL,
369 .tcount = 0,
370 .funcs = NULL,
371 .size = 0,
372 .sname = "ASN1_IA5STRING",
373};
284 374
285ASN1_IA5STRING * 375ASN1_IA5STRING *
286d2i_ASN1_IA5STRING(ASN1_IA5STRING **a, const unsigned char **in, long len) 376d2i_ASN1_IA5STRING(ASN1_IA5STRING **a, const unsigned char **in, long len)
@@ -307,7 +397,16 @@ ASN1_IA5STRING_free(ASN1_IA5STRING *a)
307 ASN1_item_free((ASN1_VALUE *)a, &ASN1_IA5STRING_it); 397 ASN1_item_free((ASN1_VALUE *)a, &ASN1_IA5STRING_it);
308} 398}
309 399
310IMPLEMENT_ASN1_TYPE(ASN1_GENERALSTRING) 400
401const ASN1_ITEM ASN1_GENERALSTRING_it = {
402 .itype = ASN1_ITYPE_PRIMITIVE,
403 .utype = V_ASN1_GENERALSTRING,
404 .templates = NULL,
405 .tcount = 0,
406 .funcs = NULL,
407 .size = 0,
408 .sname = "ASN1_GENERALSTRING",
409};
311 410
312ASN1_GENERALSTRING * 411ASN1_GENERALSTRING *
313d2i_ASN1_GENERALSTRING(ASN1_GENERALSTRING **a, const unsigned char **in, long len) 412d2i_ASN1_GENERALSTRING(ASN1_GENERALSTRING **a, const unsigned char **in, long len)
@@ -334,7 +433,16 @@ ASN1_GENERALSTRING_free(ASN1_GENERALSTRING *a)
334 ASN1_item_free((ASN1_VALUE *)a, &ASN1_GENERALSTRING_it); 433 ASN1_item_free((ASN1_VALUE *)a, &ASN1_GENERALSTRING_it);
335} 434}
336 435
337IMPLEMENT_ASN1_TYPE(ASN1_UTCTIME) 436
437const ASN1_ITEM ASN1_UTCTIME_it = {
438 .itype = ASN1_ITYPE_PRIMITIVE,
439 .utype = V_ASN1_UTCTIME,
440 .templates = NULL,
441 .tcount = 0,
442 .funcs = NULL,
443 .size = 0,
444 .sname = "ASN1_UTCTIME",
445};
338 446
339ASN1_UTCTIME * 447ASN1_UTCTIME *
340d2i_ASN1_UTCTIME(ASN1_UTCTIME **a, const unsigned char **in, long len) 448d2i_ASN1_UTCTIME(ASN1_UTCTIME **a, const unsigned char **in, long len)
@@ -361,7 +469,16 @@ ASN1_UTCTIME_free(ASN1_UTCTIME *a)
361 ASN1_item_free((ASN1_VALUE *)a, &ASN1_UTCTIME_it); 469 ASN1_item_free((ASN1_VALUE *)a, &ASN1_UTCTIME_it);
362} 470}
363 471
364IMPLEMENT_ASN1_TYPE(ASN1_GENERALIZEDTIME) 472
473const ASN1_ITEM ASN1_GENERALIZEDTIME_it = {
474 .itype = ASN1_ITYPE_PRIMITIVE,
475 .utype = V_ASN1_GENERALIZEDTIME,
476 .templates = NULL,
477 .tcount = 0,
478 .funcs = NULL,
479 .size = 0,
480 .sname = "ASN1_GENERALIZEDTIME",
481};
365 482
366ASN1_GENERALIZEDTIME * 483ASN1_GENERALIZEDTIME *
367d2i_ASN1_GENERALIZEDTIME(ASN1_GENERALIZEDTIME **a, const unsigned char **in, long len) 484d2i_ASN1_GENERALIZEDTIME(ASN1_GENERALIZEDTIME **a, const unsigned char **in, long len)
@@ -388,7 +505,16 @@ ASN1_GENERALIZEDTIME_free(ASN1_GENERALIZEDTIME *a)
388 ASN1_item_free((ASN1_VALUE *)a, &ASN1_GENERALIZEDTIME_it); 505 ASN1_item_free((ASN1_VALUE *)a, &ASN1_GENERALIZEDTIME_it);
389} 506}
390 507
391IMPLEMENT_ASN1_TYPE(ASN1_VISIBLESTRING) 508
509const ASN1_ITEM ASN1_VISIBLESTRING_it = {
510 .itype = ASN1_ITYPE_PRIMITIVE,
511 .utype = V_ASN1_VISIBLESTRING,
512 .templates = NULL,
513 .tcount = 0,
514 .funcs = NULL,
515 .size = 0,
516 .sname = "ASN1_VISIBLESTRING",
517};
392 518
393ASN1_VISIBLESTRING * 519ASN1_VISIBLESTRING *
394d2i_ASN1_VISIBLESTRING(ASN1_VISIBLESTRING **a, const unsigned char **in, long len) 520d2i_ASN1_VISIBLESTRING(ASN1_VISIBLESTRING **a, const unsigned char **in, long len)
@@ -415,7 +541,16 @@ ASN1_VISIBLESTRING_free(ASN1_VISIBLESTRING *a)
415 ASN1_item_free((ASN1_VALUE *)a, &ASN1_VISIBLESTRING_it); 541 ASN1_item_free((ASN1_VALUE *)a, &ASN1_VISIBLESTRING_it);
416} 542}
417 543
418IMPLEMENT_ASN1_TYPE(ASN1_UNIVERSALSTRING) 544
545const ASN1_ITEM ASN1_UNIVERSALSTRING_it = {
546 .itype = ASN1_ITYPE_PRIMITIVE,
547 .utype = V_ASN1_UNIVERSALSTRING,
548 .templates = NULL,
549 .tcount = 0,
550 .funcs = NULL,
551 .size = 0,
552 .sname = "ASN1_UNIVERSALSTRING",
553};
419 554
420ASN1_UNIVERSALSTRING * 555ASN1_UNIVERSALSTRING *
421d2i_ASN1_UNIVERSALSTRING(ASN1_UNIVERSALSTRING **a, const unsigned char **in, long len) 556d2i_ASN1_UNIVERSALSTRING(ASN1_UNIVERSALSTRING **a, const unsigned char **in, long len)
@@ -442,7 +577,16 @@ ASN1_UNIVERSALSTRING_free(ASN1_UNIVERSALSTRING *a)
442 ASN1_item_free((ASN1_VALUE *)a, &ASN1_UNIVERSALSTRING_it); 577 ASN1_item_free((ASN1_VALUE *)a, &ASN1_UNIVERSALSTRING_it);
443} 578}
444 579
445IMPLEMENT_ASN1_TYPE(ASN1_BMPSTRING) 580
581const ASN1_ITEM ASN1_BMPSTRING_it = {
582 .itype = ASN1_ITYPE_PRIMITIVE,
583 .utype = V_ASN1_BMPSTRING,
584 .templates = NULL,
585 .tcount = 0,
586 .funcs = NULL,
587 .size = 0,
588 .sname = "ASN1_BMPSTRING",
589};
446 590
447ASN1_BMPSTRING * 591ASN1_BMPSTRING *
448d2i_ASN1_BMPSTRING(ASN1_BMPSTRING **a, const unsigned char **in, long len) 592d2i_ASN1_BMPSTRING(ASN1_BMPSTRING **a, const unsigned char **in, long len)
@@ -469,10 +613,28 @@ ASN1_BMPSTRING_free(ASN1_BMPSTRING *a)
469 ASN1_item_free((ASN1_VALUE *)a, &ASN1_BMPSTRING_it); 613 ASN1_item_free((ASN1_VALUE *)a, &ASN1_BMPSTRING_it);
470} 614}
471 615
472IMPLEMENT_ASN1_TYPE(ASN1_ANY) 616
617const ASN1_ITEM ASN1_ANY_it = {
618 .itype = ASN1_ITYPE_PRIMITIVE,
619 .utype = V_ASN1_ANY,
620 .templates = NULL,
621 .tcount = 0,
622 .funcs = NULL,
623 .size = 0,
624 .sname = "ASN1_ANY",
625};
473 626
474/* Just swallow an ASN1_SEQUENCE in an ASN1_STRING */ 627/* Just swallow an ASN1_SEQUENCE in an ASN1_STRING */
475IMPLEMENT_ASN1_TYPE(ASN1_SEQUENCE) 628
629const ASN1_ITEM ASN1_SEQUENCE_it = {
630 .itype = ASN1_ITYPE_PRIMITIVE,
631 .utype = V_ASN1_SEQUENCE,
632 .templates = NULL,
633 .tcount = 0,
634 .funcs = NULL,
635 .size = 0,
636 .sname = "ASN1_SEQUENCE",
637};
476 638
477 639
478ASN1_TYPE * 640ASN1_TYPE *
@@ -584,13 +746,49 @@ DIRECTORYSTRING_free(ASN1_STRING *a)
584} 746}
585 747
586/* Three separate BOOLEAN type: normal, DEFAULT TRUE and DEFAULT FALSE */ 748/* Three separate BOOLEAN type: normal, DEFAULT TRUE and DEFAULT FALSE */
587IMPLEMENT_ASN1_TYPE_ex(ASN1_BOOLEAN, ASN1_BOOLEAN, -1) 749
588IMPLEMENT_ASN1_TYPE_ex(ASN1_TBOOLEAN, ASN1_BOOLEAN, 1) 750const ASN1_ITEM ASN1_BOOLEAN_it = {
589IMPLEMENT_ASN1_TYPE_ex(ASN1_FBOOLEAN, ASN1_BOOLEAN, 0) 751 .itype = ASN1_ITYPE_PRIMITIVE,
752 .utype = V_ASN1_BOOLEAN,
753 .templates = NULL,
754 .tcount = 0,
755 .funcs = NULL,
756 .size = -1,
757 .sname = "ASN1_BOOLEAN",
758};
759
760const ASN1_ITEM ASN1_TBOOLEAN_it = {
761 .itype = ASN1_ITYPE_PRIMITIVE,
762 .utype = V_ASN1_BOOLEAN,
763 .templates = NULL,
764 .tcount = 0,
765 .funcs = NULL,
766 .size = 1,
767 .sname = "ASN1_TBOOLEAN",
768};
769
770const ASN1_ITEM ASN1_FBOOLEAN_it = {
771 .itype = ASN1_ITYPE_PRIMITIVE,
772 .utype = V_ASN1_BOOLEAN,
773 .templates = NULL,
774 .tcount = 0,
775 .funcs = NULL,
776 .size = 0,
777 .sname = "ASN1_FBOOLEAN",
778};
590 779
591/* Special, OCTET STRING with indefinite length constructed support */ 780/* Special, OCTET STRING with indefinite length constructed support */
592 781
593IMPLEMENT_ASN1_TYPE_ex(ASN1_OCTET_STRING_NDEF, ASN1_OCTET_STRING, ASN1_TFLG_NDEF) 782
783const ASN1_ITEM ASN1_OCTET_STRING_NDEF_it = {
784 .itype = ASN1_ITYPE_PRIMITIVE,
785 .utype = V_ASN1_OCTET_STRING,
786 .templates = NULL,
787 .tcount = 0,
788 .funcs = NULL,
789 .size = ASN1_TFLG_NDEF,
790 .sname = "ASN1_OCTET_STRING_NDEF",
791};
594 792
595ASN1_ITEM_TEMPLATE(ASN1_SEQUENCE_ANY) = 793ASN1_ITEM_TEMPLATE(ASN1_SEQUENCE_ANY) =
596 ASN1_EX_TEMPLATE_TYPE(ASN1_TFLG_SEQUENCE_OF, 0, ASN1_SEQUENCE_ANY, ASN1_ANY) 794 ASN1_EX_TEMPLATE_TYPE(ASN1_TFLG_SEQUENCE_OF, 0, ASN1_SEQUENCE_ANY, ASN1_ANY)