summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/lib/libcrypto/asn1/a_bitstr.c34
-rw-r--r--src/lib/libcrypto/asn1/a_enum.c34
-rw-r--r--src/lib/libcrypto/asn1/a_int.c33
-rw-r--r--src/lib/libcrypto/asn1/a_object.c9
-rw-r--r--src/lib/libcrypto/asn1/a_octet.c35
-rw-r--r--src/lib/libcrypto/asn1/a_type.c27
-rw-r--r--src/lib/libcrypto/asn1/tasn_typ.c164
7 files changed, 168 insertions, 168 deletions
diff --git a/src/lib/libcrypto/asn1/a_bitstr.c b/src/lib/libcrypto/asn1/a_bitstr.c
index 207d80ab38..4ffafd5f86 100644
--- a/src/lib/libcrypto/asn1/a_bitstr.c
+++ b/src/lib/libcrypto/asn1/a_bitstr.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: a_bitstr.c,v 1.32 2021/12/25 07:48:09 jsing Exp $ */ 1/* $OpenBSD: a_bitstr.c,v 1.33 2021/12/25 08:52:44 jsing Exp $ */
2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) 2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3 * All rights reserved. 3 * All rights reserved.
4 * 4 *
@@ -60,10 +60,29 @@
60#include <string.h> 60#include <string.h>
61 61
62#include <openssl/asn1.h> 62#include <openssl/asn1.h>
63#include <openssl/asn1t.h>
63#include <openssl/conf.h> 64#include <openssl/conf.h>
64#include <openssl/err.h> 65#include <openssl/err.h>
65#include <openssl/x509v3.h> 66#include <openssl/x509v3.h>
66 67
68const ASN1_ITEM ASN1_BIT_STRING_it = {
69 .itype = ASN1_ITYPE_PRIMITIVE,
70 .utype = V_ASN1_BIT_STRING,
71 .sname = "ASN1_BIT_STRING",
72};
73
74ASN1_BIT_STRING *
75ASN1_BIT_STRING_new(void)
76{
77 return (ASN1_BIT_STRING *)ASN1_item_new(&ASN1_BIT_STRING_it);
78}
79
80void
81ASN1_BIT_STRING_free(ASN1_BIT_STRING *a)
82{
83 ASN1_item_free((ASN1_VALUE *)a, &ASN1_BIT_STRING_it);
84}
85
67int 86int
68ASN1_BIT_STRING_set(ASN1_BIT_STRING *x, unsigned char *d, int len) 87ASN1_BIT_STRING_set(ASN1_BIT_STRING *x, unsigned char *d, int len)
69{ 88{
@@ -313,3 +332,16 @@ c2i_ASN1_BIT_STRING(ASN1_BIT_STRING **a, const unsigned char **pp, long len)
313 332
314 return (NULL); 333 return (NULL);
315} 334}
335
336int
337i2d_ASN1_BIT_STRING(ASN1_BIT_STRING *a, unsigned char **out)
338{
339 return ASN1_item_i2d((ASN1_VALUE *)a, out, &ASN1_BIT_STRING_it);
340}
341
342ASN1_BIT_STRING *
343d2i_ASN1_BIT_STRING(ASN1_BIT_STRING **a, const unsigned char **in, long len)
344{
345 return (ASN1_BIT_STRING *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
346 &ASN1_BIT_STRING_it);
347}
diff --git a/src/lib/libcrypto/asn1/a_enum.c b/src/lib/libcrypto/asn1/a_enum.c
index e0e64f0a81..f48543ef3f 100644
--- a/src/lib/libcrypto/asn1/a_enum.c
+++ b/src/lib/libcrypto/asn1/a_enum.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: a_enum.c,v 1.21 2021/12/15 18:00:31 jsing Exp $ */ 1/* $OpenBSD: a_enum.c,v 1.22 2021/12/25 08:52:44 jsing Exp $ */
2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) 2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3 * All rights reserved. 3 * All rights reserved.
4 * 4 *
@@ -60,6 +60,7 @@
60#include <stdio.h> 60#include <stdio.h>
61 61
62#include <openssl/asn1.h> 62#include <openssl/asn1.h>
63#include <openssl/asn1t.h>
63#include <openssl/bn.h> 64#include <openssl/bn.h>
64#include <openssl/buffer.h> 65#include <openssl/buffer.h>
65#include <openssl/err.h> 66#include <openssl/err.h>
@@ -69,6 +70,24 @@
69 * for comments on encoding see a_int.c 70 * for comments on encoding see a_int.c
70 */ 71 */
71 72
73const ASN1_ITEM ASN1_ENUMERATED_it = {
74 .itype = ASN1_ITYPE_PRIMITIVE,
75 .utype = V_ASN1_ENUMERATED,
76 .sname = "ASN1_ENUMERATED",
77};
78
79ASN1_ENUMERATED *
80ASN1_ENUMERATED_new(void)
81{
82 return (ASN1_ENUMERATED *)ASN1_item_new(&ASN1_ENUMERATED_it);
83}
84
85void
86ASN1_ENUMERATED_free(ASN1_ENUMERATED *a)
87{
88 ASN1_item_free((ASN1_VALUE *)a, &ASN1_ENUMERATED_it);
89}
90
72int 91int
73ASN1_ENUMERATED_set(ASN1_ENUMERATED *a, long v) 92ASN1_ENUMERATED_set(ASN1_ENUMERATED *a, long v)
74{ 93{
@@ -320,3 +339,16 @@ err:
320 free(s); 339 free(s);
321 return (ret); 340 return (ret);
322} 341}
342
343int
344i2d_ASN1_ENUMERATED(ASN1_ENUMERATED *a, unsigned char **out)
345{
346 return ASN1_item_i2d((ASN1_VALUE *)a, out, &ASN1_ENUMERATED_it);
347}
348
349ASN1_ENUMERATED *
350d2i_ASN1_ENUMERATED(ASN1_ENUMERATED **a, const unsigned char **in, long len)
351{
352 return (ASN1_ENUMERATED *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
353 &ASN1_ENUMERATED_it);
354}
diff --git a/src/lib/libcrypto/asn1/a_int.c b/src/lib/libcrypto/asn1/a_int.c
index 9218a17c11..eac7546eac 100644
--- a/src/lib/libcrypto/asn1/a_int.c
+++ b/src/lib/libcrypto/asn1/a_int.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: a_int.c,v 1.36 2021/12/25 07:48:09 jsing Exp $ */ 1/* $OpenBSD: a_int.c,v 1.37 2021/12/25 08:52:44 jsing Exp $ */
2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) 2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3 * All rights reserved. 3 * All rights reserved.
4 * 4 *
@@ -61,10 +61,29 @@
61#include <string.h> 61#include <string.h>
62 62
63#include <openssl/asn1.h> 63#include <openssl/asn1.h>
64#include <openssl/asn1t.h>
64#include <openssl/bn.h> 65#include <openssl/bn.h>
65#include <openssl/buffer.h> 66#include <openssl/buffer.h>
66#include <openssl/err.h> 67#include <openssl/err.h>
67 68
69const ASN1_ITEM ASN1_INTEGER_it = {
70 .itype = ASN1_ITYPE_PRIMITIVE,
71 .utype = V_ASN1_INTEGER,
72 .sname = "ASN1_INTEGER",
73};
74
75ASN1_INTEGER *
76ASN1_INTEGER_new(void)
77{
78 return (ASN1_INTEGER *)ASN1_item_new(&ASN1_INTEGER_it);
79}
80
81void
82ASN1_INTEGER_free(ASN1_INTEGER *a)
83{
84 ASN1_item_free((ASN1_VALUE *)a, &ASN1_INTEGER_it);
85}
86
68static int 87static int
69ASN1_INTEGER_valid(const ASN1_INTEGER *a) 88ASN1_INTEGER_valid(const ASN1_INTEGER *a)
70{ 89{
@@ -567,6 +586,18 @@ err:
567 return (NULL); 586 return (NULL);
568} 587}
569 588
589int
590i2d_ASN1_INTEGER(ASN1_INTEGER *a, unsigned char **out)
591{
592 return ASN1_item_i2d((ASN1_VALUE *)a, out, &ASN1_INTEGER_it);
593}
594
595ASN1_INTEGER *
596d2i_ASN1_INTEGER(ASN1_INTEGER **a, const unsigned char **in, long len)
597{
598 return (ASN1_INTEGER *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
599 &ASN1_INTEGER_it);
600}
570 601
571/* This is a version of d2i_ASN1_INTEGER that ignores the sign bit of 602/* This is a version of d2i_ASN1_INTEGER that ignores the sign bit of
572 * ASN1 integers: some broken software can encode a positive INTEGER 603 * ASN1 integers: some broken software can encode a positive INTEGER
diff --git a/src/lib/libcrypto/asn1/a_object.c b/src/lib/libcrypto/asn1/a_object.c
index cc4f5dd424..a029a12fd8 100644
--- a/src/lib/libcrypto/asn1/a_object.c
+++ b/src/lib/libcrypto/asn1/a_object.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: a_object.c,v 1.34 2021/12/25 07:48:09 jsing Exp $ */ 1/* $OpenBSD: a_object.c,v 1.35 2021/12/25 08:52:44 jsing Exp $ */
2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) 2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3 * All rights reserved. 3 * All rights reserved.
4 * 4 *
@@ -61,11 +61,18 @@
61#include <string.h> 61#include <string.h>
62 62
63#include <openssl/asn1.h> 63#include <openssl/asn1.h>
64#include <openssl/asn1t.h>
64#include <openssl/bn.h> 65#include <openssl/bn.h>
65#include <openssl/err.h> 66#include <openssl/err.h>
66#include <openssl/buffer.h> 67#include <openssl/buffer.h>
67#include <openssl/objects.h> 68#include <openssl/objects.h>
68 69
70const ASN1_ITEM ASN1_OBJECT_it = {
71 .itype = ASN1_ITYPE_PRIMITIVE,
72 .utype = V_ASN1_OBJECT,
73 .sname = "ASN1_OBJECT",
74};
75
69ASN1_OBJECT * 76ASN1_OBJECT *
70ASN1_OBJECT_new(void) 77ASN1_OBJECT_new(void)
71{ 78{
diff --git a/src/lib/libcrypto/asn1/a_octet.c b/src/lib/libcrypto/asn1/a_octet.c
index d998675d3f..c1a25202c0 100644
--- a/src/lib/libcrypto/asn1/a_octet.c
+++ b/src/lib/libcrypto/asn1/a_octet.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: a_octet.c,v 1.10 2015/07/29 14:58:34 jsing Exp $ */ 1/* $OpenBSD: a_octet.c,v 1.11 2021/12/25 08:52:44 jsing Exp $ */
2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) 2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3 * All rights reserved. 3 * All rights reserved.
4 * 4 *
@@ -59,6 +59,26 @@
59#include <stdio.h> 59#include <stdio.h>
60 60
61#include <openssl/asn1.h> 61#include <openssl/asn1.h>
62#include <openssl/asn1t.h>
63
64const ASN1_ITEM ASN1_OCTET_STRING_it = {
65 .itype = ASN1_ITYPE_PRIMITIVE,
66 .utype = V_ASN1_OCTET_STRING,
67 .sname = "ASN1_OCTET_STRING",
68};
69
70ASN1_OCTET_STRING *
71ASN1_OCTET_STRING_new(void)
72{
73 return (ASN1_OCTET_STRING *)ASN1_item_new(&ASN1_OCTET_STRING_it);
74}
75
76void
77ASN1_OCTET_STRING_free(ASN1_OCTET_STRING *a)
78{
79 ASN1_item_free((ASN1_VALUE *)a, &ASN1_OCTET_STRING_it);
80}
81
62 82
63ASN1_OCTET_STRING * 83ASN1_OCTET_STRING *
64ASN1_OCTET_STRING_dup(const ASN1_OCTET_STRING *x) 84ASN1_OCTET_STRING_dup(const ASN1_OCTET_STRING *x)
@@ -77,3 +97,16 @@ ASN1_OCTET_STRING_set(ASN1_OCTET_STRING *x, const unsigned char *d, int len)
77{ 97{
78 return ASN1_STRING_set(x, d, len); 98 return ASN1_STRING_set(x, d, len);
79} 99}
100
101int
102i2d_ASN1_OCTET_STRING(ASN1_OCTET_STRING *a, unsigned char **out)
103{
104 return ASN1_item_i2d((ASN1_VALUE *)a, out, &ASN1_OCTET_STRING_it);
105}
106
107ASN1_OCTET_STRING *
108d2i_ASN1_OCTET_STRING(ASN1_OCTET_STRING **a, const unsigned char **in, long len)
109{
110 return (ASN1_OCTET_STRING *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
111 &ASN1_OCTET_STRING_it);
112}
diff --git a/src/lib/libcrypto/asn1/a_type.c b/src/lib/libcrypto/asn1/a_type.c
index a18ffe66ba..23fa9f602c 100644
--- a/src/lib/libcrypto/asn1/a_type.c
+++ b/src/lib/libcrypto/asn1/a_type.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: a_type.c,v 1.21 2019/10/24 16:36:10 jsing Exp $ */ 1/* $OpenBSD: a_type.c,v 1.22 2021/12/25 08:52:44 jsing Exp $ */
2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) 2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3 * All rights reserved. 3 * All rights reserved.
4 * 4 *
@@ -61,6 +61,18 @@
61#include <openssl/asn1t.h> 61#include <openssl/asn1t.h>
62#include <openssl/objects.h> 62#include <openssl/objects.h>
63 63
64ASN1_TYPE *
65ASN1_TYPE_new(void)
66{
67 return (ASN1_TYPE *)ASN1_item_new(&ASN1_ANY_it);
68}
69
70void
71ASN1_TYPE_free(ASN1_TYPE *a)
72{
73 ASN1_item_free((ASN1_VALUE *)a, &ASN1_ANY_it);
74}
75
64int 76int
65ASN1_TYPE_get(const ASN1_TYPE *a) 77ASN1_TYPE_get(const ASN1_TYPE *a)
66{ 78{
@@ -185,3 +197,16 @@ ASN1_TYPE_unpack_sequence(const ASN1_ITEM *it, const ASN1_TYPE *t)
185 return NULL; 197 return NULL;
186 return ASN1_item_unpack(t->value.sequence, it); 198 return ASN1_item_unpack(t->value.sequence, it);
187} 199}
200
201int
202i2d_ASN1_TYPE(ASN1_TYPE *a, unsigned char **out)
203{
204 return ASN1_item_i2d((ASN1_VALUE *)a, out, &ASN1_ANY_it);
205}
206
207ASN1_TYPE *
208d2i_ASN1_TYPE(ASN1_TYPE **a, const unsigned char **in, long len)
209{
210 return (ASN1_TYPE *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
211 &ASN1_ANY_it);
212}
diff --git a/src/lib/libcrypto/asn1/tasn_typ.c b/src/lib/libcrypto/asn1/tasn_typ.c
index 7a2b90f390..d35913b46e 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.15 2021/12/23 18:04:41 tb Exp $ */ 1/* $OpenBSD: tasn_typ.c,v 1.16 2021/12/25 08:52:44 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 */
@@ -61,134 +61,6 @@
61 61
62/* Declarations for string types */ 62/* Declarations for string types */
63 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 = { 64const ASN1_ITEM ASN1_NULL_it = {
193 .itype = ASN1_ITYPE_PRIMITIVE, 65 .itype = ASN1_ITYPE_PRIMITIVE,
194 .utype = V_ASN1_NULL, 66 .utype = V_ASN1_NULL,
@@ -221,13 +93,6 @@ ASN1_NULL_free(ASN1_NULL *a)
221} 93}
222 94
223 95
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 = { 96const ASN1_ITEM ASN1_UTF8STRING_it = {
232 .itype = ASN1_ITYPE_PRIMITIVE, 97 .itype = ASN1_ITYPE_PRIMITIVE,
233 .utype = V_ASN1_UTF8STRING, 98 .utype = V_ASN1_UTF8STRING,
@@ -552,13 +417,13 @@ ASN1_BMPSTRING_free(ASN1_BMPSTRING *a)
552 ASN1_item_free((ASN1_VALUE *)a, &ASN1_BMPSTRING_it); 417 ASN1_item_free((ASN1_VALUE *)a, &ASN1_BMPSTRING_it);
553} 418}
554 419
555
556const ASN1_ITEM ASN1_ANY_it = { 420const ASN1_ITEM ASN1_ANY_it = {
557 .itype = ASN1_ITYPE_PRIMITIVE, 421 .itype = ASN1_ITYPE_PRIMITIVE,
558 .utype = V_ASN1_ANY, 422 .utype = V_ASN1_ANY,
559 .sname = "ASN1_ANY", 423 .sname = "ASN1_ANY",
560}; 424};
561 425
426
562/* Just swallow an ASN1_SEQUENCE in an ASN1_STRING */ 427/* Just swallow an ASN1_SEQUENCE in an ASN1_STRING */
563 428
564const ASN1_ITEM ASN1_SEQUENCE_it = { 429const ASN1_ITEM ASN1_SEQUENCE_it = {
@@ -568,31 +433,6 @@ const ASN1_ITEM ASN1_SEQUENCE_it = {
568}; 433};
569 434
570 435
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 */ 436/* Multistring types */
597 437
598 438