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