summaryrefslogtreecommitdiff
path: root/src/lib/libcrypto/ocsp/ocsp_asn.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/libcrypto/ocsp/ocsp_asn.c')
-rw-r--r--src/lib/libcrypto/ocsp/ocsp_asn.c962
1 files changed, 0 insertions, 962 deletions
diff --git a/src/lib/libcrypto/ocsp/ocsp_asn.c b/src/lib/libcrypto/ocsp/ocsp_asn.c
deleted file mode 100644
index 72e7638c75..0000000000
--- a/src/lib/libcrypto/ocsp/ocsp_asn.c
+++ /dev/null
@@ -1,962 +0,0 @@
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
3 * project 2000.
4 */
5/* ====================================================================
6 * Copyright (c) 2000 The OpenSSL Project. All rights reserved.
7 *
8 * Redistribution and use in source and binary forms, with or without
9 * modification, are permitted provided that the following conditions
10 * are met:
11 *
12 * 1. Redistributions of source code must retain the above copyright
13 * notice, this list of conditions and the following disclaimer.
14 *
15 * 2. Redistributions in binary form must reproduce the above copyright
16 * notice, this list of conditions and the following disclaimer in
17 * the documentation and/or other materials provided with the
18 * distribution.
19 *
20 * 3. All advertising materials mentioning features or use of this
21 * software must display the following acknowledgment:
22 * "This product includes software developed by the OpenSSL Project
23 * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)"
24 *
25 * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
26 * endorse or promote products derived from this software without
27 * prior written permission. For written permission, please contact
28 * licensing@OpenSSL.org.
29 *
30 * 5. Products derived from this software may not be called "OpenSSL"
31 * nor may "OpenSSL" appear in their names without prior written
32 * permission of the OpenSSL Project.
33 *
34 * 6. Redistributions of any form whatsoever must retain the following
35 * acknowledgment:
36 * "This product includes software developed by the OpenSSL Project
37 * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)"
38 *
39 * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
40 * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
41 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
42 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
43 * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
44 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
45 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
46 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
47 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
48 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
49 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
50 * OF THE POSSIBILITY OF SUCH DAMAGE.
51 * ====================================================================
52 *
53 * This product includes cryptographic software written by Eric Young
54 * (eay@cryptsoft.com). This product includes software written by Tim
55 * Hudson (tjh@cryptsoft.com).
56 *
57 */
58#include <openssl/asn1.h>
59#include <openssl/asn1t.h>
60#include <openssl/ocsp.h>
61
62static const ASN1_TEMPLATE OCSP_SIGNATURE_seq_tt[] = {
63 {
64 .flags = 0,
65 .tag = 0,
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
86const 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};
95
96
97OCSP_SIGNATURE *
98d2i_OCSP_SIGNATURE(OCSP_SIGNATURE **a, const unsigned char **in, long len)
99{
100 return (OCSP_SIGNATURE *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
101 &OCSP_SIGNATURE_it);
102}
103
104int
105i2d_OCSP_SIGNATURE(OCSP_SIGNATURE *a, unsigned char **out)
106{
107 return ASN1_item_i2d((ASN1_VALUE *)a, out, &OCSP_SIGNATURE_it);
108}
109
110OCSP_SIGNATURE *
111OCSP_SIGNATURE_new(void)
112{
113 return (OCSP_SIGNATURE *)ASN1_item_new(&OCSP_SIGNATURE_it);
114}
115
116void
117OCSP_SIGNATURE_free(OCSP_SIGNATURE *a)
118{
119 ASN1_item_free((ASN1_VALUE *)a, &OCSP_SIGNATURE_it);
120}
121
122static const ASN1_TEMPLATE OCSP_CERTID_seq_tt[] = {
123 {
124 .flags = 0,
125 .tag = 0,
126 .offset = offsetof(OCSP_CERTID, hashAlgorithm),
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
153const 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};
162
163
164OCSP_CERTID *
165d2i_OCSP_CERTID(OCSP_CERTID **a, const unsigned char **in, long len)
166{
167 return (OCSP_CERTID *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
168 &OCSP_CERTID_it);
169}
170
171int
172i2d_OCSP_CERTID(OCSP_CERTID *a, unsigned char **out)
173{
174 return ASN1_item_i2d((ASN1_VALUE *)a, out, &OCSP_CERTID_it);
175}
176
177OCSP_CERTID *
178OCSP_CERTID_new(void)
179{
180 return (OCSP_CERTID *)ASN1_item_new(&OCSP_CERTID_it);
181}
182
183void
184OCSP_CERTID_free(OCSP_CERTID *a)
185{
186 ASN1_item_free((ASN1_VALUE *)a, &OCSP_CERTID_it);
187}
188
189static const ASN1_TEMPLATE OCSP_ONEREQ_seq_tt[] = {
190 {
191 .flags = 0,
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
206const 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};
215
216
217OCSP_ONEREQ *
218d2i_OCSP_ONEREQ(OCSP_ONEREQ **a, const unsigned char **in, long len)
219{
220 return (OCSP_ONEREQ *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
221 &OCSP_ONEREQ_it);
222}
223
224int
225i2d_OCSP_ONEREQ(OCSP_ONEREQ *a, unsigned char **out)
226{
227 return ASN1_item_i2d((ASN1_VALUE *)a, out, &OCSP_ONEREQ_it);
228}
229
230OCSP_ONEREQ *
231OCSP_ONEREQ_new(void)
232{
233 return (OCSP_ONEREQ *)ASN1_item_new(&OCSP_ONEREQ_it);
234}
235
236void
237OCSP_ONEREQ_free(OCSP_ONEREQ *a)
238{
239 ASN1_item_free((ASN1_VALUE *)a, &OCSP_ONEREQ_it);
240}
241
242static const ASN1_TEMPLATE OCSP_REQINFO_seq_tt[] = {
243 {
244 .flags = ASN1_TFLG_EXPLICIT | ASN1_TFLG_OPTIONAL,
245 .tag = 0,
246 .offset = offsetof(OCSP_REQINFO, version),
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
273const 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};
282
283
284OCSP_REQINFO *
285d2i_OCSP_REQINFO(OCSP_REQINFO **a, const unsigned char **in, long len)
286{
287 return (OCSP_REQINFO *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
288 &OCSP_REQINFO_it);
289}
290
291int
292i2d_OCSP_REQINFO(OCSP_REQINFO *a, unsigned char **out)
293{
294 return ASN1_item_i2d((ASN1_VALUE *)a, out, &OCSP_REQINFO_it);
295}
296
297OCSP_REQINFO *
298OCSP_REQINFO_new(void)
299{
300 return (OCSP_REQINFO *)ASN1_item_new(&OCSP_REQINFO_it);
301}
302
303void
304OCSP_REQINFO_free(OCSP_REQINFO *a)
305{
306 ASN1_item_free((ASN1_VALUE *)a, &OCSP_REQINFO_it);
307}
308
309static const ASN1_TEMPLATE OCSP_REQUEST_seq_tt[] = {
310 {
311 .flags = 0,
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
326const 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};
335
336
337OCSP_REQUEST *
338d2i_OCSP_REQUEST(OCSP_REQUEST **a, const unsigned char **in, long len)
339{
340 return (OCSP_REQUEST *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
341 &OCSP_REQUEST_it);
342}
343
344int
345i2d_OCSP_REQUEST(OCSP_REQUEST *a, unsigned char **out)
346{
347 return ASN1_item_i2d((ASN1_VALUE *)a, out, &OCSP_REQUEST_it);
348}
349
350OCSP_REQUEST *
351OCSP_REQUEST_new(void)
352{
353 return (OCSP_REQUEST *)ASN1_item_new(&OCSP_REQUEST_it);
354}
355
356void
357OCSP_REQUEST_free(OCSP_REQUEST *a)
358{
359 ASN1_item_free((ASN1_VALUE *)a, &OCSP_REQUEST_it);
360}
361
362/* OCSP_RESPONSE templates */
363
364static const ASN1_TEMPLATE OCSP_RESPBYTES_seq_tt[] = {
365 {
366 .flags = 0,
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
381const 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};
390
391
392OCSP_RESPBYTES *
393d2i_OCSP_RESPBYTES(OCSP_RESPBYTES **a, const unsigned char **in, long len)
394{
395 return (OCSP_RESPBYTES *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
396 &OCSP_RESPBYTES_it);
397}
398
399int
400i2d_OCSP_RESPBYTES(OCSP_RESPBYTES *a, unsigned char **out)
401{
402 return ASN1_item_i2d((ASN1_VALUE *)a, out, &OCSP_RESPBYTES_it);
403}
404
405OCSP_RESPBYTES *
406OCSP_RESPBYTES_new(void)
407{
408 return (OCSP_RESPBYTES *)ASN1_item_new(&OCSP_RESPBYTES_it);
409}
410
411void
412OCSP_RESPBYTES_free(OCSP_RESPBYTES *a)
413{
414 ASN1_item_free((ASN1_VALUE *)a, &OCSP_RESPBYTES_it);
415}
416
417static const ASN1_TEMPLATE OCSP_RESPONSE_seq_tt[] = {
418 {
419 .flags = 0,
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
434const 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};
443
444
445OCSP_RESPONSE *
446d2i_OCSP_RESPONSE(OCSP_RESPONSE **a, const unsigned char **in, long len)
447{
448 return (OCSP_RESPONSE *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
449 &OCSP_RESPONSE_it);
450}
451
452int
453i2d_OCSP_RESPONSE(OCSP_RESPONSE *a, unsigned char **out)
454{
455 return ASN1_item_i2d((ASN1_VALUE *)a, out, &OCSP_RESPONSE_it);
456}
457
458OCSP_RESPONSE *
459OCSP_RESPONSE_new(void)
460{
461 return (OCSP_RESPONSE *)ASN1_item_new(&OCSP_RESPONSE_it);
462}
463
464void
465OCSP_RESPONSE_free(OCSP_RESPONSE *a)
466{
467 ASN1_item_free((ASN1_VALUE *)a, &OCSP_RESPONSE_it);
468}
469
470static const ASN1_TEMPLATE OCSP_RESPID_ch_tt[] = {
471 {
472 .flags = ASN1_TFLG_EXPLICIT,
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
487const 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};
496
497
498OCSP_RESPID *
499d2i_OCSP_RESPID(OCSP_RESPID **a, const unsigned char **in, long len)
500{
501 return (OCSP_RESPID *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
502 &OCSP_RESPID_it);
503}
504
505int
506i2d_OCSP_RESPID(OCSP_RESPID *a, unsigned char **out)
507{
508 return ASN1_item_i2d((ASN1_VALUE *)a, out, &OCSP_RESPID_it);
509}
510
511OCSP_RESPID *
512OCSP_RESPID_new(void)
513{
514 return (OCSP_RESPID *)ASN1_item_new(&OCSP_RESPID_it);
515}
516
517void
518OCSP_RESPID_free(OCSP_RESPID *a)
519{
520 ASN1_item_free((ASN1_VALUE *)a, &OCSP_RESPID_it);
521}
522
523static const ASN1_TEMPLATE OCSP_REVOKEDINFO_seq_tt[] = {
524 {
525 .flags = 0,
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
540const 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};
549
550
551OCSP_REVOKEDINFO *
552d2i_OCSP_REVOKEDINFO(OCSP_REVOKEDINFO **a, const unsigned char **in, long len)
553{
554 return (OCSP_REVOKEDINFO *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
555 &OCSP_REVOKEDINFO_it);
556}
557
558int
559i2d_OCSP_REVOKEDINFO(OCSP_REVOKEDINFO *a, unsigned char **out)
560{
561 return ASN1_item_i2d((ASN1_VALUE *)a, out, &OCSP_REVOKEDINFO_it);
562}
563
564OCSP_REVOKEDINFO *
565OCSP_REVOKEDINFO_new(void)
566{
567 return (OCSP_REVOKEDINFO *)ASN1_item_new(&OCSP_REVOKEDINFO_it);
568}
569
570void
571OCSP_REVOKEDINFO_free(OCSP_REVOKEDINFO *a)
572{
573 ASN1_item_free((ASN1_VALUE *)a, &OCSP_REVOKEDINFO_it);
574}
575
576static const ASN1_TEMPLATE OCSP_CERTSTATUS_ch_tt[] = {
577 {
578 .flags = ASN1_TFLG_IMPLICIT,
579 .tag = 0,
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
600const 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};
609
610
611OCSP_CERTSTATUS *
612d2i_OCSP_CERTSTATUS(OCSP_CERTSTATUS **a, const unsigned char **in, long len)
613{
614 return (OCSP_CERTSTATUS *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
615 &OCSP_CERTSTATUS_it);
616}
617
618int
619i2d_OCSP_CERTSTATUS(OCSP_CERTSTATUS *a, unsigned char **out)
620{
621 return ASN1_item_i2d((ASN1_VALUE *)a, out, &OCSP_CERTSTATUS_it);
622}
623
624OCSP_CERTSTATUS *
625OCSP_CERTSTATUS_new(void)
626{
627 return (OCSP_CERTSTATUS *)ASN1_item_new(&OCSP_CERTSTATUS_it);
628}
629
630void
631OCSP_CERTSTATUS_free(OCSP_CERTSTATUS *a)
632{
633 ASN1_item_free((ASN1_VALUE *)a, &OCSP_CERTSTATUS_it);
634}
635
636static const ASN1_TEMPLATE OCSP_SINGLERESP_seq_tt[] = {
637 {
638 .flags = 0,
639 .tag = 0,
640 .offset = offsetof(OCSP_SINGLERESP, certId),
641 .field_name = "certId",
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
674const 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};
683
684
685OCSP_SINGLERESP *
686d2i_OCSP_SINGLERESP(OCSP_SINGLERESP **a, const unsigned char **in, long len)
687{
688 return (OCSP_SINGLERESP *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
689 &OCSP_SINGLERESP_it);
690}
691
692int
693i2d_OCSP_SINGLERESP(OCSP_SINGLERESP *a, unsigned char **out)
694{
695 return ASN1_item_i2d((ASN1_VALUE *)a, out, &OCSP_SINGLERESP_it);
696}
697
698OCSP_SINGLERESP *
699OCSP_SINGLERESP_new(void)
700{
701 return (OCSP_SINGLERESP *)ASN1_item_new(&OCSP_SINGLERESP_it);
702}
703
704void
705OCSP_SINGLERESP_free(OCSP_SINGLERESP *a)
706{
707 ASN1_item_free((ASN1_VALUE *)a, &OCSP_SINGLERESP_it);
708}
709
710static const ASN1_TEMPLATE OCSP_RESPDATA_seq_tt[] = {
711 {
712 .flags = ASN1_TFLG_EXPLICIT | ASN1_TFLG_OPTIONAL,
713 .tag = 0,
714 .offset = offsetof(OCSP_RESPDATA, version),
715 .field_name = "version",
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
748const 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};
757
758
759OCSP_RESPDATA *
760d2i_OCSP_RESPDATA(OCSP_RESPDATA **a, const unsigned char **in, long len)
761{
762 return (OCSP_RESPDATA *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
763 &OCSP_RESPDATA_it);
764}
765
766int
767i2d_OCSP_RESPDATA(OCSP_RESPDATA *a, unsigned char **out)
768{
769 return ASN1_item_i2d((ASN1_VALUE *)a, out, &OCSP_RESPDATA_it);
770}
771
772OCSP_RESPDATA *
773OCSP_RESPDATA_new(void)
774{
775 return (OCSP_RESPDATA *)ASN1_item_new(&OCSP_RESPDATA_it);
776}
777
778void
779OCSP_RESPDATA_free(OCSP_RESPDATA *a)
780{
781 ASN1_item_free((ASN1_VALUE *)a, &OCSP_RESPDATA_it);
782}
783
784static const ASN1_TEMPLATE OCSP_BASICRESP_seq_tt[] = {
785 {
786 .flags = 0,
787 .tag = 0,
788 .offset = offsetof(OCSP_BASICRESP, tbsResponseData),
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
815const 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};
824
825
826OCSP_BASICRESP *
827d2i_OCSP_BASICRESP(OCSP_BASICRESP **a, const unsigned char **in, long len)
828{
829 return (OCSP_BASICRESP *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
830 &OCSP_BASICRESP_it);
831}
832
833int
834i2d_OCSP_BASICRESP(OCSP_BASICRESP *a, unsigned char **out)
835{
836 return ASN1_item_i2d((ASN1_VALUE *)a, out, &OCSP_BASICRESP_it);
837}
838
839OCSP_BASICRESP *
840OCSP_BASICRESP_new(void)
841{
842 return (OCSP_BASICRESP *)ASN1_item_new(&OCSP_BASICRESP_it);
843}
844
845void
846OCSP_BASICRESP_free(OCSP_BASICRESP *a)
847{
848 ASN1_item_free((ASN1_VALUE *)a, &OCSP_BASICRESP_it);
849}
850
851static const ASN1_TEMPLATE OCSP_CRLID_seq_tt[] = {
852 {
853 .flags = ASN1_TFLG_EXPLICIT | ASN1_TFLG_OPTIONAL,
854 .tag = 0,
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
875const 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};
884
885
886OCSP_CRLID *
887d2i_OCSP_CRLID(OCSP_CRLID **a, const unsigned char **in, long len)
888{
889 return (OCSP_CRLID *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
890 &OCSP_CRLID_it);
891}
892
893int
894i2d_OCSP_CRLID(OCSP_CRLID *a, unsigned char **out)
895{
896 return ASN1_item_i2d((ASN1_VALUE *)a, out, &OCSP_CRLID_it);
897}
898
899OCSP_CRLID *
900OCSP_CRLID_new(void)
901{
902 return (OCSP_CRLID *)ASN1_item_new(&OCSP_CRLID_it);
903}
904
905void
906OCSP_CRLID_free(OCSP_CRLID *a)
907{
908 ASN1_item_free((ASN1_VALUE *)a, &OCSP_CRLID_it);
909}
910
911static const ASN1_TEMPLATE OCSP_SERVICELOC_seq_tt[] = {
912 {
913 .flags = 0,
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
928const 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};
937
938
939OCSP_SERVICELOC *
940d2i_OCSP_SERVICELOC(OCSP_SERVICELOC **a, const unsigned char **in, long len)
941{
942 return (OCSP_SERVICELOC *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
943 &OCSP_SERVICELOC_it);
944}
945
946int
947i2d_OCSP_SERVICELOC(OCSP_SERVICELOC *a, unsigned char **out)
948{
949 return ASN1_item_i2d((ASN1_VALUE *)a, out, &OCSP_SERVICELOC_it);
950}
951
952OCSP_SERVICELOC *
953OCSP_SERVICELOC_new(void)
954{
955 return (OCSP_SERVICELOC *)ASN1_item_new(&OCSP_SERVICELOC_it);
956}
957
958void
959OCSP_SERVICELOC_free(OCSP_SERVICELOC *a)
960{
961 ASN1_item_free((ASN1_VALUE *)a, &OCSP_SERVICELOC_it);
962}