xref: /openbsd-src/lib/libcrypto/ocsp/ocsp_asn.c (revision e2adc6fbaec04d13df435800dbe1f6f2b1123862)
1*e2adc6fbSbeck /* $OpenBSD: ocsp_asn.c,v 1.12 2024/07/08 14:53:11 beck Exp $ */
2e6841c1dSdjm /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL
3da347917Sbeck  * project 2000.
4da347917Sbeck  */
5da347917Sbeck /* ====================================================================
6da347917Sbeck  * Copyright (c) 2000 The OpenSSL Project.  All rights reserved.
7da347917Sbeck  *
8da347917Sbeck  * Redistribution and use in source and binary forms, with or without
9da347917Sbeck  * modification, are permitted provided that the following conditions
10da347917Sbeck  * are met:
11da347917Sbeck  *
12da347917Sbeck  * 1. Redistributions of source code must retain the above copyright
13da347917Sbeck  *    notice, this list of conditions and the following disclaimer.
14da347917Sbeck  *
15da347917Sbeck  * 2. Redistributions in binary form must reproduce the above copyright
16da347917Sbeck  *    notice, this list of conditions and the following disclaimer in
17da347917Sbeck  *    the documentation and/or other materials provided with the
18da347917Sbeck  *    distribution.
19da347917Sbeck  *
20da347917Sbeck  * 3. All advertising materials mentioning features or use of this
21da347917Sbeck  *    software must display the following acknowledgment:
22da347917Sbeck  *    "This product includes software developed by the OpenSSL Project
23da347917Sbeck  *    for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)"
24da347917Sbeck  *
25da347917Sbeck  * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
26da347917Sbeck  *    endorse or promote products derived from this software without
27da347917Sbeck  *    prior written permission. For written permission, please contact
28da347917Sbeck  *    licensing@OpenSSL.org.
29da347917Sbeck  *
30da347917Sbeck  * 5. Products derived from this software may not be called "OpenSSL"
31da347917Sbeck  *    nor may "OpenSSL" appear in their names without prior written
32da347917Sbeck  *    permission of the OpenSSL Project.
33da347917Sbeck  *
34da347917Sbeck  * 6. Redistributions of any form whatsoever must retain the following
35da347917Sbeck  *    acknowledgment:
36da347917Sbeck  *    "This product includes software developed by the OpenSSL Project
37da347917Sbeck  *    for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)"
38da347917Sbeck  *
39da347917Sbeck  * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
40da347917Sbeck  * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
41da347917Sbeck  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
42da347917Sbeck  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
43da347917Sbeck  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
44da347917Sbeck  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
45da347917Sbeck  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
46da347917Sbeck  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
47da347917Sbeck  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
48da347917Sbeck  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
49da347917Sbeck  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
50da347917Sbeck  * OF THE POSSIBILITY OF SUCH DAMAGE.
51da347917Sbeck  * ====================================================================
52da347917Sbeck  *
53da347917Sbeck  * This product includes cryptographic software written by Eric Young
54da347917Sbeck  * (eay@cryptsoft.com).  This product includes software written by Tim
55da347917Sbeck  * Hudson (tjh@cryptsoft.com).
56da347917Sbeck  *
57da347917Sbeck  */
58da347917Sbeck #include <openssl/asn1.h>
59da347917Sbeck #include <openssl/asn1t.h>
60da347917Sbeck #include <openssl/ocsp.h>
61da347917Sbeck 
629f44a700Stb #include "ocsp_local.h"
639f44a700Stb 
649e610dd1Sjsing static const ASN1_TEMPLATE OCSP_SIGNATURE_seq_tt[] = {
659e610dd1Sjsing 	{
669e610dd1Sjsing 		.flags = 0,
679e610dd1Sjsing 		.tag = 0,
689e610dd1Sjsing 		.offset = offsetof(OCSP_SIGNATURE, signatureAlgorithm),
699e610dd1Sjsing 		.field_name = "signatureAlgorithm",
709e610dd1Sjsing 		.item = &X509_ALGOR_it,
719e610dd1Sjsing 	},
729e610dd1Sjsing 	{
739e610dd1Sjsing 		.flags = 0,
749e610dd1Sjsing 		.tag = 0,
759e610dd1Sjsing 		.offset = offsetof(OCSP_SIGNATURE, signature),
769e610dd1Sjsing 		.field_name = "signature",
779e610dd1Sjsing 		.item = &ASN1_BIT_STRING_it,
789e610dd1Sjsing 	},
799e610dd1Sjsing 	{
809e610dd1Sjsing 		.flags = ASN1_TFLG_EXPLICIT | ASN1_TFLG_SEQUENCE_OF | ASN1_TFLG_OPTIONAL,
819e610dd1Sjsing 		.tag = 0,
829e610dd1Sjsing 		.offset = offsetof(OCSP_SIGNATURE, certs),
839e610dd1Sjsing 		.field_name = "certs",
849e610dd1Sjsing 		.item = &X509_it,
859e610dd1Sjsing 	},
869e610dd1Sjsing };
879e610dd1Sjsing 
889e610dd1Sjsing const ASN1_ITEM OCSP_SIGNATURE_it = {
899e610dd1Sjsing 	.itype = ASN1_ITYPE_SEQUENCE,
909e610dd1Sjsing 	.utype = V_ASN1_SEQUENCE,
919e610dd1Sjsing 	.templates = OCSP_SIGNATURE_seq_tt,
929e610dd1Sjsing 	.tcount = sizeof(OCSP_SIGNATURE_seq_tt) / sizeof(ASN1_TEMPLATE),
939e610dd1Sjsing 	.funcs = NULL,
949e610dd1Sjsing 	.size = sizeof(OCSP_SIGNATURE),
959e610dd1Sjsing 	.sname = "OCSP_SIGNATURE",
969e610dd1Sjsing };
97*e2adc6fbSbeck LCRYPTO_ALIAS(OCSP_SIGNATURE_it);
98da347917Sbeck 
99dc83dab0Sjsing 
100dc83dab0Sjsing OCSP_SIGNATURE *
d2i_OCSP_SIGNATURE(OCSP_SIGNATURE ** a,const unsigned char ** in,long len)101dc83dab0Sjsing d2i_OCSP_SIGNATURE(OCSP_SIGNATURE **a, const unsigned char **in, long len)
102dc83dab0Sjsing {
103dc83dab0Sjsing 	return (OCSP_SIGNATURE *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
104dc83dab0Sjsing 	    &OCSP_SIGNATURE_it);
105dc83dab0Sjsing }
106a1e92f6bSbeck LCRYPTO_ALIAS(d2i_OCSP_SIGNATURE);
107dc83dab0Sjsing 
108dc83dab0Sjsing int
i2d_OCSP_SIGNATURE(OCSP_SIGNATURE * a,unsigned char ** out)109dc83dab0Sjsing i2d_OCSP_SIGNATURE(OCSP_SIGNATURE *a, unsigned char **out)
110dc83dab0Sjsing {
111dc83dab0Sjsing 	return ASN1_item_i2d((ASN1_VALUE *)a, out, &OCSP_SIGNATURE_it);
112dc83dab0Sjsing }
113a1e92f6bSbeck LCRYPTO_ALIAS(i2d_OCSP_SIGNATURE);
114dc83dab0Sjsing 
115dc83dab0Sjsing OCSP_SIGNATURE *
OCSP_SIGNATURE_new(void)116dc83dab0Sjsing OCSP_SIGNATURE_new(void)
117dc83dab0Sjsing {
118dc83dab0Sjsing 	return (OCSP_SIGNATURE *)ASN1_item_new(&OCSP_SIGNATURE_it);
119dc83dab0Sjsing }
120a1e92f6bSbeck LCRYPTO_ALIAS(OCSP_SIGNATURE_new);
121dc83dab0Sjsing 
122dc83dab0Sjsing void
OCSP_SIGNATURE_free(OCSP_SIGNATURE * a)123dc83dab0Sjsing OCSP_SIGNATURE_free(OCSP_SIGNATURE *a)
124dc83dab0Sjsing {
125dc83dab0Sjsing 	ASN1_item_free((ASN1_VALUE *)a, &OCSP_SIGNATURE_it);
126dc83dab0Sjsing }
127a1e92f6bSbeck LCRYPTO_ALIAS(OCSP_SIGNATURE_free);
128da347917Sbeck 
1299e610dd1Sjsing static const ASN1_TEMPLATE OCSP_CERTID_seq_tt[] = {
1309e610dd1Sjsing 	{
1319e610dd1Sjsing 		.flags = 0,
1329e610dd1Sjsing 		.tag = 0,
1339e610dd1Sjsing 		.offset = offsetof(OCSP_CERTID, hashAlgorithm),
1349e610dd1Sjsing 		.field_name = "hashAlgorithm",
1359e610dd1Sjsing 		.item = &X509_ALGOR_it,
1369e610dd1Sjsing 	},
1379e610dd1Sjsing 	{
1389e610dd1Sjsing 		.flags = 0,
1399e610dd1Sjsing 		.tag = 0,
1409e610dd1Sjsing 		.offset = offsetof(OCSP_CERTID, issuerNameHash),
1419e610dd1Sjsing 		.field_name = "issuerNameHash",
1429e610dd1Sjsing 		.item = &ASN1_OCTET_STRING_it,
1439e610dd1Sjsing 	},
1449e610dd1Sjsing 	{
1459e610dd1Sjsing 		.flags = 0,
1469e610dd1Sjsing 		.tag = 0,
1479e610dd1Sjsing 		.offset = offsetof(OCSP_CERTID, issuerKeyHash),
1489e610dd1Sjsing 		.field_name = "issuerKeyHash",
1499e610dd1Sjsing 		.item = &ASN1_OCTET_STRING_it,
1509e610dd1Sjsing 	},
1519e610dd1Sjsing 	{
1529e610dd1Sjsing 		.flags = 0,
1539e610dd1Sjsing 		.tag = 0,
1549e610dd1Sjsing 		.offset = offsetof(OCSP_CERTID, serialNumber),
1559e610dd1Sjsing 		.field_name = "serialNumber",
1569e610dd1Sjsing 		.item = &ASN1_INTEGER_it,
1579e610dd1Sjsing 	},
1589e610dd1Sjsing };
1599e610dd1Sjsing 
1609e610dd1Sjsing const ASN1_ITEM OCSP_CERTID_it = {
1619e610dd1Sjsing 	.itype = ASN1_ITYPE_SEQUENCE,
1629e610dd1Sjsing 	.utype = V_ASN1_SEQUENCE,
1639e610dd1Sjsing 	.templates = OCSP_CERTID_seq_tt,
1649e610dd1Sjsing 	.tcount = sizeof(OCSP_CERTID_seq_tt) / sizeof(ASN1_TEMPLATE),
1659e610dd1Sjsing 	.funcs = NULL,
1669e610dd1Sjsing 	.size = sizeof(OCSP_CERTID),
1679e610dd1Sjsing 	.sname = "OCSP_CERTID",
1689e610dd1Sjsing };
169*e2adc6fbSbeck LCRYPTO_ALIAS(OCSP_CERTID_it);
170da347917Sbeck 
171dc83dab0Sjsing 
172dc83dab0Sjsing OCSP_CERTID *
d2i_OCSP_CERTID(OCSP_CERTID ** a,const unsigned char ** in,long len)173dc83dab0Sjsing d2i_OCSP_CERTID(OCSP_CERTID **a, const unsigned char **in, long len)
174dc83dab0Sjsing {
175dc83dab0Sjsing 	return (OCSP_CERTID *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
176dc83dab0Sjsing 	    &OCSP_CERTID_it);
177dc83dab0Sjsing }
178a1e92f6bSbeck LCRYPTO_ALIAS(d2i_OCSP_CERTID);
179dc83dab0Sjsing 
180dc83dab0Sjsing int
i2d_OCSP_CERTID(OCSP_CERTID * a,unsigned char ** out)181dc83dab0Sjsing i2d_OCSP_CERTID(OCSP_CERTID *a, unsigned char **out)
182dc83dab0Sjsing {
183dc83dab0Sjsing 	return ASN1_item_i2d((ASN1_VALUE *)a, out, &OCSP_CERTID_it);
184dc83dab0Sjsing }
185a1e92f6bSbeck LCRYPTO_ALIAS(i2d_OCSP_CERTID);
186dc83dab0Sjsing 
187dc83dab0Sjsing OCSP_CERTID *
OCSP_CERTID_new(void)188dc83dab0Sjsing OCSP_CERTID_new(void)
189dc83dab0Sjsing {
190dc83dab0Sjsing 	return (OCSP_CERTID *)ASN1_item_new(&OCSP_CERTID_it);
191dc83dab0Sjsing }
192a1e92f6bSbeck LCRYPTO_ALIAS(OCSP_CERTID_new);
193dc83dab0Sjsing 
194dc83dab0Sjsing void
OCSP_CERTID_free(OCSP_CERTID * a)195dc83dab0Sjsing OCSP_CERTID_free(OCSP_CERTID *a)
196dc83dab0Sjsing {
197dc83dab0Sjsing 	ASN1_item_free((ASN1_VALUE *)a, &OCSP_CERTID_it);
198dc83dab0Sjsing }
199a1e92f6bSbeck LCRYPTO_ALIAS(OCSP_CERTID_free);
200da347917Sbeck 
2019e610dd1Sjsing static const ASN1_TEMPLATE OCSP_ONEREQ_seq_tt[] = {
2029e610dd1Sjsing 	{
2039e610dd1Sjsing 		.flags = 0,
2049e610dd1Sjsing 		.tag = 0,
2059e610dd1Sjsing 		.offset = offsetof(OCSP_ONEREQ, reqCert),
2069e610dd1Sjsing 		.field_name = "reqCert",
2079e610dd1Sjsing 		.item = &OCSP_CERTID_it,
2089e610dd1Sjsing 	},
2099e610dd1Sjsing 	{
2109e610dd1Sjsing 		.flags = ASN1_TFLG_EXPLICIT | ASN1_TFLG_SEQUENCE_OF | ASN1_TFLG_OPTIONAL,
2119e610dd1Sjsing 		.tag = 0,
2129e610dd1Sjsing 		.offset = offsetof(OCSP_ONEREQ, singleRequestExtensions),
2139e610dd1Sjsing 		.field_name = "singleRequestExtensions",
2149e610dd1Sjsing 		.item = &X509_EXTENSION_it,
2159e610dd1Sjsing 	},
2169e610dd1Sjsing };
2179e610dd1Sjsing 
2189e610dd1Sjsing const ASN1_ITEM OCSP_ONEREQ_it = {
2199e610dd1Sjsing 	.itype = ASN1_ITYPE_SEQUENCE,
2209e610dd1Sjsing 	.utype = V_ASN1_SEQUENCE,
2219e610dd1Sjsing 	.templates = OCSP_ONEREQ_seq_tt,
2229e610dd1Sjsing 	.tcount = sizeof(OCSP_ONEREQ_seq_tt) / sizeof(ASN1_TEMPLATE),
2239e610dd1Sjsing 	.funcs = NULL,
2249e610dd1Sjsing 	.size = sizeof(OCSP_ONEREQ),
2259e610dd1Sjsing 	.sname = "OCSP_ONEREQ",
2269e610dd1Sjsing };
227*e2adc6fbSbeck LCRYPTO_ALIAS(OCSP_ONEREQ_it);
228da347917Sbeck 
229dc83dab0Sjsing 
230dc83dab0Sjsing OCSP_ONEREQ *
d2i_OCSP_ONEREQ(OCSP_ONEREQ ** a,const unsigned char ** in,long len)231dc83dab0Sjsing d2i_OCSP_ONEREQ(OCSP_ONEREQ **a, const unsigned char **in, long len)
232dc83dab0Sjsing {
233dc83dab0Sjsing 	return (OCSP_ONEREQ *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
234dc83dab0Sjsing 	    &OCSP_ONEREQ_it);
235dc83dab0Sjsing }
236a1e92f6bSbeck LCRYPTO_ALIAS(d2i_OCSP_ONEREQ);
237dc83dab0Sjsing 
238dc83dab0Sjsing int
i2d_OCSP_ONEREQ(OCSP_ONEREQ * a,unsigned char ** out)239dc83dab0Sjsing i2d_OCSP_ONEREQ(OCSP_ONEREQ *a, unsigned char **out)
240dc83dab0Sjsing {
241dc83dab0Sjsing 	return ASN1_item_i2d((ASN1_VALUE *)a, out, &OCSP_ONEREQ_it);
242dc83dab0Sjsing }
243a1e92f6bSbeck LCRYPTO_ALIAS(i2d_OCSP_ONEREQ);
244dc83dab0Sjsing 
245dc83dab0Sjsing OCSP_ONEREQ *
OCSP_ONEREQ_new(void)246dc83dab0Sjsing OCSP_ONEREQ_new(void)
247dc83dab0Sjsing {
248dc83dab0Sjsing 	return (OCSP_ONEREQ *)ASN1_item_new(&OCSP_ONEREQ_it);
249dc83dab0Sjsing }
250a1e92f6bSbeck LCRYPTO_ALIAS(OCSP_ONEREQ_new);
251dc83dab0Sjsing 
252dc83dab0Sjsing void
OCSP_ONEREQ_free(OCSP_ONEREQ * a)253dc83dab0Sjsing OCSP_ONEREQ_free(OCSP_ONEREQ *a)
254dc83dab0Sjsing {
255dc83dab0Sjsing 	ASN1_item_free((ASN1_VALUE *)a, &OCSP_ONEREQ_it);
256dc83dab0Sjsing }
257a1e92f6bSbeck LCRYPTO_ALIAS(OCSP_ONEREQ_free);
258da347917Sbeck 
2599e610dd1Sjsing static const ASN1_TEMPLATE OCSP_REQINFO_seq_tt[] = {
2609e610dd1Sjsing 	{
2619e610dd1Sjsing 		.flags = ASN1_TFLG_EXPLICIT | ASN1_TFLG_OPTIONAL,
2629e610dd1Sjsing 		.tag = 0,
2639e610dd1Sjsing 		.offset = offsetof(OCSP_REQINFO, version),
2649e610dd1Sjsing 		.field_name = "version",
2659e610dd1Sjsing 		.item = &ASN1_INTEGER_it,
2669e610dd1Sjsing 	},
2679e610dd1Sjsing 	{
2689e610dd1Sjsing 		.flags = ASN1_TFLG_EXPLICIT | ASN1_TFLG_OPTIONAL,
2699e610dd1Sjsing 		.tag = 1,
2709e610dd1Sjsing 		.offset = offsetof(OCSP_REQINFO, requestorName),
2719e610dd1Sjsing 		.field_name = "requestorName",
2729e610dd1Sjsing 		.item = &GENERAL_NAME_it,
2739e610dd1Sjsing 	},
2749e610dd1Sjsing 	{
2759e610dd1Sjsing 		.flags = ASN1_TFLG_SEQUENCE_OF,
2769e610dd1Sjsing 		.tag = 0,
2779e610dd1Sjsing 		.offset = offsetof(OCSP_REQINFO, requestList),
2789e610dd1Sjsing 		.field_name = "requestList",
2799e610dd1Sjsing 		.item = &OCSP_ONEREQ_it,
2809e610dd1Sjsing 	},
2819e610dd1Sjsing 	{
2829e610dd1Sjsing 		.flags = ASN1_TFLG_EXPLICIT | ASN1_TFLG_SEQUENCE_OF | ASN1_TFLG_OPTIONAL,
2839e610dd1Sjsing 		.tag = 2,
2849e610dd1Sjsing 		.offset = offsetof(OCSP_REQINFO, requestExtensions),
2859e610dd1Sjsing 		.field_name = "requestExtensions",
2869e610dd1Sjsing 		.item = &X509_EXTENSION_it,
2879e610dd1Sjsing 	},
2889e610dd1Sjsing };
2899e610dd1Sjsing 
2909e610dd1Sjsing const ASN1_ITEM OCSP_REQINFO_it = {
2919e610dd1Sjsing 	.itype = ASN1_ITYPE_SEQUENCE,
2929e610dd1Sjsing 	.utype = V_ASN1_SEQUENCE,
2939e610dd1Sjsing 	.templates = OCSP_REQINFO_seq_tt,
2949e610dd1Sjsing 	.tcount = sizeof(OCSP_REQINFO_seq_tt) / sizeof(ASN1_TEMPLATE),
2959e610dd1Sjsing 	.funcs = NULL,
2969e610dd1Sjsing 	.size = sizeof(OCSP_REQINFO),
2979e610dd1Sjsing 	.sname = "OCSP_REQINFO",
2989e610dd1Sjsing };
299*e2adc6fbSbeck LCRYPTO_ALIAS(OCSP_REQINFO_it);
300da347917Sbeck 
301dc83dab0Sjsing 
302dc83dab0Sjsing OCSP_REQINFO *
d2i_OCSP_REQINFO(OCSP_REQINFO ** a,const unsigned char ** in,long len)303dc83dab0Sjsing d2i_OCSP_REQINFO(OCSP_REQINFO **a, const unsigned char **in, long len)
304dc83dab0Sjsing {
305dc83dab0Sjsing 	return (OCSP_REQINFO *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
306dc83dab0Sjsing 	    &OCSP_REQINFO_it);
307dc83dab0Sjsing }
308a1e92f6bSbeck LCRYPTO_ALIAS(d2i_OCSP_REQINFO);
309dc83dab0Sjsing 
310dc83dab0Sjsing int
i2d_OCSP_REQINFO(OCSP_REQINFO * a,unsigned char ** out)311dc83dab0Sjsing i2d_OCSP_REQINFO(OCSP_REQINFO *a, unsigned char **out)
312dc83dab0Sjsing {
313dc83dab0Sjsing 	return ASN1_item_i2d((ASN1_VALUE *)a, out, &OCSP_REQINFO_it);
314dc83dab0Sjsing }
315a1e92f6bSbeck LCRYPTO_ALIAS(i2d_OCSP_REQINFO);
316dc83dab0Sjsing 
317dc83dab0Sjsing OCSP_REQINFO *
OCSP_REQINFO_new(void)318dc83dab0Sjsing OCSP_REQINFO_new(void)
319dc83dab0Sjsing {
320dc83dab0Sjsing 	return (OCSP_REQINFO *)ASN1_item_new(&OCSP_REQINFO_it);
321dc83dab0Sjsing }
322a1e92f6bSbeck LCRYPTO_ALIAS(OCSP_REQINFO_new);
323dc83dab0Sjsing 
324dc83dab0Sjsing void
OCSP_REQINFO_free(OCSP_REQINFO * a)325dc83dab0Sjsing OCSP_REQINFO_free(OCSP_REQINFO *a)
326dc83dab0Sjsing {
327dc83dab0Sjsing 	ASN1_item_free((ASN1_VALUE *)a, &OCSP_REQINFO_it);
328dc83dab0Sjsing }
329a1e92f6bSbeck LCRYPTO_ALIAS(OCSP_REQINFO_free);
330da347917Sbeck 
3319e610dd1Sjsing static const ASN1_TEMPLATE OCSP_REQUEST_seq_tt[] = {
3329e610dd1Sjsing 	{
3339e610dd1Sjsing 		.flags = 0,
3349e610dd1Sjsing 		.tag = 0,
3359e610dd1Sjsing 		.offset = offsetof(OCSP_REQUEST, tbsRequest),
3369e610dd1Sjsing 		.field_name = "tbsRequest",
3379e610dd1Sjsing 		.item = &OCSP_REQINFO_it,
3389e610dd1Sjsing 	},
3399e610dd1Sjsing 	{
3409e610dd1Sjsing 		.flags = ASN1_TFLG_EXPLICIT | ASN1_TFLG_OPTIONAL,
3419e610dd1Sjsing 		.tag = 0,
3429e610dd1Sjsing 		.offset = offsetof(OCSP_REQUEST, optionalSignature),
3439e610dd1Sjsing 		.field_name = "optionalSignature",
3449e610dd1Sjsing 		.item = &OCSP_SIGNATURE_it,
3459e610dd1Sjsing 	},
3469e610dd1Sjsing };
3479e610dd1Sjsing 
3489e610dd1Sjsing const ASN1_ITEM OCSP_REQUEST_it = {
3499e610dd1Sjsing 	.itype = ASN1_ITYPE_SEQUENCE,
3509e610dd1Sjsing 	.utype = V_ASN1_SEQUENCE,
3519e610dd1Sjsing 	.templates = OCSP_REQUEST_seq_tt,
3529e610dd1Sjsing 	.tcount = sizeof(OCSP_REQUEST_seq_tt) / sizeof(ASN1_TEMPLATE),
3539e610dd1Sjsing 	.funcs = NULL,
3549e610dd1Sjsing 	.size = sizeof(OCSP_REQUEST),
3559e610dd1Sjsing 	.sname = "OCSP_REQUEST",
3569e610dd1Sjsing };
357*e2adc6fbSbeck LCRYPTO_ALIAS(OCSP_REQUEST_it);
358da347917Sbeck 
359dc83dab0Sjsing OCSP_REQUEST *
d2i_OCSP_REQUEST(OCSP_REQUEST ** a,const unsigned char ** in,long len)360dc83dab0Sjsing d2i_OCSP_REQUEST(OCSP_REQUEST **a, const unsigned char **in, long len)
361dc83dab0Sjsing {
362dc83dab0Sjsing 	return (OCSP_REQUEST *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
363dc83dab0Sjsing 	    &OCSP_REQUEST_it);
364dc83dab0Sjsing }
365a1e92f6bSbeck LCRYPTO_ALIAS(d2i_OCSP_REQUEST);
366dc83dab0Sjsing 
367dc83dab0Sjsing int
i2d_OCSP_REQUEST(OCSP_REQUEST * a,unsigned char ** out)368dc83dab0Sjsing i2d_OCSP_REQUEST(OCSP_REQUEST *a, unsigned char **out)
369dc83dab0Sjsing {
370dc83dab0Sjsing 	return ASN1_item_i2d((ASN1_VALUE *)a, out, &OCSP_REQUEST_it);
371dc83dab0Sjsing }
372a1e92f6bSbeck LCRYPTO_ALIAS(i2d_OCSP_REQUEST);
373dc83dab0Sjsing 
374dc83dab0Sjsing OCSP_REQUEST *
d2i_OCSP_REQUEST_bio(BIO * bp,OCSP_REQUEST ** a)3752ca51753Sjsing d2i_OCSP_REQUEST_bio(BIO *bp, OCSP_REQUEST **a)
3762ca51753Sjsing {
3772ca51753Sjsing 	return ASN1_item_d2i_bio(&OCSP_REQUEST_it, bp, a);
3782ca51753Sjsing }
379a1e92f6bSbeck LCRYPTO_ALIAS(d2i_OCSP_REQUEST_bio);
3802ca51753Sjsing 
3812ca51753Sjsing int
i2d_OCSP_REQUEST_bio(BIO * bp,OCSP_REQUEST * a)3822ca51753Sjsing i2d_OCSP_REQUEST_bio(BIO *bp, OCSP_REQUEST *a)
3832ca51753Sjsing {
3842ca51753Sjsing 	return ASN1_item_i2d_bio(&OCSP_REQUEST_it, bp, a);
3852ca51753Sjsing }
386a1e92f6bSbeck LCRYPTO_ALIAS(i2d_OCSP_REQUEST_bio);
3872ca51753Sjsing 
3882ca51753Sjsing OCSP_REQUEST *
OCSP_REQUEST_new(void)389dc83dab0Sjsing OCSP_REQUEST_new(void)
390dc83dab0Sjsing {
391dc83dab0Sjsing 	return (OCSP_REQUEST *)ASN1_item_new(&OCSP_REQUEST_it);
392dc83dab0Sjsing }
393a1e92f6bSbeck LCRYPTO_ALIAS(OCSP_REQUEST_new);
394dc83dab0Sjsing 
395dc83dab0Sjsing void
OCSP_REQUEST_free(OCSP_REQUEST * a)396dc83dab0Sjsing OCSP_REQUEST_free(OCSP_REQUEST *a)
397dc83dab0Sjsing {
398dc83dab0Sjsing 	ASN1_item_free((ASN1_VALUE *)a, &OCSP_REQUEST_it);
399dc83dab0Sjsing }
400a1e92f6bSbeck LCRYPTO_ALIAS(OCSP_REQUEST_free);
401da347917Sbeck 
402da347917Sbeck /* OCSP_RESPONSE templates */
403da347917Sbeck 
4049e610dd1Sjsing static const ASN1_TEMPLATE OCSP_RESPBYTES_seq_tt[] = {
4059e610dd1Sjsing 	{
4069e610dd1Sjsing 		.flags = 0,
4079e610dd1Sjsing 		.tag = 0,
4089e610dd1Sjsing 		.offset = offsetof(OCSP_RESPBYTES, responseType),
4099e610dd1Sjsing 		.field_name = "responseType",
4109e610dd1Sjsing 		.item = &ASN1_OBJECT_it,
4119e610dd1Sjsing 	},
4129e610dd1Sjsing 	{
4139e610dd1Sjsing 		.flags = 0,
4149e610dd1Sjsing 		.tag = 0,
4159e610dd1Sjsing 		.offset = offsetof(OCSP_RESPBYTES, response),
4169e610dd1Sjsing 		.field_name = "response",
4179e610dd1Sjsing 		.item = &ASN1_OCTET_STRING_it,
4189e610dd1Sjsing 	},
4199e610dd1Sjsing };
4209e610dd1Sjsing 
4219e610dd1Sjsing const ASN1_ITEM OCSP_RESPBYTES_it = {
4229e610dd1Sjsing 	.itype = ASN1_ITYPE_SEQUENCE,
4239e610dd1Sjsing 	.utype = V_ASN1_SEQUENCE,
4249e610dd1Sjsing 	.templates = OCSP_RESPBYTES_seq_tt,
4259e610dd1Sjsing 	.tcount = sizeof(OCSP_RESPBYTES_seq_tt) / sizeof(ASN1_TEMPLATE),
4269e610dd1Sjsing 	.funcs = NULL,
4279e610dd1Sjsing 	.size = sizeof(OCSP_RESPBYTES),
4289e610dd1Sjsing 	.sname = "OCSP_RESPBYTES",
4299e610dd1Sjsing };
430*e2adc6fbSbeck LCRYPTO_ALIAS(OCSP_RESPBYTES_it);
431da347917Sbeck 
432dc83dab0Sjsing 
433dc83dab0Sjsing OCSP_RESPBYTES *
d2i_OCSP_RESPBYTES(OCSP_RESPBYTES ** a,const unsigned char ** in,long len)434dc83dab0Sjsing d2i_OCSP_RESPBYTES(OCSP_RESPBYTES **a, const unsigned char **in, long len)
435dc83dab0Sjsing {
436dc83dab0Sjsing 	return (OCSP_RESPBYTES *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
437dc83dab0Sjsing 	    &OCSP_RESPBYTES_it);
438dc83dab0Sjsing }
439a1e92f6bSbeck LCRYPTO_ALIAS(d2i_OCSP_RESPBYTES);
440dc83dab0Sjsing 
441dc83dab0Sjsing int
i2d_OCSP_RESPBYTES(OCSP_RESPBYTES * a,unsigned char ** out)442dc83dab0Sjsing i2d_OCSP_RESPBYTES(OCSP_RESPBYTES *a, unsigned char **out)
443dc83dab0Sjsing {
444dc83dab0Sjsing 	return ASN1_item_i2d((ASN1_VALUE *)a, out, &OCSP_RESPBYTES_it);
445dc83dab0Sjsing }
446a1e92f6bSbeck LCRYPTO_ALIAS(i2d_OCSP_RESPBYTES);
447dc83dab0Sjsing 
448dc83dab0Sjsing OCSP_RESPBYTES *
OCSP_RESPBYTES_new(void)449dc83dab0Sjsing OCSP_RESPBYTES_new(void)
450dc83dab0Sjsing {
451dc83dab0Sjsing 	return (OCSP_RESPBYTES *)ASN1_item_new(&OCSP_RESPBYTES_it);
452dc83dab0Sjsing }
453a1e92f6bSbeck LCRYPTO_ALIAS(OCSP_RESPBYTES_new);
454dc83dab0Sjsing 
455dc83dab0Sjsing void
OCSP_RESPBYTES_free(OCSP_RESPBYTES * a)456dc83dab0Sjsing OCSP_RESPBYTES_free(OCSP_RESPBYTES *a)
457dc83dab0Sjsing {
458dc83dab0Sjsing 	ASN1_item_free((ASN1_VALUE *)a, &OCSP_RESPBYTES_it);
459dc83dab0Sjsing }
460a1e92f6bSbeck LCRYPTO_ALIAS(OCSP_RESPBYTES_free);
461da347917Sbeck 
4629e610dd1Sjsing static const ASN1_TEMPLATE OCSP_RESPONSE_seq_tt[] = {
4639e610dd1Sjsing 	{
4649e610dd1Sjsing 		.flags = 0,
4659e610dd1Sjsing 		.tag = 0,
4669e610dd1Sjsing 		.offset = offsetof(OCSP_RESPONSE, responseStatus),
4679e610dd1Sjsing 		.field_name = "responseStatus",
4689e610dd1Sjsing 		.item = &ASN1_ENUMERATED_it,
4699e610dd1Sjsing 	},
4709e610dd1Sjsing 	{
4719e610dd1Sjsing 		.flags = ASN1_TFLG_EXPLICIT | ASN1_TFLG_OPTIONAL,
4729e610dd1Sjsing 		.tag = 0,
4739e610dd1Sjsing 		.offset = offsetof(OCSP_RESPONSE, responseBytes),
4749e610dd1Sjsing 		.field_name = "responseBytes",
4759e610dd1Sjsing 		.item = &OCSP_RESPBYTES_it,
4769e610dd1Sjsing 	},
4779e610dd1Sjsing };
4789e610dd1Sjsing 
4799e610dd1Sjsing const ASN1_ITEM OCSP_RESPONSE_it = {
4809e610dd1Sjsing 	.itype = ASN1_ITYPE_SEQUENCE,
4819e610dd1Sjsing 	.utype = V_ASN1_SEQUENCE,
4829e610dd1Sjsing 	.templates = OCSP_RESPONSE_seq_tt,
4839e610dd1Sjsing 	.tcount = sizeof(OCSP_RESPONSE_seq_tt) / sizeof(ASN1_TEMPLATE),
4849e610dd1Sjsing 	.funcs = NULL,
4859e610dd1Sjsing 	.size = sizeof(OCSP_RESPONSE),
4869e610dd1Sjsing 	.sname = "OCSP_RESPONSE",
4879e610dd1Sjsing };
488*e2adc6fbSbeck LCRYPTO_ALIAS(OCSP_RESPONSE_it);
489da347917Sbeck 
490dc83dab0Sjsing 
491dc83dab0Sjsing OCSP_RESPONSE *
d2i_OCSP_RESPONSE(OCSP_RESPONSE ** a,const unsigned char ** in,long len)492dc83dab0Sjsing d2i_OCSP_RESPONSE(OCSP_RESPONSE **a, const unsigned char **in, long len)
493dc83dab0Sjsing {
494dc83dab0Sjsing 	return (OCSP_RESPONSE *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
495dc83dab0Sjsing 	    &OCSP_RESPONSE_it);
496dc83dab0Sjsing }
497a1e92f6bSbeck LCRYPTO_ALIAS(d2i_OCSP_RESPONSE);
498dc83dab0Sjsing 
499dc83dab0Sjsing int
i2d_OCSP_RESPONSE(OCSP_RESPONSE * a,unsigned char ** out)500dc83dab0Sjsing i2d_OCSP_RESPONSE(OCSP_RESPONSE *a, unsigned char **out)
501dc83dab0Sjsing {
502dc83dab0Sjsing 	return ASN1_item_i2d((ASN1_VALUE *)a, out, &OCSP_RESPONSE_it);
503dc83dab0Sjsing }
504a1e92f6bSbeck LCRYPTO_ALIAS(i2d_OCSP_RESPONSE);
505dc83dab0Sjsing 
506dc83dab0Sjsing OCSP_RESPONSE *
d2i_OCSP_RESPONSE_bio(BIO * bp,OCSP_RESPONSE ** a)5072ca51753Sjsing d2i_OCSP_RESPONSE_bio(BIO *bp, OCSP_RESPONSE **a)
5082ca51753Sjsing {
5092ca51753Sjsing 	return ASN1_item_d2i_bio(&OCSP_RESPONSE_it, bp, a);
5102ca51753Sjsing }
511a1e92f6bSbeck LCRYPTO_ALIAS(d2i_OCSP_RESPONSE_bio);
5122ca51753Sjsing 
5132ca51753Sjsing int
i2d_OCSP_RESPONSE_bio(BIO * bp,OCSP_RESPONSE * a)5142ca51753Sjsing i2d_OCSP_RESPONSE_bio(BIO *bp, OCSP_RESPONSE *a)
5152ca51753Sjsing {
5162ca51753Sjsing 	return ASN1_item_i2d_bio(&OCSP_RESPONSE_it, bp, a);
5172ca51753Sjsing }
518a1e92f6bSbeck LCRYPTO_ALIAS(i2d_OCSP_RESPONSE_bio);
5192ca51753Sjsing 
5202ca51753Sjsing OCSP_RESPONSE *
OCSP_RESPONSE_new(void)521dc83dab0Sjsing OCSP_RESPONSE_new(void)
522dc83dab0Sjsing {
523dc83dab0Sjsing 	return (OCSP_RESPONSE *)ASN1_item_new(&OCSP_RESPONSE_it);
524dc83dab0Sjsing }
525a1e92f6bSbeck LCRYPTO_ALIAS(OCSP_RESPONSE_new);
526dc83dab0Sjsing 
527dc83dab0Sjsing void
OCSP_RESPONSE_free(OCSP_RESPONSE * a)528dc83dab0Sjsing OCSP_RESPONSE_free(OCSP_RESPONSE *a)
529dc83dab0Sjsing {
530dc83dab0Sjsing 	ASN1_item_free((ASN1_VALUE *)a, &OCSP_RESPONSE_it);
531dc83dab0Sjsing }
532a1e92f6bSbeck LCRYPTO_ALIAS(OCSP_RESPONSE_free);
533da347917Sbeck 
5349e610dd1Sjsing static const ASN1_TEMPLATE OCSP_RESPID_ch_tt[] = {
5359e610dd1Sjsing 	{
5369e610dd1Sjsing 		.flags = ASN1_TFLG_EXPLICIT,
5379e610dd1Sjsing 		.tag = 1,
5389e610dd1Sjsing 		.offset = offsetof(OCSP_RESPID, value.byName),
5399e610dd1Sjsing 		.field_name = "value.byName",
5409e610dd1Sjsing 		.item = &X509_NAME_it,
5419e610dd1Sjsing 	},
5429e610dd1Sjsing 	{
5439e610dd1Sjsing 		.flags = ASN1_TFLG_EXPLICIT,
5449e610dd1Sjsing 		.tag = 2,
5459e610dd1Sjsing 		.offset = offsetof(OCSP_RESPID, value.byKey),
5469e610dd1Sjsing 		.field_name = "value.byKey",
5479e610dd1Sjsing 		.item = &ASN1_OCTET_STRING_it,
5489e610dd1Sjsing 	},
5499e610dd1Sjsing };
5509e610dd1Sjsing 
5519e610dd1Sjsing const ASN1_ITEM OCSP_RESPID_it = {
5529e610dd1Sjsing 	.itype = ASN1_ITYPE_CHOICE,
5539e610dd1Sjsing 	.utype = offsetof(OCSP_RESPID, type),
5549e610dd1Sjsing 	.templates = OCSP_RESPID_ch_tt,
5559e610dd1Sjsing 	.tcount = sizeof(OCSP_RESPID_ch_tt) / sizeof(ASN1_TEMPLATE),
5569e610dd1Sjsing 	.funcs = NULL,
5579e610dd1Sjsing 	.size = sizeof(OCSP_RESPID),
5589e610dd1Sjsing 	.sname = "OCSP_RESPID",
5599e610dd1Sjsing };
560*e2adc6fbSbeck LCRYPTO_ALIAS(OCSP_RESPID_it);
561da347917Sbeck 
562dc83dab0Sjsing 
563dc83dab0Sjsing OCSP_RESPID *
d2i_OCSP_RESPID(OCSP_RESPID ** a,const unsigned char ** in,long len)564dc83dab0Sjsing d2i_OCSP_RESPID(OCSP_RESPID **a, const unsigned char **in, long len)
565dc83dab0Sjsing {
566dc83dab0Sjsing 	return (OCSP_RESPID *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
567dc83dab0Sjsing 	    &OCSP_RESPID_it);
568dc83dab0Sjsing }
569a1e92f6bSbeck LCRYPTO_ALIAS(d2i_OCSP_RESPID);
570dc83dab0Sjsing 
571dc83dab0Sjsing int
i2d_OCSP_RESPID(OCSP_RESPID * a,unsigned char ** out)572dc83dab0Sjsing i2d_OCSP_RESPID(OCSP_RESPID *a, unsigned char **out)
573dc83dab0Sjsing {
574dc83dab0Sjsing 	return ASN1_item_i2d((ASN1_VALUE *)a, out, &OCSP_RESPID_it);
575dc83dab0Sjsing }
576a1e92f6bSbeck LCRYPTO_ALIAS(i2d_OCSP_RESPID);
577dc83dab0Sjsing 
578dc83dab0Sjsing OCSP_RESPID *
OCSP_RESPID_new(void)579dc83dab0Sjsing OCSP_RESPID_new(void)
580dc83dab0Sjsing {
581dc83dab0Sjsing 	return (OCSP_RESPID *)ASN1_item_new(&OCSP_RESPID_it);
582dc83dab0Sjsing }
583a1e92f6bSbeck LCRYPTO_ALIAS(OCSP_RESPID_new);
584dc83dab0Sjsing 
585dc83dab0Sjsing void
OCSP_RESPID_free(OCSP_RESPID * a)586dc83dab0Sjsing OCSP_RESPID_free(OCSP_RESPID *a)
587dc83dab0Sjsing {
588dc83dab0Sjsing 	ASN1_item_free((ASN1_VALUE *)a, &OCSP_RESPID_it);
589dc83dab0Sjsing }
590a1e92f6bSbeck LCRYPTO_ALIAS(OCSP_RESPID_free);
591da347917Sbeck 
5929e610dd1Sjsing static const ASN1_TEMPLATE OCSP_REVOKEDINFO_seq_tt[] = {
5939e610dd1Sjsing 	{
5949e610dd1Sjsing 		.flags = 0,
5959e610dd1Sjsing 		.tag = 0,
5969e610dd1Sjsing 		.offset = offsetof(OCSP_REVOKEDINFO, revocationTime),
5979e610dd1Sjsing 		.field_name = "revocationTime",
5989e610dd1Sjsing 		.item = &ASN1_GENERALIZEDTIME_it,
5999e610dd1Sjsing 	},
6009e610dd1Sjsing 	{
6019e610dd1Sjsing 		.flags = ASN1_TFLG_EXPLICIT | ASN1_TFLG_OPTIONAL,
6029e610dd1Sjsing 		.tag = 0,
6039e610dd1Sjsing 		.offset = offsetof(OCSP_REVOKEDINFO, revocationReason),
6049e610dd1Sjsing 		.field_name = "revocationReason",
6059e610dd1Sjsing 		.item = &ASN1_ENUMERATED_it,
6069e610dd1Sjsing 	},
6079e610dd1Sjsing };
6089e610dd1Sjsing 
6099e610dd1Sjsing const ASN1_ITEM OCSP_REVOKEDINFO_it = {
6109e610dd1Sjsing 	.itype = ASN1_ITYPE_SEQUENCE,
6119e610dd1Sjsing 	.utype = V_ASN1_SEQUENCE,
6129e610dd1Sjsing 	.templates = OCSP_REVOKEDINFO_seq_tt,
6139e610dd1Sjsing 	.tcount = sizeof(OCSP_REVOKEDINFO_seq_tt) / sizeof(ASN1_TEMPLATE),
6149e610dd1Sjsing 	.funcs = NULL,
6159e610dd1Sjsing 	.size = sizeof(OCSP_REVOKEDINFO),
6169e610dd1Sjsing 	.sname = "OCSP_REVOKEDINFO",
6179e610dd1Sjsing };
618*e2adc6fbSbeck LCRYPTO_ALIAS(OCSP_REVOKEDINFO_it);
619da347917Sbeck 
620dc83dab0Sjsing 
621dc83dab0Sjsing OCSP_REVOKEDINFO *
d2i_OCSP_REVOKEDINFO(OCSP_REVOKEDINFO ** a,const unsigned char ** in,long len)622dc83dab0Sjsing d2i_OCSP_REVOKEDINFO(OCSP_REVOKEDINFO **a, const unsigned char **in, long len)
623dc83dab0Sjsing {
624dc83dab0Sjsing 	return (OCSP_REVOKEDINFO *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
625dc83dab0Sjsing 	    &OCSP_REVOKEDINFO_it);
626dc83dab0Sjsing }
627a1e92f6bSbeck LCRYPTO_ALIAS(d2i_OCSP_REVOKEDINFO);
628dc83dab0Sjsing 
629dc83dab0Sjsing int
i2d_OCSP_REVOKEDINFO(OCSP_REVOKEDINFO * a,unsigned char ** out)630dc83dab0Sjsing i2d_OCSP_REVOKEDINFO(OCSP_REVOKEDINFO *a, unsigned char **out)
631dc83dab0Sjsing {
632dc83dab0Sjsing 	return ASN1_item_i2d((ASN1_VALUE *)a, out, &OCSP_REVOKEDINFO_it);
633dc83dab0Sjsing }
634a1e92f6bSbeck LCRYPTO_ALIAS(i2d_OCSP_REVOKEDINFO);
635dc83dab0Sjsing 
636dc83dab0Sjsing OCSP_REVOKEDINFO *
OCSP_REVOKEDINFO_new(void)637dc83dab0Sjsing OCSP_REVOKEDINFO_new(void)
638dc83dab0Sjsing {
639dc83dab0Sjsing 	return (OCSP_REVOKEDINFO *)ASN1_item_new(&OCSP_REVOKEDINFO_it);
640dc83dab0Sjsing }
641a1e92f6bSbeck LCRYPTO_ALIAS(OCSP_REVOKEDINFO_new);
642dc83dab0Sjsing 
643dc83dab0Sjsing void
OCSP_REVOKEDINFO_free(OCSP_REVOKEDINFO * a)644dc83dab0Sjsing OCSP_REVOKEDINFO_free(OCSP_REVOKEDINFO *a)
645dc83dab0Sjsing {
646dc83dab0Sjsing 	ASN1_item_free((ASN1_VALUE *)a, &OCSP_REVOKEDINFO_it);
647dc83dab0Sjsing }
648a1e92f6bSbeck LCRYPTO_ALIAS(OCSP_REVOKEDINFO_free);
649da347917Sbeck 
6509e610dd1Sjsing static const ASN1_TEMPLATE OCSP_CERTSTATUS_ch_tt[] = {
6519e610dd1Sjsing 	{
6529e610dd1Sjsing 		.flags = ASN1_TFLG_IMPLICIT,
6539e610dd1Sjsing 		.tag = 0,
6549e610dd1Sjsing 		.offset = offsetof(OCSP_CERTSTATUS, value.good),
6559e610dd1Sjsing 		.field_name = "value.good",
6569e610dd1Sjsing 		.item = &ASN1_NULL_it,
6579e610dd1Sjsing 	},
6589e610dd1Sjsing 	{
6599e610dd1Sjsing 		.flags = ASN1_TFLG_IMPLICIT,
6609e610dd1Sjsing 		.tag = 1,
6619e610dd1Sjsing 		.offset = offsetof(OCSP_CERTSTATUS, value.revoked),
6629e610dd1Sjsing 		.field_name = "value.revoked",
6639e610dd1Sjsing 		.item = &OCSP_REVOKEDINFO_it,
6649e610dd1Sjsing 	},
6659e610dd1Sjsing 	{
6669e610dd1Sjsing 		.flags = ASN1_TFLG_IMPLICIT,
6679e610dd1Sjsing 		.tag = 2,
6689e610dd1Sjsing 		.offset = offsetof(OCSP_CERTSTATUS, value.unknown),
6699e610dd1Sjsing 		.field_name = "value.unknown",
6709e610dd1Sjsing 		.item = &ASN1_NULL_it,
6719e610dd1Sjsing 	},
6729e610dd1Sjsing };
6739e610dd1Sjsing 
6749e610dd1Sjsing const ASN1_ITEM OCSP_CERTSTATUS_it = {
6759e610dd1Sjsing 	.itype = ASN1_ITYPE_CHOICE,
6769e610dd1Sjsing 	.utype = offsetof(OCSP_CERTSTATUS, type),
6779e610dd1Sjsing 	.templates = OCSP_CERTSTATUS_ch_tt,
6789e610dd1Sjsing 	.tcount = sizeof(OCSP_CERTSTATUS_ch_tt) / sizeof(ASN1_TEMPLATE),
6799e610dd1Sjsing 	.funcs = NULL,
6809e610dd1Sjsing 	.size = sizeof(OCSP_CERTSTATUS),
6819e610dd1Sjsing 	.sname = "OCSP_CERTSTATUS",
6829e610dd1Sjsing };
683*e2adc6fbSbeck LCRYPTO_ALIAS(OCSP_CERTSTATUS_it);
684da347917Sbeck 
685dc83dab0Sjsing 
686dc83dab0Sjsing OCSP_CERTSTATUS *
d2i_OCSP_CERTSTATUS(OCSP_CERTSTATUS ** a,const unsigned char ** in,long len)687dc83dab0Sjsing d2i_OCSP_CERTSTATUS(OCSP_CERTSTATUS **a, const unsigned char **in, long len)
688dc83dab0Sjsing {
689dc83dab0Sjsing 	return (OCSP_CERTSTATUS *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
690dc83dab0Sjsing 	    &OCSP_CERTSTATUS_it);
691dc83dab0Sjsing }
692a1e92f6bSbeck LCRYPTO_ALIAS(d2i_OCSP_CERTSTATUS);
693dc83dab0Sjsing 
694dc83dab0Sjsing int
i2d_OCSP_CERTSTATUS(OCSP_CERTSTATUS * a,unsigned char ** out)695dc83dab0Sjsing i2d_OCSP_CERTSTATUS(OCSP_CERTSTATUS *a, unsigned char **out)
696dc83dab0Sjsing {
697dc83dab0Sjsing 	return ASN1_item_i2d((ASN1_VALUE *)a, out, &OCSP_CERTSTATUS_it);
698dc83dab0Sjsing }
699a1e92f6bSbeck LCRYPTO_ALIAS(i2d_OCSP_CERTSTATUS);
700dc83dab0Sjsing 
701dc83dab0Sjsing OCSP_CERTSTATUS *
OCSP_CERTSTATUS_new(void)702dc83dab0Sjsing OCSP_CERTSTATUS_new(void)
703dc83dab0Sjsing {
704dc83dab0Sjsing 	return (OCSP_CERTSTATUS *)ASN1_item_new(&OCSP_CERTSTATUS_it);
705dc83dab0Sjsing }
706a1e92f6bSbeck LCRYPTO_ALIAS(OCSP_CERTSTATUS_new);
707dc83dab0Sjsing 
708dc83dab0Sjsing void
OCSP_CERTSTATUS_free(OCSP_CERTSTATUS * a)709dc83dab0Sjsing OCSP_CERTSTATUS_free(OCSP_CERTSTATUS *a)
710dc83dab0Sjsing {
711dc83dab0Sjsing 	ASN1_item_free((ASN1_VALUE *)a, &OCSP_CERTSTATUS_it);
712dc83dab0Sjsing }
713a1e92f6bSbeck LCRYPTO_ALIAS(OCSP_CERTSTATUS_free);
714da347917Sbeck 
7159e610dd1Sjsing static const ASN1_TEMPLATE OCSP_SINGLERESP_seq_tt[] = {
7169e610dd1Sjsing 	{
7179e610dd1Sjsing 		.flags = 0,
7189e610dd1Sjsing 		.tag = 0,
7199e610dd1Sjsing 		.offset = offsetof(OCSP_SINGLERESP, certId),
7209e610dd1Sjsing 		.field_name = "certId",
7219e610dd1Sjsing 		.item = &OCSP_CERTID_it,
7229e610dd1Sjsing 	},
7239e610dd1Sjsing 	{
7249e610dd1Sjsing 		.flags = 0,
7259e610dd1Sjsing 		.tag = 0,
7269e610dd1Sjsing 		.offset = offsetof(OCSP_SINGLERESP, certStatus),
7279e610dd1Sjsing 		.field_name = "certStatus",
7289e610dd1Sjsing 		.item = &OCSP_CERTSTATUS_it,
7299e610dd1Sjsing 	},
7309e610dd1Sjsing 	{
7319e610dd1Sjsing 		.flags = 0,
7329e610dd1Sjsing 		.tag = 0,
7339e610dd1Sjsing 		.offset = offsetof(OCSP_SINGLERESP, thisUpdate),
7349e610dd1Sjsing 		.field_name = "thisUpdate",
7359e610dd1Sjsing 		.item = &ASN1_GENERALIZEDTIME_it,
7369e610dd1Sjsing 	},
7379e610dd1Sjsing 	{
7389e610dd1Sjsing 		.flags = ASN1_TFLG_EXPLICIT | ASN1_TFLG_OPTIONAL,
7399e610dd1Sjsing 		.tag = 0,
7409e610dd1Sjsing 		.offset = offsetof(OCSP_SINGLERESP, nextUpdate),
7419e610dd1Sjsing 		.field_name = "nextUpdate",
7429e610dd1Sjsing 		.item = &ASN1_GENERALIZEDTIME_it,
7439e610dd1Sjsing 	},
7449e610dd1Sjsing 	{
7459e610dd1Sjsing 		.flags = ASN1_TFLG_EXPLICIT | ASN1_TFLG_SEQUENCE_OF | ASN1_TFLG_OPTIONAL,
7469e610dd1Sjsing 		.tag = 1,
7479e610dd1Sjsing 		.offset = offsetof(OCSP_SINGLERESP, singleExtensions),
7489e610dd1Sjsing 		.field_name = "singleExtensions",
7499e610dd1Sjsing 		.item = &X509_EXTENSION_it,
7509e610dd1Sjsing 	},
7519e610dd1Sjsing };
7529e610dd1Sjsing 
7539e610dd1Sjsing const ASN1_ITEM OCSP_SINGLERESP_it = {
7549e610dd1Sjsing 	.itype = ASN1_ITYPE_SEQUENCE,
7559e610dd1Sjsing 	.utype = V_ASN1_SEQUENCE,
7569e610dd1Sjsing 	.templates = OCSP_SINGLERESP_seq_tt,
7579e610dd1Sjsing 	.tcount = sizeof(OCSP_SINGLERESP_seq_tt) / sizeof(ASN1_TEMPLATE),
7589e610dd1Sjsing 	.funcs = NULL,
7599e610dd1Sjsing 	.size = sizeof(OCSP_SINGLERESP),
7609e610dd1Sjsing 	.sname = "OCSP_SINGLERESP",
7619e610dd1Sjsing };
762*e2adc6fbSbeck LCRYPTO_ALIAS(OCSP_SINGLERESP_it);
763da347917Sbeck 
764dc83dab0Sjsing 
765dc83dab0Sjsing OCSP_SINGLERESP *
d2i_OCSP_SINGLERESP(OCSP_SINGLERESP ** a,const unsigned char ** in,long len)766dc83dab0Sjsing d2i_OCSP_SINGLERESP(OCSP_SINGLERESP **a, const unsigned char **in, long len)
767dc83dab0Sjsing {
768dc83dab0Sjsing 	return (OCSP_SINGLERESP *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
769dc83dab0Sjsing 	    &OCSP_SINGLERESP_it);
770dc83dab0Sjsing }
771a1e92f6bSbeck LCRYPTO_ALIAS(d2i_OCSP_SINGLERESP);
772dc83dab0Sjsing 
773dc83dab0Sjsing int
i2d_OCSP_SINGLERESP(OCSP_SINGLERESP * a,unsigned char ** out)774dc83dab0Sjsing i2d_OCSP_SINGLERESP(OCSP_SINGLERESP *a, unsigned char **out)
775dc83dab0Sjsing {
776dc83dab0Sjsing 	return ASN1_item_i2d((ASN1_VALUE *)a, out, &OCSP_SINGLERESP_it);
777dc83dab0Sjsing }
778a1e92f6bSbeck LCRYPTO_ALIAS(i2d_OCSP_SINGLERESP);
779dc83dab0Sjsing 
780dc83dab0Sjsing OCSP_SINGLERESP *
OCSP_SINGLERESP_new(void)781dc83dab0Sjsing OCSP_SINGLERESP_new(void)
782dc83dab0Sjsing {
783dc83dab0Sjsing 	return (OCSP_SINGLERESP *)ASN1_item_new(&OCSP_SINGLERESP_it);
784dc83dab0Sjsing }
785a1e92f6bSbeck LCRYPTO_ALIAS(OCSP_SINGLERESP_new);
786dc83dab0Sjsing 
787dc83dab0Sjsing void
OCSP_SINGLERESP_free(OCSP_SINGLERESP * a)788dc83dab0Sjsing OCSP_SINGLERESP_free(OCSP_SINGLERESP *a)
789dc83dab0Sjsing {
790dc83dab0Sjsing 	ASN1_item_free((ASN1_VALUE *)a, &OCSP_SINGLERESP_it);
791dc83dab0Sjsing }
792a1e92f6bSbeck LCRYPTO_ALIAS(OCSP_SINGLERESP_free);
793da347917Sbeck 
7949e610dd1Sjsing static const ASN1_TEMPLATE OCSP_RESPDATA_seq_tt[] = {
7959e610dd1Sjsing 	{
7969e610dd1Sjsing 		.flags = ASN1_TFLG_EXPLICIT | ASN1_TFLG_OPTIONAL,
7979e610dd1Sjsing 		.tag = 0,
7989e610dd1Sjsing 		.offset = offsetof(OCSP_RESPDATA, version),
7999e610dd1Sjsing 		.field_name = "version",
8009e610dd1Sjsing 		.item = &ASN1_INTEGER_it,
8019e610dd1Sjsing 	},
8029e610dd1Sjsing 	{
8039e610dd1Sjsing 		.flags = 0,
8049e610dd1Sjsing 		.tag = 0,
8059e610dd1Sjsing 		.offset = offsetof(OCSP_RESPDATA, responderId),
8069e610dd1Sjsing 		.field_name = "responderId",
8079e610dd1Sjsing 		.item = &OCSP_RESPID_it,
8089e610dd1Sjsing 	},
8099e610dd1Sjsing 	{
8109e610dd1Sjsing 		.flags = 0,
8119e610dd1Sjsing 		.tag = 0,
8129e610dd1Sjsing 		.offset = offsetof(OCSP_RESPDATA, producedAt),
8139e610dd1Sjsing 		.field_name = "producedAt",
8149e610dd1Sjsing 		.item = &ASN1_GENERALIZEDTIME_it,
8159e610dd1Sjsing 	},
8169e610dd1Sjsing 	{
8179e610dd1Sjsing 		.flags = ASN1_TFLG_SEQUENCE_OF,
8189e610dd1Sjsing 		.tag = 0,
8199e610dd1Sjsing 		.offset = offsetof(OCSP_RESPDATA, responses),
8209e610dd1Sjsing 		.field_name = "responses",
8219e610dd1Sjsing 		.item = &OCSP_SINGLERESP_it,
8229e610dd1Sjsing 	},
8239e610dd1Sjsing 	{
8249e610dd1Sjsing 		.flags = ASN1_TFLG_EXPLICIT | ASN1_TFLG_SEQUENCE_OF | ASN1_TFLG_OPTIONAL,
8259e610dd1Sjsing 		.tag = 1,
8269e610dd1Sjsing 		.offset = offsetof(OCSP_RESPDATA, responseExtensions),
8279e610dd1Sjsing 		.field_name = "responseExtensions",
8289e610dd1Sjsing 		.item = &X509_EXTENSION_it,
8299e610dd1Sjsing 	},
8309e610dd1Sjsing };
8319e610dd1Sjsing 
8329e610dd1Sjsing const ASN1_ITEM OCSP_RESPDATA_it = {
8339e610dd1Sjsing 	.itype = ASN1_ITYPE_SEQUENCE,
8349e610dd1Sjsing 	.utype = V_ASN1_SEQUENCE,
8359e610dd1Sjsing 	.templates = OCSP_RESPDATA_seq_tt,
8369e610dd1Sjsing 	.tcount = sizeof(OCSP_RESPDATA_seq_tt) / sizeof(ASN1_TEMPLATE),
8379e610dd1Sjsing 	.funcs = NULL,
8389e610dd1Sjsing 	.size = sizeof(OCSP_RESPDATA),
8399e610dd1Sjsing 	.sname = "OCSP_RESPDATA",
8409e610dd1Sjsing };
841*e2adc6fbSbeck LCRYPTO_ALIAS(OCSP_RESPDATA_it);
842da347917Sbeck 
843dc83dab0Sjsing 
844dc83dab0Sjsing OCSP_RESPDATA *
d2i_OCSP_RESPDATA(OCSP_RESPDATA ** a,const unsigned char ** in,long len)845dc83dab0Sjsing d2i_OCSP_RESPDATA(OCSP_RESPDATA **a, const unsigned char **in, long len)
846dc83dab0Sjsing {
847dc83dab0Sjsing 	return (OCSP_RESPDATA *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
848dc83dab0Sjsing 	    &OCSP_RESPDATA_it);
849dc83dab0Sjsing }
850a1e92f6bSbeck LCRYPTO_ALIAS(d2i_OCSP_RESPDATA);
851dc83dab0Sjsing 
852dc83dab0Sjsing int
i2d_OCSP_RESPDATA(OCSP_RESPDATA * a,unsigned char ** out)853dc83dab0Sjsing i2d_OCSP_RESPDATA(OCSP_RESPDATA *a, unsigned char **out)
854dc83dab0Sjsing {
855dc83dab0Sjsing 	return ASN1_item_i2d((ASN1_VALUE *)a, out, &OCSP_RESPDATA_it);
856dc83dab0Sjsing }
857a1e92f6bSbeck LCRYPTO_ALIAS(i2d_OCSP_RESPDATA);
858dc83dab0Sjsing 
859dc83dab0Sjsing OCSP_RESPDATA *
OCSP_RESPDATA_new(void)860dc83dab0Sjsing OCSP_RESPDATA_new(void)
861dc83dab0Sjsing {
862dc83dab0Sjsing 	return (OCSP_RESPDATA *)ASN1_item_new(&OCSP_RESPDATA_it);
863dc83dab0Sjsing }
864a1e92f6bSbeck LCRYPTO_ALIAS(OCSP_RESPDATA_new);
865dc83dab0Sjsing 
866dc83dab0Sjsing void
OCSP_RESPDATA_free(OCSP_RESPDATA * a)867dc83dab0Sjsing OCSP_RESPDATA_free(OCSP_RESPDATA *a)
868dc83dab0Sjsing {
869dc83dab0Sjsing 	ASN1_item_free((ASN1_VALUE *)a, &OCSP_RESPDATA_it);
870dc83dab0Sjsing }
871a1e92f6bSbeck LCRYPTO_ALIAS(OCSP_RESPDATA_free);
872da347917Sbeck 
8739e610dd1Sjsing static const ASN1_TEMPLATE OCSP_BASICRESP_seq_tt[] = {
8749e610dd1Sjsing 	{
8759e610dd1Sjsing 		.flags = 0,
8769e610dd1Sjsing 		.tag = 0,
8779e610dd1Sjsing 		.offset = offsetof(OCSP_BASICRESP, tbsResponseData),
8789e610dd1Sjsing 		.field_name = "tbsResponseData",
8799e610dd1Sjsing 		.item = &OCSP_RESPDATA_it,
8809e610dd1Sjsing 	},
8819e610dd1Sjsing 	{
8829e610dd1Sjsing 		.flags = 0,
8839e610dd1Sjsing 		.tag = 0,
8849e610dd1Sjsing 		.offset = offsetof(OCSP_BASICRESP, signatureAlgorithm),
8859e610dd1Sjsing 		.field_name = "signatureAlgorithm",
8869e610dd1Sjsing 		.item = &X509_ALGOR_it,
8879e610dd1Sjsing 	},
8889e610dd1Sjsing 	{
8899e610dd1Sjsing 		.flags = 0,
8909e610dd1Sjsing 		.tag = 0,
8919e610dd1Sjsing 		.offset = offsetof(OCSP_BASICRESP, signature),
8929e610dd1Sjsing 		.field_name = "signature",
8939e610dd1Sjsing 		.item = &ASN1_BIT_STRING_it,
8949e610dd1Sjsing 	},
8959e610dd1Sjsing 	{
8969e610dd1Sjsing 		.flags = ASN1_TFLG_EXPLICIT | ASN1_TFLG_SEQUENCE_OF | ASN1_TFLG_OPTIONAL,
8979e610dd1Sjsing 		.tag = 0,
8989e610dd1Sjsing 		.offset = offsetof(OCSP_BASICRESP, certs),
8999e610dd1Sjsing 		.field_name = "certs",
9009e610dd1Sjsing 		.item = &X509_it,
9019e610dd1Sjsing 	},
9029e610dd1Sjsing };
9039e610dd1Sjsing 
9049e610dd1Sjsing const ASN1_ITEM OCSP_BASICRESP_it = {
9059e610dd1Sjsing 	.itype = ASN1_ITYPE_SEQUENCE,
9069e610dd1Sjsing 	.utype = V_ASN1_SEQUENCE,
9079e610dd1Sjsing 	.templates = OCSP_BASICRESP_seq_tt,
9089e610dd1Sjsing 	.tcount = sizeof(OCSP_BASICRESP_seq_tt) / sizeof(ASN1_TEMPLATE),
9099e610dd1Sjsing 	.funcs = NULL,
9109e610dd1Sjsing 	.size = sizeof(OCSP_BASICRESP),
9119e610dd1Sjsing 	.sname = "OCSP_BASICRESP",
9129e610dd1Sjsing };
913*e2adc6fbSbeck LCRYPTO_ALIAS(OCSP_BASICRESP_it);
914da347917Sbeck 
915dc83dab0Sjsing 
916dc83dab0Sjsing OCSP_BASICRESP *
d2i_OCSP_BASICRESP(OCSP_BASICRESP ** a,const unsigned char ** in,long len)917dc83dab0Sjsing d2i_OCSP_BASICRESP(OCSP_BASICRESP **a, const unsigned char **in, long len)
918dc83dab0Sjsing {
919dc83dab0Sjsing 	return (OCSP_BASICRESP *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
920dc83dab0Sjsing 	    &OCSP_BASICRESP_it);
921dc83dab0Sjsing }
922a1e92f6bSbeck LCRYPTO_ALIAS(d2i_OCSP_BASICRESP);
923dc83dab0Sjsing 
924dc83dab0Sjsing int
i2d_OCSP_BASICRESP(OCSP_BASICRESP * a,unsigned char ** out)925dc83dab0Sjsing i2d_OCSP_BASICRESP(OCSP_BASICRESP *a, unsigned char **out)
926dc83dab0Sjsing {
927dc83dab0Sjsing 	return ASN1_item_i2d((ASN1_VALUE *)a, out, &OCSP_BASICRESP_it);
928dc83dab0Sjsing }
929a1e92f6bSbeck LCRYPTO_ALIAS(i2d_OCSP_BASICRESP);
930dc83dab0Sjsing 
931dc83dab0Sjsing OCSP_BASICRESP *
OCSP_BASICRESP_new(void)932dc83dab0Sjsing OCSP_BASICRESP_new(void)
933dc83dab0Sjsing {
934dc83dab0Sjsing 	return (OCSP_BASICRESP *)ASN1_item_new(&OCSP_BASICRESP_it);
935dc83dab0Sjsing }
936a1e92f6bSbeck LCRYPTO_ALIAS(OCSP_BASICRESP_new);
937dc83dab0Sjsing 
938dc83dab0Sjsing void
OCSP_BASICRESP_free(OCSP_BASICRESP * a)939dc83dab0Sjsing OCSP_BASICRESP_free(OCSP_BASICRESP *a)
940dc83dab0Sjsing {
941dc83dab0Sjsing 	ASN1_item_free((ASN1_VALUE *)a, &OCSP_BASICRESP_it);
942dc83dab0Sjsing }
943a1e92f6bSbeck LCRYPTO_ALIAS(OCSP_BASICRESP_free);
944da347917Sbeck 
9459e610dd1Sjsing static const ASN1_TEMPLATE OCSP_CRLID_seq_tt[] = {
9469e610dd1Sjsing 	{
9479e610dd1Sjsing 		.flags = ASN1_TFLG_EXPLICIT | ASN1_TFLG_OPTIONAL,
9489e610dd1Sjsing 		.tag = 0,
9499e610dd1Sjsing 		.offset = offsetof(OCSP_CRLID, crlUrl),
9509e610dd1Sjsing 		.field_name = "crlUrl",
9519e610dd1Sjsing 		.item = &ASN1_IA5STRING_it,
9529e610dd1Sjsing 	},
9539e610dd1Sjsing 	{
9549e610dd1Sjsing 		.flags = ASN1_TFLG_EXPLICIT | ASN1_TFLG_OPTIONAL,
9559e610dd1Sjsing 		.tag = 1,
9569e610dd1Sjsing 		.offset = offsetof(OCSP_CRLID, crlNum),
9579e610dd1Sjsing 		.field_name = "crlNum",
9589e610dd1Sjsing 		.item = &ASN1_INTEGER_it,
9599e610dd1Sjsing 	},
9609e610dd1Sjsing 	{
9619e610dd1Sjsing 		.flags = ASN1_TFLG_EXPLICIT | ASN1_TFLG_OPTIONAL,
9629e610dd1Sjsing 		.tag = 2,
9639e610dd1Sjsing 		.offset = offsetof(OCSP_CRLID, crlTime),
9649e610dd1Sjsing 		.field_name = "crlTime",
9659e610dd1Sjsing 		.item = &ASN1_GENERALIZEDTIME_it,
9669e610dd1Sjsing 	},
9679e610dd1Sjsing };
9689e610dd1Sjsing 
9699e610dd1Sjsing const ASN1_ITEM OCSP_CRLID_it = {
9709e610dd1Sjsing 	.itype = ASN1_ITYPE_SEQUENCE,
9719e610dd1Sjsing 	.utype = V_ASN1_SEQUENCE,
9729e610dd1Sjsing 	.templates = OCSP_CRLID_seq_tt,
9739e610dd1Sjsing 	.tcount = sizeof(OCSP_CRLID_seq_tt) / sizeof(ASN1_TEMPLATE),
9749e610dd1Sjsing 	.funcs = NULL,
9759e610dd1Sjsing 	.size = sizeof(OCSP_CRLID),
9769e610dd1Sjsing 	.sname = "OCSP_CRLID",
9779e610dd1Sjsing };
978*e2adc6fbSbeck LCRYPTO_ALIAS(OCSP_CRLID_it);
979da347917Sbeck 
980dc83dab0Sjsing 
981dc83dab0Sjsing OCSP_CRLID *
d2i_OCSP_CRLID(OCSP_CRLID ** a,const unsigned char ** in,long len)982dc83dab0Sjsing d2i_OCSP_CRLID(OCSP_CRLID **a, const unsigned char **in, long len)
983dc83dab0Sjsing {
984dc83dab0Sjsing 	return (OCSP_CRLID *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
985dc83dab0Sjsing 	    &OCSP_CRLID_it);
986dc83dab0Sjsing }
987a1e92f6bSbeck LCRYPTO_ALIAS(d2i_OCSP_CRLID);
988dc83dab0Sjsing 
989dc83dab0Sjsing int
i2d_OCSP_CRLID(OCSP_CRLID * a,unsigned char ** out)990dc83dab0Sjsing i2d_OCSP_CRLID(OCSP_CRLID *a, unsigned char **out)
991dc83dab0Sjsing {
992dc83dab0Sjsing 	return ASN1_item_i2d((ASN1_VALUE *)a, out, &OCSP_CRLID_it);
993dc83dab0Sjsing }
994a1e92f6bSbeck LCRYPTO_ALIAS(i2d_OCSP_CRLID);
995dc83dab0Sjsing 
996dc83dab0Sjsing OCSP_CRLID *
OCSP_CRLID_new(void)997dc83dab0Sjsing OCSP_CRLID_new(void)
998dc83dab0Sjsing {
999dc83dab0Sjsing 	return (OCSP_CRLID *)ASN1_item_new(&OCSP_CRLID_it);
1000dc83dab0Sjsing }
1001a1e92f6bSbeck LCRYPTO_ALIAS(OCSP_CRLID_new);
1002dc83dab0Sjsing 
1003dc83dab0Sjsing void
OCSP_CRLID_free(OCSP_CRLID * a)1004dc83dab0Sjsing OCSP_CRLID_free(OCSP_CRLID *a)
1005dc83dab0Sjsing {
1006dc83dab0Sjsing 	ASN1_item_free((ASN1_VALUE *)a, &OCSP_CRLID_it);
1007dc83dab0Sjsing }
1008a1e92f6bSbeck LCRYPTO_ALIAS(OCSP_CRLID_free);
1009da347917Sbeck 
10109e610dd1Sjsing static const ASN1_TEMPLATE OCSP_SERVICELOC_seq_tt[] = {
10119e610dd1Sjsing 	{
10129e610dd1Sjsing 		.flags = 0,
10139e610dd1Sjsing 		.tag = 0,
10149e610dd1Sjsing 		.offset = offsetof(OCSP_SERVICELOC, issuer),
10159e610dd1Sjsing 		.field_name = "issuer",
10169e610dd1Sjsing 		.item = &X509_NAME_it,
10179e610dd1Sjsing 	},
10189e610dd1Sjsing 	{
10199e610dd1Sjsing 		.flags = ASN1_TFLG_SEQUENCE_OF | ASN1_TFLG_OPTIONAL,
10209e610dd1Sjsing 		.tag = 0,
10219e610dd1Sjsing 		.offset = offsetof(OCSP_SERVICELOC, locator),
10229e610dd1Sjsing 		.field_name = "locator",
10239e610dd1Sjsing 		.item = &ACCESS_DESCRIPTION_it,
10249e610dd1Sjsing 	},
10259e610dd1Sjsing };
10269e610dd1Sjsing 
10279e610dd1Sjsing const ASN1_ITEM OCSP_SERVICELOC_it = {
10289e610dd1Sjsing 	.itype = ASN1_ITYPE_SEQUENCE,
10299e610dd1Sjsing 	.utype = V_ASN1_SEQUENCE,
10309e610dd1Sjsing 	.templates = OCSP_SERVICELOC_seq_tt,
10319e610dd1Sjsing 	.tcount = sizeof(OCSP_SERVICELOC_seq_tt) / sizeof(ASN1_TEMPLATE),
10329e610dd1Sjsing 	.funcs = NULL,
10339e610dd1Sjsing 	.size = sizeof(OCSP_SERVICELOC),
10349e610dd1Sjsing 	.sname = "OCSP_SERVICELOC",
10359e610dd1Sjsing };
1036*e2adc6fbSbeck LCRYPTO_ALIAS(OCSP_SERVICELOC_it);
1037da347917Sbeck 
1038dc83dab0Sjsing 
1039dc83dab0Sjsing OCSP_SERVICELOC *
d2i_OCSP_SERVICELOC(OCSP_SERVICELOC ** a,const unsigned char ** in,long len)1040dc83dab0Sjsing d2i_OCSP_SERVICELOC(OCSP_SERVICELOC **a, const unsigned char **in, long len)
1041dc83dab0Sjsing {
1042dc83dab0Sjsing 	return (OCSP_SERVICELOC *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
1043dc83dab0Sjsing 	    &OCSP_SERVICELOC_it);
1044dc83dab0Sjsing }
1045a1e92f6bSbeck LCRYPTO_ALIAS(d2i_OCSP_SERVICELOC);
1046dc83dab0Sjsing 
1047dc83dab0Sjsing int
i2d_OCSP_SERVICELOC(OCSP_SERVICELOC * a,unsigned char ** out)1048dc83dab0Sjsing i2d_OCSP_SERVICELOC(OCSP_SERVICELOC *a, unsigned char **out)
1049dc83dab0Sjsing {
1050dc83dab0Sjsing 	return ASN1_item_i2d((ASN1_VALUE *)a, out, &OCSP_SERVICELOC_it);
1051dc83dab0Sjsing }
1052a1e92f6bSbeck LCRYPTO_ALIAS(i2d_OCSP_SERVICELOC);
1053dc83dab0Sjsing 
1054dc83dab0Sjsing OCSP_SERVICELOC *
OCSP_SERVICELOC_new(void)1055dc83dab0Sjsing OCSP_SERVICELOC_new(void)
1056dc83dab0Sjsing {
1057dc83dab0Sjsing 	return (OCSP_SERVICELOC *)ASN1_item_new(&OCSP_SERVICELOC_it);
1058dc83dab0Sjsing }
1059a1e92f6bSbeck LCRYPTO_ALIAS(OCSP_SERVICELOC_new);
1060dc83dab0Sjsing 
1061dc83dab0Sjsing void
OCSP_SERVICELOC_free(OCSP_SERVICELOC * a)1062dc83dab0Sjsing OCSP_SERVICELOC_free(OCSP_SERVICELOC *a)
1063dc83dab0Sjsing {
1064dc83dab0Sjsing 	ASN1_item_free((ASN1_VALUE *)a, &OCSP_SERVICELOC_it);
1065dc83dab0Sjsing }
1066a1e92f6bSbeck LCRYPTO_ALIAS(OCSP_SERVICELOC_free);
1067