summaryrefslogtreecommitdiff
path: root/src/lib/libcrypto/x509v3/v3_cpols.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/libcrypto/x509v3/v3_cpols.c')
-rw-r--r--src/lib/libcrypto/x509v3/v3_cpols.c132
1 files changed, 126 insertions, 6 deletions
diff --git a/src/lib/libcrypto/x509v3/v3_cpols.c b/src/lib/libcrypto/x509v3/v3_cpols.c
index d683db697e..6ceb93d372 100644
--- a/src/lib/libcrypto/x509v3/v3_cpols.c
+++ b/src/lib/libcrypto/x509v3/v3_cpols.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: v3_cpols.c,v 1.16 2014/10/05 18:27:33 miod Exp $ */ 1/* $OpenBSD: v3_cpols.c,v 1.17 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 */
@@ -97,14 +97,62 @@ ASN1_ITEM_TEMPLATE(CERTIFICATEPOLICIES) =
97 POLICYINFO) 97 POLICYINFO)
98ASN1_ITEM_TEMPLATE_END(CERTIFICATEPOLICIES) 98ASN1_ITEM_TEMPLATE_END(CERTIFICATEPOLICIES)
99 99
100IMPLEMENT_ASN1_FUNCTIONS(CERTIFICATEPOLICIES) 100
101CERTIFICATEPOLICIES *
102d2i_CERTIFICATEPOLICIES(CERTIFICATEPOLICIES **a, const unsigned char **in, long len)
103{
104 return (CERTIFICATEPOLICIES *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
105 &CERTIFICATEPOLICIES_it);
106}
107
108int
109i2d_CERTIFICATEPOLICIES(CERTIFICATEPOLICIES *a, unsigned char **out)
110{
111 return ASN1_item_i2d((ASN1_VALUE *)a, out, &CERTIFICATEPOLICIES_it);
112}
113
114CERTIFICATEPOLICIES *
115CERTIFICATEPOLICIES_new(void)
116{
117 return (CERTIFICATEPOLICIES *)ASN1_item_new(&CERTIFICATEPOLICIES_it);
118}
119
120void
121CERTIFICATEPOLICIES_free(CERTIFICATEPOLICIES *a)
122{
123 ASN1_item_free((ASN1_VALUE *)a, &CERTIFICATEPOLICIES_it);
124}
101 125
102ASN1_SEQUENCE(POLICYINFO) = { 126ASN1_SEQUENCE(POLICYINFO) = {
103 ASN1_SIMPLE(POLICYINFO, policyid, ASN1_OBJECT), 127 ASN1_SIMPLE(POLICYINFO, policyid, ASN1_OBJECT),
104 ASN1_SEQUENCE_OF_OPT(POLICYINFO, qualifiers, POLICYQUALINFO) 128 ASN1_SEQUENCE_OF_OPT(POLICYINFO, qualifiers, POLICYQUALINFO)
105} ASN1_SEQUENCE_END(POLICYINFO) 129} ASN1_SEQUENCE_END(POLICYINFO)
106 130
107IMPLEMENT_ASN1_FUNCTIONS(POLICYINFO) 131
132POLICYINFO *
133d2i_POLICYINFO(POLICYINFO **a, const unsigned char **in, long len)
134{
135 return (POLICYINFO *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
136 &POLICYINFO_it);
137}
138
139int
140i2d_POLICYINFO(POLICYINFO *a, unsigned char **out)
141{
142 return ASN1_item_i2d((ASN1_VALUE *)a, out, &POLICYINFO_it);
143}
144
145POLICYINFO *
146POLICYINFO_new(void)
147{
148 return (POLICYINFO *)ASN1_item_new(&POLICYINFO_it);
149}
150
151void
152POLICYINFO_free(POLICYINFO *a)
153{
154 ASN1_item_free((ASN1_VALUE *)a, &POLICYINFO_it);
155}
108 156
109ASN1_ADB_TEMPLATE(policydefault) = 157ASN1_ADB_TEMPLATE(policydefault) =
110 ASN1_SIMPLE(POLICYQUALINFO, d.other, ASN1_ANY); 158 ASN1_SIMPLE(POLICYQUALINFO, d.other, ASN1_ANY);
@@ -119,21 +167,93 @@ ASN1_SEQUENCE(POLICYQUALINFO) = {
119 ASN1_ADB_OBJECT(POLICYQUALINFO) 167 ASN1_ADB_OBJECT(POLICYQUALINFO)
120} ASN1_SEQUENCE_END(POLICYQUALINFO) 168} ASN1_SEQUENCE_END(POLICYQUALINFO)
121 169
122IMPLEMENT_ASN1_FUNCTIONS(POLICYQUALINFO) 170
171POLICYQUALINFO *
172d2i_POLICYQUALINFO(POLICYQUALINFO **a, const unsigned char **in, long len)
173{
174 return (POLICYQUALINFO *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
175 &POLICYQUALINFO_it);
176}
177
178int
179i2d_POLICYQUALINFO(POLICYQUALINFO *a, unsigned char **out)
180{
181 return ASN1_item_i2d((ASN1_VALUE *)a, out, &POLICYQUALINFO_it);
182}
183
184POLICYQUALINFO *
185POLICYQUALINFO_new(void)
186{
187 return (POLICYQUALINFO *)ASN1_item_new(&POLICYQUALINFO_it);
188}
189
190void
191POLICYQUALINFO_free(POLICYQUALINFO *a)
192{
193 ASN1_item_free((ASN1_VALUE *)a, &POLICYQUALINFO_it);
194}
123 195
124ASN1_SEQUENCE(USERNOTICE) = { 196ASN1_SEQUENCE(USERNOTICE) = {
125 ASN1_OPT(USERNOTICE, noticeref, NOTICEREF), 197 ASN1_OPT(USERNOTICE, noticeref, NOTICEREF),
126 ASN1_OPT(USERNOTICE, exptext, DISPLAYTEXT) 198 ASN1_OPT(USERNOTICE, exptext, DISPLAYTEXT)
127} ASN1_SEQUENCE_END(USERNOTICE) 199} ASN1_SEQUENCE_END(USERNOTICE)
128 200
129IMPLEMENT_ASN1_FUNCTIONS(USERNOTICE) 201
202USERNOTICE *
203d2i_USERNOTICE(USERNOTICE **a, const unsigned char **in, long len)
204{
205 return (USERNOTICE *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
206 &USERNOTICE_it);
207}
208
209int
210i2d_USERNOTICE(USERNOTICE *a, unsigned char **out)
211{
212 return ASN1_item_i2d((ASN1_VALUE *)a, out, &USERNOTICE_it);
213}
214
215USERNOTICE *
216USERNOTICE_new(void)
217{
218 return (USERNOTICE *)ASN1_item_new(&USERNOTICE_it);
219}
220
221void
222USERNOTICE_free(USERNOTICE *a)
223{
224 ASN1_item_free((ASN1_VALUE *)a, &USERNOTICE_it);
225}
130 226
131ASN1_SEQUENCE(NOTICEREF) = { 227ASN1_SEQUENCE(NOTICEREF) = {
132 ASN1_SIMPLE(NOTICEREF, organization, DISPLAYTEXT), 228 ASN1_SIMPLE(NOTICEREF, organization, DISPLAYTEXT),
133 ASN1_SEQUENCE_OF(NOTICEREF, noticenos, ASN1_INTEGER) 229 ASN1_SEQUENCE_OF(NOTICEREF, noticenos, ASN1_INTEGER)
134} ASN1_SEQUENCE_END(NOTICEREF) 230} ASN1_SEQUENCE_END(NOTICEREF)
135 231
136IMPLEMENT_ASN1_FUNCTIONS(NOTICEREF) 232
233NOTICEREF *
234d2i_NOTICEREF(NOTICEREF **a, const unsigned char **in, long len)
235{
236 return (NOTICEREF *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
237 &NOTICEREF_it);
238}
239
240int
241i2d_NOTICEREF(NOTICEREF *a, unsigned char **out)
242{
243 return ASN1_item_i2d((ASN1_VALUE *)a, out, &NOTICEREF_it);
244}
245
246NOTICEREF *
247NOTICEREF_new(void)
248{
249 return (NOTICEREF *)ASN1_item_new(&NOTICEREF_it);
250}
251
252void
253NOTICEREF_free(NOTICEREF *a)
254{
255 ASN1_item_free((ASN1_VALUE *)a, &NOTICEREF_it);
256}
137 257
138static 258static
139STACK_OF(POLICYINFO) *r2i_certpol(X509V3_EXT_METHOD *method, X509V3_CTX *ctx, 259STACK_OF(POLICYINFO) *r2i_certpol(X509V3_EXT_METHOD *method, X509V3_CTX *ctx,