diff options
author | jsing <> | 2015-07-25 14:52:47 +0000 |
---|---|---|
committer | jsing <> | 2015-07-25 14:52:47 +0000 |
commit | 553cd32c2ee170cb8cf8d7b221c1512f3d86999e (patch) | |
tree | 3a4ef75aff2b83beae2d00f42e4b715192f4e2fc /src/lib/libcrypto/ocsp/ocsp_asn.c | |
parent | 803d578ff8ba6027ffddbc4f6037a9bd5e2d0590 (diff) | |
download | openbsd-553cd32c2ee170cb8cf8d7b221c1512f3d86999e.tar.gz openbsd-553cd32c2ee170cb8cf8d7b221c1512f3d86999e.tar.bz2 openbsd-553cd32c2ee170cb8cf8d7b221c1512f3d86999e.zip |
Expand ASN.1 template macros - no change in generated assembly.
Diffstat (limited to 'src/lib/libcrypto/ocsp/ocsp_asn.c')
-rw-r--r-- | src/lib/libcrypto/ocsp/ocsp_asn.c | 572 |
1 files changed, 496 insertions, 76 deletions
diff --git a/src/lib/libcrypto/ocsp/ocsp_asn.c b/src/lib/libcrypto/ocsp/ocsp_asn.c index 6ca21af89a..72e7638c75 100644 --- a/src/lib/libcrypto/ocsp/ocsp_asn.c +++ b/src/lib/libcrypto/ocsp/ocsp_asn.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: ocsp_asn.c,v 1.7 2015/02/09 16:04:46 jsing Exp $ */ | 1 | /* $OpenBSD: ocsp_asn.c,v 1.8 2015/07/25 14:52:47 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 | */ |
@@ -59,11 +59,39 @@ | |||
59 | #include <openssl/asn1t.h> | 59 | #include <openssl/asn1t.h> |
60 | #include <openssl/ocsp.h> | 60 | #include <openssl/ocsp.h> |
61 | 61 | ||
62 | ASN1_SEQUENCE(OCSP_SIGNATURE) = { | 62 | static const ASN1_TEMPLATE OCSP_SIGNATURE_seq_tt[] = { |
63 | ASN1_SIMPLE(OCSP_SIGNATURE, signatureAlgorithm, X509_ALGOR), | 63 | { |
64 | ASN1_SIMPLE(OCSP_SIGNATURE, signature, ASN1_BIT_STRING), | 64 | .flags = 0, |
65 | ASN1_EXP_SEQUENCE_OF_OPT(OCSP_SIGNATURE, certs, X509, 0) | 65 | .tag = 0, |
66 | } ASN1_SEQUENCE_END(OCSP_SIGNATURE) | 66 | .offset = offsetof(OCSP_SIGNATURE, signatureAlgorithm), |
67 | .field_name = "signatureAlgorithm", | ||
68 | .item = &X509_ALGOR_it, | ||
69 | }, | ||
70 | { | ||
71 | .flags = 0, | ||
72 | .tag = 0, | ||
73 | .offset = offsetof(OCSP_SIGNATURE, signature), | ||
74 | .field_name = "signature", | ||
75 | .item = &ASN1_BIT_STRING_it, | ||
76 | }, | ||
77 | { | ||
78 | .flags = ASN1_TFLG_EXPLICIT | ASN1_TFLG_SEQUENCE_OF | ASN1_TFLG_OPTIONAL, | ||
79 | .tag = 0, | ||
80 | .offset = offsetof(OCSP_SIGNATURE, certs), | ||
81 | .field_name = "certs", | ||
82 | .item = &X509_it, | ||
83 | }, | ||
84 | }; | ||
85 | |||
86 | const ASN1_ITEM OCSP_SIGNATURE_it = { | ||
87 | .itype = ASN1_ITYPE_SEQUENCE, | ||
88 | .utype = V_ASN1_SEQUENCE, | ||
89 | .templates = OCSP_SIGNATURE_seq_tt, | ||
90 | .tcount = sizeof(OCSP_SIGNATURE_seq_tt) / sizeof(ASN1_TEMPLATE), | ||
91 | .funcs = NULL, | ||
92 | .size = sizeof(OCSP_SIGNATURE), | ||
93 | .sname = "OCSP_SIGNATURE", | ||
94 | }; | ||
67 | 95 | ||
68 | 96 | ||
69 | OCSP_SIGNATURE * | 97 | OCSP_SIGNATURE * |
@@ -91,12 +119,46 @@ OCSP_SIGNATURE_free(OCSP_SIGNATURE *a) | |||
91 | ASN1_item_free((ASN1_VALUE *)a, &OCSP_SIGNATURE_it); | 119 | ASN1_item_free((ASN1_VALUE *)a, &OCSP_SIGNATURE_it); |
92 | } | 120 | } |
93 | 121 | ||
94 | ASN1_SEQUENCE(OCSP_CERTID) = { | 122 | static const ASN1_TEMPLATE OCSP_CERTID_seq_tt[] = { |
95 | ASN1_SIMPLE(OCSP_CERTID, hashAlgorithm, X509_ALGOR), | 123 | { |
96 | ASN1_SIMPLE(OCSP_CERTID, issuerNameHash, ASN1_OCTET_STRING), | 124 | .flags = 0, |
97 | ASN1_SIMPLE(OCSP_CERTID, issuerKeyHash, ASN1_OCTET_STRING), | 125 | .tag = 0, |
98 | ASN1_SIMPLE(OCSP_CERTID, serialNumber, ASN1_INTEGER) | 126 | .offset = offsetof(OCSP_CERTID, hashAlgorithm), |
99 | } ASN1_SEQUENCE_END(OCSP_CERTID) | 127 | .field_name = "hashAlgorithm", |
128 | .item = &X509_ALGOR_it, | ||
129 | }, | ||
130 | { | ||
131 | .flags = 0, | ||
132 | .tag = 0, | ||
133 | .offset = offsetof(OCSP_CERTID, issuerNameHash), | ||
134 | .field_name = "issuerNameHash", | ||
135 | .item = &ASN1_OCTET_STRING_it, | ||
136 | }, | ||
137 | { | ||
138 | .flags = 0, | ||
139 | .tag = 0, | ||
140 | .offset = offsetof(OCSP_CERTID, issuerKeyHash), | ||
141 | .field_name = "issuerKeyHash", | ||
142 | .item = &ASN1_OCTET_STRING_it, | ||
143 | }, | ||
144 | { | ||
145 | .flags = 0, | ||
146 | .tag = 0, | ||
147 | .offset = offsetof(OCSP_CERTID, serialNumber), | ||
148 | .field_name = "serialNumber", | ||
149 | .item = &ASN1_INTEGER_it, | ||
150 | }, | ||
151 | }; | ||
152 | |||
153 | const ASN1_ITEM OCSP_CERTID_it = { | ||
154 | .itype = ASN1_ITYPE_SEQUENCE, | ||
155 | .utype = V_ASN1_SEQUENCE, | ||
156 | .templates = OCSP_CERTID_seq_tt, | ||
157 | .tcount = sizeof(OCSP_CERTID_seq_tt) / sizeof(ASN1_TEMPLATE), | ||
158 | .funcs = NULL, | ||
159 | .size = sizeof(OCSP_CERTID), | ||
160 | .sname = "OCSP_CERTID", | ||
161 | }; | ||
100 | 162 | ||
101 | 163 | ||
102 | OCSP_CERTID * | 164 | OCSP_CERTID * |
@@ -124,10 +186,32 @@ OCSP_CERTID_free(OCSP_CERTID *a) | |||
124 | ASN1_item_free((ASN1_VALUE *)a, &OCSP_CERTID_it); | 186 | ASN1_item_free((ASN1_VALUE *)a, &OCSP_CERTID_it); |
125 | } | 187 | } |
126 | 188 | ||
127 | ASN1_SEQUENCE(OCSP_ONEREQ) = { | 189 | static const ASN1_TEMPLATE OCSP_ONEREQ_seq_tt[] = { |
128 | ASN1_SIMPLE(OCSP_ONEREQ, reqCert, OCSP_CERTID), | 190 | { |
129 | ASN1_EXP_SEQUENCE_OF_OPT(OCSP_ONEREQ, singleRequestExtensions, X509_EXTENSION, 0) | 191 | .flags = 0, |
130 | } ASN1_SEQUENCE_END(OCSP_ONEREQ) | 192 | .tag = 0, |
193 | .offset = offsetof(OCSP_ONEREQ, reqCert), | ||
194 | .field_name = "reqCert", | ||
195 | .item = &OCSP_CERTID_it, | ||
196 | }, | ||
197 | { | ||
198 | .flags = ASN1_TFLG_EXPLICIT | ASN1_TFLG_SEQUENCE_OF | ASN1_TFLG_OPTIONAL, | ||
199 | .tag = 0, | ||
200 | .offset = offsetof(OCSP_ONEREQ, singleRequestExtensions), | ||
201 | .field_name = "singleRequestExtensions", | ||
202 | .item = &X509_EXTENSION_it, | ||
203 | }, | ||
204 | }; | ||
205 | |||
206 | const ASN1_ITEM OCSP_ONEREQ_it = { | ||
207 | .itype = ASN1_ITYPE_SEQUENCE, | ||
208 | .utype = V_ASN1_SEQUENCE, | ||
209 | .templates = OCSP_ONEREQ_seq_tt, | ||
210 | .tcount = sizeof(OCSP_ONEREQ_seq_tt) / sizeof(ASN1_TEMPLATE), | ||
211 | .funcs = NULL, | ||
212 | .size = sizeof(OCSP_ONEREQ), | ||
213 | .sname = "OCSP_ONEREQ", | ||
214 | }; | ||
131 | 215 | ||
132 | 216 | ||
133 | OCSP_ONEREQ * | 217 | OCSP_ONEREQ * |
@@ -155,12 +239,46 @@ OCSP_ONEREQ_free(OCSP_ONEREQ *a) | |||
155 | ASN1_item_free((ASN1_VALUE *)a, &OCSP_ONEREQ_it); | 239 | ASN1_item_free((ASN1_VALUE *)a, &OCSP_ONEREQ_it); |
156 | } | 240 | } |
157 | 241 | ||
158 | ASN1_SEQUENCE(OCSP_REQINFO) = { | 242 | static const ASN1_TEMPLATE OCSP_REQINFO_seq_tt[] = { |
159 | ASN1_EXP_OPT(OCSP_REQINFO, version, ASN1_INTEGER, 0), | 243 | { |
160 | ASN1_EXP_OPT(OCSP_REQINFO, requestorName, GENERAL_NAME, 1), | 244 | .flags = ASN1_TFLG_EXPLICIT | ASN1_TFLG_OPTIONAL, |
161 | ASN1_SEQUENCE_OF(OCSP_REQINFO, requestList, OCSP_ONEREQ), | 245 | .tag = 0, |
162 | ASN1_EXP_SEQUENCE_OF_OPT(OCSP_REQINFO, requestExtensions, X509_EXTENSION, 2) | 246 | .offset = offsetof(OCSP_REQINFO, version), |
163 | } ASN1_SEQUENCE_END(OCSP_REQINFO) | 247 | .field_name = "version", |
248 | .item = &ASN1_INTEGER_it, | ||
249 | }, | ||
250 | { | ||
251 | .flags = ASN1_TFLG_EXPLICIT | ASN1_TFLG_OPTIONAL, | ||
252 | .tag = 1, | ||
253 | .offset = offsetof(OCSP_REQINFO, requestorName), | ||
254 | .field_name = "requestorName", | ||
255 | .item = &GENERAL_NAME_it, | ||
256 | }, | ||
257 | { | ||
258 | .flags = ASN1_TFLG_SEQUENCE_OF, | ||
259 | .tag = 0, | ||
260 | .offset = offsetof(OCSP_REQINFO, requestList), | ||
261 | .field_name = "requestList", | ||
262 | .item = &OCSP_ONEREQ_it, | ||
263 | }, | ||
264 | { | ||
265 | .flags = ASN1_TFLG_EXPLICIT | ASN1_TFLG_SEQUENCE_OF | ASN1_TFLG_OPTIONAL, | ||
266 | .tag = 2, | ||
267 | .offset = offsetof(OCSP_REQINFO, requestExtensions), | ||
268 | .field_name = "requestExtensions", | ||
269 | .item = &X509_EXTENSION_it, | ||
270 | }, | ||
271 | }; | ||
272 | |||
273 | const ASN1_ITEM OCSP_REQINFO_it = { | ||
274 | .itype = ASN1_ITYPE_SEQUENCE, | ||
275 | .utype = V_ASN1_SEQUENCE, | ||
276 | .templates = OCSP_REQINFO_seq_tt, | ||
277 | .tcount = sizeof(OCSP_REQINFO_seq_tt) / sizeof(ASN1_TEMPLATE), | ||
278 | .funcs = NULL, | ||
279 | .size = sizeof(OCSP_REQINFO), | ||
280 | .sname = "OCSP_REQINFO", | ||
281 | }; | ||
164 | 282 | ||
165 | 283 | ||
166 | OCSP_REQINFO * | 284 | OCSP_REQINFO * |
@@ -188,10 +306,32 @@ OCSP_REQINFO_free(OCSP_REQINFO *a) | |||
188 | ASN1_item_free((ASN1_VALUE *)a, &OCSP_REQINFO_it); | 306 | ASN1_item_free((ASN1_VALUE *)a, &OCSP_REQINFO_it); |
189 | } | 307 | } |
190 | 308 | ||
191 | ASN1_SEQUENCE(OCSP_REQUEST) = { | 309 | static const ASN1_TEMPLATE OCSP_REQUEST_seq_tt[] = { |
192 | ASN1_SIMPLE(OCSP_REQUEST, tbsRequest, OCSP_REQINFO), | 310 | { |
193 | ASN1_EXP_OPT(OCSP_REQUEST, optionalSignature, OCSP_SIGNATURE, 0) | 311 | .flags = 0, |
194 | } ASN1_SEQUENCE_END(OCSP_REQUEST) | 312 | .tag = 0, |
313 | .offset = offsetof(OCSP_REQUEST, tbsRequest), | ||
314 | .field_name = "tbsRequest", | ||
315 | .item = &OCSP_REQINFO_it, | ||
316 | }, | ||
317 | { | ||
318 | .flags = ASN1_TFLG_EXPLICIT | ASN1_TFLG_OPTIONAL, | ||
319 | .tag = 0, | ||
320 | .offset = offsetof(OCSP_REQUEST, optionalSignature), | ||
321 | .field_name = "optionalSignature", | ||
322 | .item = &OCSP_SIGNATURE_it, | ||
323 | }, | ||
324 | }; | ||
325 | |||
326 | const ASN1_ITEM OCSP_REQUEST_it = { | ||
327 | .itype = ASN1_ITYPE_SEQUENCE, | ||
328 | .utype = V_ASN1_SEQUENCE, | ||
329 | .templates = OCSP_REQUEST_seq_tt, | ||
330 | .tcount = sizeof(OCSP_REQUEST_seq_tt) / sizeof(ASN1_TEMPLATE), | ||
331 | .funcs = NULL, | ||
332 | .size = sizeof(OCSP_REQUEST), | ||
333 | .sname = "OCSP_REQUEST", | ||
334 | }; | ||
195 | 335 | ||
196 | 336 | ||
197 | OCSP_REQUEST * | 337 | OCSP_REQUEST * |
@@ -221,10 +361,32 @@ OCSP_REQUEST_free(OCSP_REQUEST *a) | |||
221 | 361 | ||
222 | /* OCSP_RESPONSE templates */ | 362 | /* OCSP_RESPONSE templates */ |
223 | 363 | ||
224 | ASN1_SEQUENCE(OCSP_RESPBYTES) = { | 364 | static const ASN1_TEMPLATE OCSP_RESPBYTES_seq_tt[] = { |
225 | ASN1_SIMPLE(OCSP_RESPBYTES, responseType, ASN1_OBJECT), | 365 | { |
226 | ASN1_SIMPLE(OCSP_RESPBYTES, response, ASN1_OCTET_STRING) | 366 | .flags = 0, |
227 | } ASN1_SEQUENCE_END(OCSP_RESPBYTES) | 367 | .tag = 0, |
368 | .offset = offsetof(OCSP_RESPBYTES, responseType), | ||
369 | .field_name = "responseType", | ||
370 | .item = &ASN1_OBJECT_it, | ||
371 | }, | ||
372 | { | ||
373 | .flags = 0, | ||
374 | .tag = 0, | ||
375 | .offset = offsetof(OCSP_RESPBYTES, response), | ||
376 | .field_name = "response", | ||
377 | .item = &ASN1_OCTET_STRING_it, | ||
378 | }, | ||
379 | }; | ||
380 | |||
381 | const ASN1_ITEM OCSP_RESPBYTES_it = { | ||
382 | .itype = ASN1_ITYPE_SEQUENCE, | ||
383 | .utype = V_ASN1_SEQUENCE, | ||
384 | .templates = OCSP_RESPBYTES_seq_tt, | ||
385 | .tcount = sizeof(OCSP_RESPBYTES_seq_tt) / sizeof(ASN1_TEMPLATE), | ||
386 | .funcs = NULL, | ||
387 | .size = sizeof(OCSP_RESPBYTES), | ||
388 | .sname = "OCSP_RESPBYTES", | ||
389 | }; | ||
228 | 390 | ||
229 | 391 | ||
230 | OCSP_RESPBYTES * | 392 | OCSP_RESPBYTES * |
@@ -252,10 +414,32 @@ OCSP_RESPBYTES_free(OCSP_RESPBYTES *a) | |||
252 | ASN1_item_free((ASN1_VALUE *)a, &OCSP_RESPBYTES_it); | 414 | ASN1_item_free((ASN1_VALUE *)a, &OCSP_RESPBYTES_it); |
253 | } | 415 | } |
254 | 416 | ||
255 | ASN1_SEQUENCE(OCSP_RESPONSE) = { | 417 | static const ASN1_TEMPLATE OCSP_RESPONSE_seq_tt[] = { |
256 | ASN1_SIMPLE(OCSP_RESPONSE, responseStatus, ASN1_ENUMERATED), | 418 | { |
257 | ASN1_EXP_OPT(OCSP_RESPONSE, responseBytes, OCSP_RESPBYTES, 0) | 419 | .flags = 0, |
258 | } ASN1_SEQUENCE_END(OCSP_RESPONSE) | 420 | .tag = 0, |
421 | .offset = offsetof(OCSP_RESPONSE, responseStatus), | ||
422 | .field_name = "responseStatus", | ||
423 | .item = &ASN1_ENUMERATED_it, | ||
424 | }, | ||
425 | { | ||
426 | .flags = ASN1_TFLG_EXPLICIT | ASN1_TFLG_OPTIONAL, | ||
427 | .tag = 0, | ||
428 | .offset = offsetof(OCSP_RESPONSE, responseBytes), | ||
429 | .field_name = "responseBytes", | ||
430 | .item = &OCSP_RESPBYTES_it, | ||
431 | }, | ||
432 | }; | ||
433 | |||
434 | const ASN1_ITEM OCSP_RESPONSE_it = { | ||
435 | .itype = ASN1_ITYPE_SEQUENCE, | ||
436 | .utype = V_ASN1_SEQUENCE, | ||
437 | .templates = OCSP_RESPONSE_seq_tt, | ||
438 | .tcount = sizeof(OCSP_RESPONSE_seq_tt) / sizeof(ASN1_TEMPLATE), | ||
439 | .funcs = NULL, | ||
440 | .size = sizeof(OCSP_RESPONSE), | ||
441 | .sname = "OCSP_RESPONSE", | ||
442 | }; | ||
259 | 443 | ||
260 | 444 | ||
261 | OCSP_RESPONSE * | 445 | OCSP_RESPONSE * |
@@ -283,10 +467,32 @@ OCSP_RESPONSE_free(OCSP_RESPONSE *a) | |||
283 | ASN1_item_free((ASN1_VALUE *)a, &OCSP_RESPONSE_it); | 467 | ASN1_item_free((ASN1_VALUE *)a, &OCSP_RESPONSE_it); |
284 | } | 468 | } |
285 | 469 | ||
286 | ASN1_CHOICE(OCSP_RESPID) = { | 470 | static const ASN1_TEMPLATE OCSP_RESPID_ch_tt[] = { |
287 | ASN1_EXP(OCSP_RESPID, value.byName, X509_NAME, 1), | 471 | { |
288 | ASN1_EXP(OCSP_RESPID, value.byKey, ASN1_OCTET_STRING, 2) | 472 | .flags = ASN1_TFLG_EXPLICIT, |
289 | } ASN1_CHOICE_END(OCSP_RESPID) | 473 | .tag = 1, |
474 | .offset = offsetof(OCSP_RESPID, value.byName), | ||
475 | .field_name = "value.byName", | ||
476 | .item = &X509_NAME_it, | ||
477 | }, | ||
478 | { | ||
479 | .flags = ASN1_TFLG_EXPLICIT, | ||
480 | .tag = 2, | ||
481 | .offset = offsetof(OCSP_RESPID, value.byKey), | ||
482 | .field_name = "value.byKey", | ||
483 | .item = &ASN1_OCTET_STRING_it, | ||
484 | }, | ||
485 | }; | ||
486 | |||
487 | const ASN1_ITEM OCSP_RESPID_it = { | ||
488 | .itype = ASN1_ITYPE_CHOICE, | ||
489 | .utype = offsetof(OCSP_RESPID, type), | ||
490 | .templates = OCSP_RESPID_ch_tt, | ||
491 | .tcount = sizeof(OCSP_RESPID_ch_tt) / sizeof(ASN1_TEMPLATE), | ||
492 | .funcs = NULL, | ||
493 | .size = sizeof(OCSP_RESPID), | ||
494 | .sname = "OCSP_RESPID", | ||
495 | }; | ||
290 | 496 | ||
291 | 497 | ||
292 | OCSP_RESPID * | 498 | OCSP_RESPID * |
@@ -314,10 +520,32 @@ OCSP_RESPID_free(OCSP_RESPID *a) | |||
314 | ASN1_item_free((ASN1_VALUE *)a, &OCSP_RESPID_it); | 520 | ASN1_item_free((ASN1_VALUE *)a, &OCSP_RESPID_it); |
315 | } | 521 | } |
316 | 522 | ||
317 | ASN1_SEQUENCE(OCSP_REVOKEDINFO) = { | 523 | static const ASN1_TEMPLATE OCSP_REVOKEDINFO_seq_tt[] = { |
318 | ASN1_SIMPLE(OCSP_REVOKEDINFO, revocationTime, ASN1_GENERALIZEDTIME), | 524 | { |
319 | ASN1_EXP_OPT(OCSP_REVOKEDINFO, revocationReason, ASN1_ENUMERATED, 0) | 525 | .flags = 0, |
320 | } ASN1_SEQUENCE_END(OCSP_REVOKEDINFO) | 526 | .tag = 0, |
527 | .offset = offsetof(OCSP_REVOKEDINFO, revocationTime), | ||
528 | .field_name = "revocationTime", | ||
529 | .item = &ASN1_GENERALIZEDTIME_it, | ||
530 | }, | ||
531 | { | ||
532 | .flags = ASN1_TFLG_EXPLICIT | ASN1_TFLG_OPTIONAL, | ||
533 | .tag = 0, | ||
534 | .offset = offsetof(OCSP_REVOKEDINFO, revocationReason), | ||
535 | .field_name = "revocationReason", | ||
536 | .item = &ASN1_ENUMERATED_it, | ||
537 | }, | ||
538 | }; | ||
539 | |||
540 | const ASN1_ITEM OCSP_REVOKEDINFO_it = { | ||
541 | .itype = ASN1_ITYPE_SEQUENCE, | ||
542 | .utype = V_ASN1_SEQUENCE, | ||
543 | .templates = OCSP_REVOKEDINFO_seq_tt, | ||
544 | .tcount = sizeof(OCSP_REVOKEDINFO_seq_tt) / sizeof(ASN1_TEMPLATE), | ||
545 | .funcs = NULL, | ||
546 | .size = sizeof(OCSP_REVOKEDINFO), | ||
547 | .sname = "OCSP_REVOKEDINFO", | ||
548 | }; | ||
321 | 549 | ||
322 | 550 | ||
323 | OCSP_REVOKEDINFO * | 551 | OCSP_REVOKEDINFO * |
@@ -345,11 +573,39 @@ OCSP_REVOKEDINFO_free(OCSP_REVOKEDINFO *a) | |||
345 | ASN1_item_free((ASN1_VALUE *)a, &OCSP_REVOKEDINFO_it); | 573 | ASN1_item_free((ASN1_VALUE *)a, &OCSP_REVOKEDINFO_it); |
346 | } | 574 | } |
347 | 575 | ||
348 | ASN1_CHOICE(OCSP_CERTSTATUS) = { | 576 | static const ASN1_TEMPLATE OCSP_CERTSTATUS_ch_tt[] = { |
349 | ASN1_IMP(OCSP_CERTSTATUS, value.good, ASN1_NULL, 0), | 577 | { |
350 | ASN1_IMP(OCSP_CERTSTATUS, value.revoked, OCSP_REVOKEDINFO, 1), | 578 | .flags = ASN1_TFLG_IMPLICIT, |
351 | ASN1_IMP(OCSP_CERTSTATUS, value.unknown, ASN1_NULL, 2) | 579 | .tag = 0, |
352 | } ASN1_CHOICE_END(OCSP_CERTSTATUS) | 580 | .offset = offsetof(OCSP_CERTSTATUS, value.good), |
581 | .field_name = "value.good", | ||
582 | .item = &ASN1_NULL_it, | ||
583 | }, | ||
584 | { | ||
585 | .flags = ASN1_TFLG_IMPLICIT, | ||
586 | .tag = 1, | ||
587 | .offset = offsetof(OCSP_CERTSTATUS, value.revoked), | ||
588 | .field_name = "value.revoked", | ||
589 | .item = &OCSP_REVOKEDINFO_it, | ||
590 | }, | ||
591 | { | ||
592 | .flags = ASN1_TFLG_IMPLICIT, | ||
593 | .tag = 2, | ||
594 | .offset = offsetof(OCSP_CERTSTATUS, value.unknown), | ||
595 | .field_name = "value.unknown", | ||
596 | .item = &ASN1_NULL_it, | ||
597 | }, | ||
598 | }; | ||
599 | |||
600 | const ASN1_ITEM OCSP_CERTSTATUS_it = { | ||
601 | .itype = ASN1_ITYPE_CHOICE, | ||
602 | .utype = offsetof(OCSP_CERTSTATUS, type), | ||
603 | .templates = OCSP_CERTSTATUS_ch_tt, | ||
604 | .tcount = sizeof(OCSP_CERTSTATUS_ch_tt) / sizeof(ASN1_TEMPLATE), | ||
605 | .funcs = NULL, | ||
606 | .size = sizeof(OCSP_CERTSTATUS), | ||
607 | .sname = "OCSP_CERTSTATUS", | ||
608 | }; | ||
353 | 609 | ||
354 | 610 | ||
355 | OCSP_CERTSTATUS * | 611 | OCSP_CERTSTATUS * |
@@ -377,13 +633,53 @@ OCSP_CERTSTATUS_free(OCSP_CERTSTATUS *a) | |||
377 | ASN1_item_free((ASN1_VALUE *)a, &OCSP_CERTSTATUS_it); | 633 | ASN1_item_free((ASN1_VALUE *)a, &OCSP_CERTSTATUS_it); |
378 | } | 634 | } |
379 | 635 | ||
380 | ASN1_SEQUENCE(OCSP_SINGLERESP) = { | 636 | static const ASN1_TEMPLATE OCSP_SINGLERESP_seq_tt[] = { |
381 | ASN1_SIMPLE(OCSP_SINGLERESP, certId, OCSP_CERTID), | 637 | { |
382 | ASN1_SIMPLE(OCSP_SINGLERESP, certStatus, OCSP_CERTSTATUS), | 638 | .flags = 0, |
383 | ASN1_SIMPLE(OCSP_SINGLERESP, thisUpdate, ASN1_GENERALIZEDTIME), | 639 | .tag = 0, |
384 | ASN1_EXP_OPT(OCSP_SINGLERESP, nextUpdate, ASN1_GENERALIZEDTIME, 0), | 640 | .offset = offsetof(OCSP_SINGLERESP, certId), |
385 | ASN1_EXP_SEQUENCE_OF_OPT(OCSP_SINGLERESP, singleExtensions, X509_EXTENSION, 1) | 641 | .field_name = "certId", |
386 | } ASN1_SEQUENCE_END(OCSP_SINGLERESP) | 642 | .item = &OCSP_CERTID_it, |
643 | }, | ||
644 | { | ||
645 | .flags = 0, | ||
646 | .tag = 0, | ||
647 | .offset = offsetof(OCSP_SINGLERESP, certStatus), | ||
648 | .field_name = "certStatus", | ||
649 | .item = &OCSP_CERTSTATUS_it, | ||
650 | }, | ||
651 | { | ||
652 | .flags = 0, | ||
653 | .tag = 0, | ||
654 | .offset = offsetof(OCSP_SINGLERESP, thisUpdate), | ||
655 | .field_name = "thisUpdate", | ||
656 | .item = &ASN1_GENERALIZEDTIME_it, | ||
657 | }, | ||
658 | { | ||
659 | .flags = ASN1_TFLG_EXPLICIT | ASN1_TFLG_OPTIONAL, | ||
660 | .tag = 0, | ||
661 | .offset = offsetof(OCSP_SINGLERESP, nextUpdate), | ||
662 | .field_name = "nextUpdate", | ||
663 | .item = &ASN1_GENERALIZEDTIME_it, | ||
664 | }, | ||
665 | { | ||
666 | .flags = ASN1_TFLG_EXPLICIT | ASN1_TFLG_SEQUENCE_OF | ASN1_TFLG_OPTIONAL, | ||
667 | .tag = 1, | ||
668 | .offset = offsetof(OCSP_SINGLERESP, singleExtensions), | ||
669 | .field_name = "singleExtensions", | ||
670 | .item = &X509_EXTENSION_it, | ||
671 | }, | ||
672 | }; | ||
673 | |||
674 | const ASN1_ITEM OCSP_SINGLERESP_it = { | ||
675 | .itype = ASN1_ITYPE_SEQUENCE, | ||
676 | .utype = V_ASN1_SEQUENCE, | ||
677 | .templates = OCSP_SINGLERESP_seq_tt, | ||
678 | .tcount = sizeof(OCSP_SINGLERESP_seq_tt) / sizeof(ASN1_TEMPLATE), | ||
679 | .funcs = NULL, | ||
680 | .size = sizeof(OCSP_SINGLERESP), | ||
681 | .sname = "OCSP_SINGLERESP", | ||
682 | }; | ||
387 | 683 | ||
388 | 684 | ||
389 | OCSP_SINGLERESP * | 685 | OCSP_SINGLERESP * |
@@ -411,13 +707,53 @@ OCSP_SINGLERESP_free(OCSP_SINGLERESP *a) | |||
411 | ASN1_item_free((ASN1_VALUE *)a, &OCSP_SINGLERESP_it); | 707 | ASN1_item_free((ASN1_VALUE *)a, &OCSP_SINGLERESP_it); |
412 | } | 708 | } |
413 | 709 | ||
414 | ASN1_SEQUENCE(OCSP_RESPDATA) = { | 710 | static const ASN1_TEMPLATE OCSP_RESPDATA_seq_tt[] = { |
415 | ASN1_EXP_OPT(OCSP_RESPDATA, version, ASN1_INTEGER, 0), | 711 | { |
416 | ASN1_SIMPLE(OCSP_RESPDATA, responderId, OCSP_RESPID), | 712 | .flags = ASN1_TFLG_EXPLICIT | ASN1_TFLG_OPTIONAL, |
417 | ASN1_SIMPLE(OCSP_RESPDATA, producedAt, ASN1_GENERALIZEDTIME), | 713 | .tag = 0, |
418 | ASN1_SEQUENCE_OF(OCSP_RESPDATA, responses, OCSP_SINGLERESP), | 714 | .offset = offsetof(OCSP_RESPDATA, version), |
419 | ASN1_EXP_SEQUENCE_OF_OPT(OCSP_RESPDATA, responseExtensions, X509_EXTENSION, 1) | 715 | .field_name = "version", |
420 | } ASN1_SEQUENCE_END(OCSP_RESPDATA) | 716 | .item = &ASN1_INTEGER_it, |
717 | }, | ||
718 | { | ||
719 | .flags = 0, | ||
720 | .tag = 0, | ||
721 | .offset = offsetof(OCSP_RESPDATA, responderId), | ||
722 | .field_name = "responderId", | ||
723 | .item = &OCSP_RESPID_it, | ||
724 | }, | ||
725 | { | ||
726 | .flags = 0, | ||
727 | .tag = 0, | ||
728 | .offset = offsetof(OCSP_RESPDATA, producedAt), | ||
729 | .field_name = "producedAt", | ||
730 | .item = &ASN1_GENERALIZEDTIME_it, | ||
731 | }, | ||
732 | { | ||
733 | .flags = ASN1_TFLG_SEQUENCE_OF, | ||
734 | .tag = 0, | ||
735 | .offset = offsetof(OCSP_RESPDATA, responses), | ||
736 | .field_name = "responses", | ||
737 | .item = &OCSP_SINGLERESP_it, | ||
738 | }, | ||
739 | { | ||
740 | .flags = ASN1_TFLG_EXPLICIT | ASN1_TFLG_SEQUENCE_OF | ASN1_TFLG_OPTIONAL, | ||
741 | .tag = 1, | ||
742 | .offset = offsetof(OCSP_RESPDATA, responseExtensions), | ||
743 | .field_name = "responseExtensions", | ||
744 | .item = &X509_EXTENSION_it, | ||
745 | }, | ||
746 | }; | ||
747 | |||
748 | const ASN1_ITEM OCSP_RESPDATA_it = { | ||
749 | .itype = ASN1_ITYPE_SEQUENCE, | ||
750 | .utype = V_ASN1_SEQUENCE, | ||
751 | .templates = OCSP_RESPDATA_seq_tt, | ||
752 | .tcount = sizeof(OCSP_RESPDATA_seq_tt) / sizeof(ASN1_TEMPLATE), | ||
753 | .funcs = NULL, | ||
754 | .size = sizeof(OCSP_RESPDATA), | ||
755 | .sname = "OCSP_RESPDATA", | ||
756 | }; | ||
421 | 757 | ||
422 | 758 | ||
423 | OCSP_RESPDATA * | 759 | OCSP_RESPDATA * |
@@ -445,12 +781,46 @@ OCSP_RESPDATA_free(OCSP_RESPDATA *a) | |||
445 | ASN1_item_free((ASN1_VALUE *)a, &OCSP_RESPDATA_it); | 781 | ASN1_item_free((ASN1_VALUE *)a, &OCSP_RESPDATA_it); |
446 | } | 782 | } |
447 | 783 | ||
448 | ASN1_SEQUENCE(OCSP_BASICRESP) = { | 784 | static const ASN1_TEMPLATE OCSP_BASICRESP_seq_tt[] = { |
449 | ASN1_SIMPLE(OCSP_BASICRESP, tbsResponseData, OCSP_RESPDATA), | 785 | { |
450 | ASN1_SIMPLE(OCSP_BASICRESP, signatureAlgorithm, X509_ALGOR), | 786 | .flags = 0, |
451 | ASN1_SIMPLE(OCSP_BASICRESP, signature, ASN1_BIT_STRING), | 787 | .tag = 0, |
452 | ASN1_EXP_SEQUENCE_OF_OPT(OCSP_BASICRESP, certs, X509, 0) | 788 | .offset = offsetof(OCSP_BASICRESP, tbsResponseData), |
453 | } ASN1_SEQUENCE_END(OCSP_BASICRESP) | 789 | .field_name = "tbsResponseData", |
790 | .item = &OCSP_RESPDATA_it, | ||
791 | }, | ||
792 | { | ||
793 | .flags = 0, | ||
794 | .tag = 0, | ||
795 | .offset = offsetof(OCSP_BASICRESP, signatureAlgorithm), | ||
796 | .field_name = "signatureAlgorithm", | ||
797 | .item = &X509_ALGOR_it, | ||
798 | }, | ||
799 | { | ||
800 | .flags = 0, | ||
801 | .tag = 0, | ||
802 | .offset = offsetof(OCSP_BASICRESP, signature), | ||
803 | .field_name = "signature", | ||
804 | .item = &ASN1_BIT_STRING_it, | ||
805 | }, | ||
806 | { | ||
807 | .flags = ASN1_TFLG_EXPLICIT | ASN1_TFLG_SEQUENCE_OF | ASN1_TFLG_OPTIONAL, | ||
808 | .tag = 0, | ||
809 | .offset = offsetof(OCSP_BASICRESP, certs), | ||
810 | .field_name = "certs", | ||
811 | .item = &X509_it, | ||
812 | }, | ||
813 | }; | ||
814 | |||
815 | const ASN1_ITEM OCSP_BASICRESP_it = { | ||
816 | .itype = ASN1_ITYPE_SEQUENCE, | ||
817 | .utype = V_ASN1_SEQUENCE, | ||
818 | .templates = OCSP_BASICRESP_seq_tt, | ||
819 | .tcount = sizeof(OCSP_BASICRESP_seq_tt) / sizeof(ASN1_TEMPLATE), | ||
820 | .funcs = NULL, | ||
821 | .size = sizeof(OCSP_BASICRESP), | ||
822 | .sname = "OCSP_BASICRESP", | ||
823 | }; | ||
454 | 824 | ||
455 | 825 | ||
456 | OCSP_BASICRESP * | 826 | OCSP_BASICRESP * |
@@ -478,11 +848,39 @@ OCSP_BASICRESP_free(OCSP_BASICRESP *a) | |||
478 | ASN1_item_free((ASN1_VALUE *)a, &OCSP_BASICRESP_it); | 848 | ASN1_item_free((ASN1_VALUE *)a, &OCSP_BASICRESP_it); |
479 | } | 849 | } |
480 | 850 | ||
481 | ASN1_SEQUENCE(OCSP_CRLID) = { | 851 | static const ASN1_TEMPLATE OCSP_CRLID_seq_tt[] = { |
482 | ASN1_EXP_OPT(OCSP_CRLID, crlUrl, ASN1_IA5STRING, 0), | 852 | { |
483 | ASN1_EXP_OPT(OCSP_CRLID, crlNum, ASN1_INTEGER, 1), | 853 | .flags = ASN1_TFLG_EXPLICIT | ASN1_TFLG_OPTIONAL, |
484 | ASN1_EXP_OPT(OCSP_CRLID, crlTime, ASN1_GENERALIZEDTIME, 2) | 854 | .tag = 0, |
485 | } ASN1_SEQUENCE_END(OCSP_CRLID) | 855 | .offset = offsetof(OCSP_CRLID, crlUrl), |
856 | .field_name = "crlUrl", | ||
857 | .item = &ASN1_IA5STRING_it, | ||
858 | }, | ||
859 | { | ||
860 | .flags = ASN1_TFLG_EXPLICIT | ASN1_TFLG_OPTIONAL, | ||
861 | .tag = 1, | ||
862 | .offset = offsetof(OCSP_CRLID, crlNum), | ||
863 | .field_name = "crlNum", | ||
864 | .item = &ASN1_INTEGER_it, | ||
865 | }, | ||
866 | { | ||
867 | .flags = ASN1_TFLG_EXPLICIT | ASN1_TFLG_OPTIONAL, | ||
868 | .tag = 2, | ||
869 | .offset = offsetof(OCSP_CRLID, crlTime), | ||
870 | .field_name = "crlTime", | ||
871 | .item = &ASN1_GENERALIZEDTIME_it, | ||
872 | }, | ||
873 | }; | ||
874 | |||
875 | const ASN1_ITEM OCSP_CRLID_it = { | ||
876 | .itype = ASN1_ITYPE_SEQUENCE, | ||
877 | .utype = V_ASN1_SEQUENCE, | ||
878 | .templates = OCSP_CRLID_seq_tt, | ||
879 | .tcount = sizeof(OCSP_CRLID_seq_tt) / sizeof(ASN1_TEMPLATE), | ||
880 | .funcs = NULL, | ||
881 | .size = sizeof(OCSP_CRLID), | ||
882 | .sname = "OCSP_CRLID", | ||
883 | }; | ||
486 | 884 | ||
487 | 885 | ||
488 | OCSP_CRLID * | 886 | OCSP_CRLID * |
@@ -510,10 +908,32 @@ OCSP_CRLID_free(OCSP_CRLID *a) | |||
510 | ASN1_item_free((ASN1_VALUE *)a, &OCSP_CRLID_it); | 908 | ASN1_item_free((ASN1_VALUE *)a, &OCSP_CRLID_it); |
511 | } | 909 | } |
512 | 910 | ||
513 | ASN1_SEQUENCE(OCSP_SERVICELOC) = { | 911 | static const ASN1_TEMPLATE OCSP_SERVICELOC_seq_tt[] = { |
514 | ASN1_SIMPLE(OCSP_SERVICELOC, issuer, X509_NAME), | 912 | { |
515 | ASN1_SEQUENCE_OF_OPT(OCSP_SERVICELOC, locator, ACCESS_DESCRIPTION) | 913 | .flags = 0, |
516 | } ASN1_SEQUENCE_END(OCSP_SERVICELOC) | 914 | .tag = 0, |
915 | .offset = offsetof(OCSP_SERVICELOC, issuer), | ||
916 | .field_name = "issuer", | ||
917 | .item = &X509_NAME_it, | ||
918 | }, | ||
919 | { | ||
920 | .flags = ASN1_TFLG_SEQUENCE_OF | ASN1_TFLG_OPTIONAL, | ||
921 | .tag = 0, | ||
922 | .offset = offsetof(OCSP_SERVICELOC, locator), | ||
923 | .field_name = "locator", | ||
924 | .item = &ACCESS_DESCRIPTION_it, | ||
925 | }, | ||
926 | }; | ||
927 | |||
928 | const ASN1_ITEM OCSP_SERVICELOC_it = { | ||
929 | .itype = ASN1_ITYPE_SEQUENCE, | ||
930 | .utype = V_ASN1_SEQUENCE, | ||
931 | .templates = OCSP_SERVICELOC_seq_tt, | ||
932 | .tcount = sizeof(OCSP_SERVICELOC_seq_tt) / sizeof(ASN1_TEMPLATE), | ||
933 | .funcs = NULL, | ||
934 | .size = sizeof(OCSP_SERVICELOC), | ||
935 | .sname = "OCSP_SERVICELOC", | ||
936 | }; | ||
517 | 937 | ||
518 | 938 | ||
519 | OCSP_SERVICELOC * | 939 | OCSP_SERVICELOC * |