summaryrefslogtreecommitdiff
path: root/src/lib/libcrypto/x509v3/v3_genn.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/libcrypto/x509v3/v3_genn.c')
-rw-r--r--src/lib/libcrypto/x509v3/v3_genn.c106
1 files changed, 101 insertions, 5 deletions
diff --git a/src/lib/libcrypto/x509v3/v3_genn.c b/src/lib/libcrypto/x509v3/v3_genn.c
index 716f4a7b99..25d7f447d2 100644
--- a/src/lib/libcrypto/x509v3/v3_genn.c
+++ b/src/lib/libcrypto/x509v3/v3_genn.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: v3_genn.c,v 1.9 2014/07/11 08:44:49 jsing Exp $ */ 1/* $OpenBSD: v3_genn.c,v 1.10 2015/02/09 16:03:11 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 1999. 3 * project 1999.
4 */ 4 */
@@ -69,14 +69,62 @@ ASN1_SEQUENCE(OTHERNAME) = {
69 ASN1_EXP(OTHERNAME, value, ASN1_ANY, 0) 69 ASN1_EXP(OTHERNAME, value, ASN1_ANY, 0)
70} ASN1_SEQUENCE_END(OTHERNAME) 70} ASN1_SEQUENCE_END(OTHERNAME)
71 71
72IMPLEMENT_ASN1_FUNCTIONS(OTHERNAME) 72
73OTHERNAME *
74d2i_OTHERNAME(OTHERNAME **a, const unsigned char **in, long len)
75{
76 return (OTHERNAME *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
77 &OTHERNAME_it);
78}
79
80int
81i2d_OTHERNAME(OTHERNAME *a, unsigned char **out)
82{
83 return ASN1_item_i2d((ASN1_VALUE *)a, out, &OTHERNAME_it);
84}
85
86OTHERNAME *
87OTHERNAME_new(void)
88{
89 return (OTHERNAME *)ASN1_item_new(&OTHERNAME_it);
90}
91
92void
93OTHERNAME_free(OTHERNAME *a)
94{
95 ASN1_item_free((ASN1_VALUE *)a, &OTHERNAME_it);
96}
73 97
74ASN1_SEQUENCE(EDIPARTYNAME) = { 98ASN1_SEQUENCE(EDIPARTYNAME) = {
75 ASN1_IMP_OPT(EDIPARTYNAME, nameAssigner, DIRECTORYSTRING, 0), 99 ASN1_IMP_OPT(EDIPARTYNAME, nameAssigner, DIRECTORYSTRING, 0),
76 ASN1_IMP_OPT(EDIPARTYNAME, partyName, DIRECTORYSTRING, 1) 100 ASN1_IMP_OPT(EDIPARTYNAME, partyName, DIRECTORYSTRING, 1)
77} ASN1_SEQUENCE_END(EDIPARTYNAME) 101} ASN1_SEQUENCE_END(EDIPARTYNAME)
78 102
79IMPLEMENT_ASN1_FUNCTIONS(EDIPARTYNAME) 103
104EDIPARTYNAME *
105d2i_EDIPARTYNAME(EDIPARTYNAME **a, const unsigned char **in, long len)
106{
107 return (EDIPARTYNAME *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
108 &EDIPARTYNAME_it);
109}
110
111int
112i2d_EDIPARTYNAME(EDIPARTYNAME *a, unsigned char **out)
113{
114 return ASN1_item_i2d((ASN1_VALUE *)a, out, &EDIPARTYNAME_it);
115}
116
117EDIPARTYNAME *
118EDIPARTYNAME_new(void)
119{
120 return (EDIPARTYNAME *)ASN1_item_new(&EDIPARTYNAME_it);
121}
122
123void
124EDIPARTYNAME_free(EDIPARTYNAME *a)
125{
126 ASN1_item_free((ASN1_VALUE *)a, &EDIPARTYNAME_it);
127}
80 128
81ASN1_CHOICE(GENERAL_NAME) = { 129ASN1_CHOICE(GENERAL_NAME) = {
82 ASN1_IMP(GENERAL_NAME, d.otherName, OTHERNAME, GEN_OTHERNAME), 130 ASN1_IMP(GENERAL_NAME, d.otherName, OTHERNAME, GEN_OTHERNAME),
@@ -92,13 +140,61 @@ ASN1_CHOICE(GENERAL_NAME) = {
92 ASN1_IMP(GENERAL_NAME, d.registeredID, ASN1_OBJECT, GEN_RID) 140 ASN1_IMP(GENERAL_NAME, d.registeredID, ASN1_OBJECT, GEN_RID)
93} ASN1_CHOICE_END(GENERAL_NAME) 141} ASN1_CHOICE_END(GENERAL_NAME)
94 142
95IMPLEMENT_ASN1_FUNCTIONS(GENERAL_NAME) 143
144GENERAL_NAME *
145d2i_GENERAL_NAME(GENERAL_NAME **a, const unsigned char **in, long len)
146{
147 return (GENERAL_NAME *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
148 &GENERAL_NAME_it);
149}
150
151int
152i2d_GENERAL_NAME(GENERAL_NAME *a, unsigned char **out)
153{
154 return ASN1_item_i2d((ASN1_VALUE *)a, out, &GENERAL_NAME_it);
155}
156
157GENERAL_NAME *
158GENERAL_NAME_new(void)
159{
160 return (GENERAL_NAME *)ASN1_item_new(&GENERAL_NAME_it);
161}
162
163void
164GENERAL_NAME_free(GENERAL_NAME *a)
165{
166 ASN1_item_free((ASN1_VALUE *)a, &GENERAL_NAME_it);
167}
96 168
97ASN1_ITEM_TEMPLATE(GENERAL_NAMES) = 169ASN1_ITEM_TEMPLATE(GENERAL_NAMES) =
98 ASN1_EX_TEMPLATE_TYPE(ASN1_TFLG_SEQUENCE_OF, 0, GeneralNames, GENERAL_NAME) 170 ASN1_EX_TEMPLATE_TYPE(ASN1_TFLG_SEQUENCE_OF, 0, GeneralNames, GENERAL_NAME)
99ASN1_ITEM_TEMPLATE_END(GENERAL_NAMES) 171ASN1_ITEM_TEMPLATE_END(GENERAL_NAMES)
100 172
101IMPLEMENT_ASN1_FUNCTIONS(GENERAL_NAMES) 173
174GENERAL_NAMES *
175d2i_GENERAL_NAMES(GENERAL_NAMES **a, const unsigned char **in, long len)
176{
177 return (GENERAL_NAMES *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
178 &GENERAL_NAMES_it);
179}
180
181int
182i2d_GENERAL_NAMES(GENERAL_NAMES *a, unsigned char **out)
183{
184 return ASN1_item_i2d((ASN1_VALUE *)a, out, &GENERAL_NAMES_it);
185}
186
187GENERAL_NAMES *
188GENERAL_NAMES_new(void)
189{
190 return (GENERAL_NAMES *)ASN1_item_new(&GENERAL_NAMES_it);
191}
192
193void
194GENERAL_NAMES_free(GENERAL_NAMES *a)
195{
196 ASN1_item_free((ASN1_VALUE *)a, &GENERAL_NAMES_it);
197}
102 198
103GENERAL_NAME * 199GENERAL_NAME *
104GENERAL_NAME_dup(GENERAL_NAME *a) 200GENERAL_NAME_dup(GENERAL_NAME *a)