1656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* ocsp.h */
2656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Written by Tom Titchener <Tom_Titchener@groove.net> for the OpenSSL
3656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * project. */
4656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
5656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* History:
6656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   This file was transfered to Richard Levitte from CertCo by Kathy
7656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   Weinhold in mid-spring 2000 to be included in OpenSSL or released
8656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   as a patch kit. */
9656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
10656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* ====================================================================
11656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * Copyright (c) 1998-2000 The OpenSSL Project.  All rights reserved.
12656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
13656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * Redistribution and use in source and binary forms, with or without
14656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * modification, are permitted provided that the following conditions
15656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * are met:
16656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
17656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 1. Redistributions of source code must retain the above copyright
18656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    notice, this list of conditions and the following disclaimer.
19656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
20656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 2. Redistributions in binary form must reproduce the above copyright
21656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    notice, this list of conditions and the following disclaimer in
22656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    the documentation and/or other materials provided with the
23656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    distribution.
24656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
25656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 3. All advertising materials mentioning features or use of this
26656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    software must display the following acknowledgment:
27656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    "This product includes software developed by the OpenSSL Project
28656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
29656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
30656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
31656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    endorse or promote products derived from this software without
32656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    prior written permission. For written permission, please contact
33656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    openssl-core@openssl.org.
34656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
35656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 5. Products derived from this software may not be called "OpenSSL"
36656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    nor may "OpenSSL" appear in their names without prior written
37656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    permission of the OpenSSL Project.
38656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
39656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 6. Redistributions of any form whatsoever must retain the following
40656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    acknowledgment:
41656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    "This product includes software developed by the OpenSSL Project
42656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
43656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
44656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
45656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
46656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
47656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
48656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
49656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
50656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
51656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
52656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
53656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
54656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
55656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * OF THE POSSIBILITY OF SUCH DAMAGE.
56656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * ====================================================================
57656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
58656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * This product includes cryptographic software written by Eric Young
59656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * (eay@cryptsoft.com).  This product includes software written by Tim
60656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * Hudson (tjh@cryptsoft.com).
61656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
62656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project */
63656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
64656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef HEADER_OCSP_H
65656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define HEADER_OCSP_H
66656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
67221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom#include <openssl/ossl_typ.h>
68656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include <openssl/x509.h>
69656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include <openssl/x509v3.h>
70656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include <openssl/safestack.h>
71656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
72656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifdef  __cplusplus
73656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectextern "C" {
74656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
75656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
76656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Various flags and values */
77656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
78656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_DEFAULT_NONCE_LENGTH	16
79656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
80656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_NOCERTS			0x1
81656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_NOINTERN			0x2
82656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_NOSIGS			0x4
83656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_NOCHAIN			0x8
84656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_NOVERIFY			0x10
85656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_NOEXPLICIT			0x20
86656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_NOCASIGN			0x40
87656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_NODELEGATED		0x80
88656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_NOCHECKS			0x100
89656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_TRUSTOTHER			0x200
90656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_RESPID_KEY			0x400
91656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_NOTIME			0x800
92656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
93656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/*   CertID ::= SEQUENCE {
94656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *       hashAlgorithm            AlgorithmIdentifier,
95656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *       issuerNameHash     OCTET STRING, -- Hash of Issuer's DN
96656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *       issuerKeyHash      OCTET STRING, -- Hash of Issuers public key (excluding the tag & length fields)
97656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *       serialNumber       CertificateSerialNumber }
98656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project */
99656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projecttypedef struct ocsp_cert_id_st
100656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
101656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	X509_ALGOR *hashAlgorithm;
102656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ASN1_OCTET_STRING *issuerNameHash;
103656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ASN1_OCTET_STRING *issuerKeyHash;
104656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ASN1_INTEGER *serialNumber;
105656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	} OCSP_CERTID;
106656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
107656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectDECLARE_STACK_OF(OCSP_CERTID)
108656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
109656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/*   Request ::=     SEQUENCE {
110656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *       reqCert                    CertID,
111656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *       singleRequestExtensions    [0] EXPLICIT Extensions OPTIONAL }
112656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project */
113656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projecttypedef struct ocsp_one_request_st
114656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
115656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	OCSP_CERTID *reqCert;
116656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	STACK_OF(X509_EXTENSION) *singleRequestExtensions;
117656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	} OCSP_ONEREQ;
118656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
119656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectDECLARE_STACK_OF(OCSP_ONEREQ)
120656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectDECLARE_ASN1_SET_OF(OCSP_ONEREQ)
121656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
122656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
123656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/*   TBSRequest      ::=     SEQUENCE {
124656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *       version             [0] EXPLICIT Version DEFAULT v1,
125656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *       requestorName       [1] EXPLICIT GeneralName OPTIONAL,
126656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *       requestList             SEQUENCE OF Request,
127656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *       requestExtensions   [2] EXPLICIT Extensions OPTIONAL }
128656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project */
129656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projecttypedef struct ocsp_req_info_st
130656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
131656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ASN1_INTEGER *version;
132656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	GENERAL_NAME *requestorName;
133656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	STACK_OF(OCSP_ONEREQ) *requestList;
134656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	STACK_OF(X509_EXTENSION) *requestExtensions;
135656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	} OCSP_REQINFO;
136656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
137656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/*   Signature       ::=     SEQUENCE {
138656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *       signatureAlgorithm   AlgorithmIdentifier,
139656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *       signature            BIT STRING,
140656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *       certs                [0] EXPLICIT SEQUENCE OF Certificate OPTIONAL }
141656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project */
142656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projecttypedef struct ocsp_signature_st
143656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
144656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	X509_ALGOR *signatureAlgorithm;
145656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ASN1_BIT_STRING *signature;
146656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	STACK_OF(X509) *certs;
147656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	} OCSP_SIGNATURE;
148656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
149656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/*   OCSPRequest     ::=     SEQUENCE {
150656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *       tbsRequest                  TBSRequest,
151656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *       optionalSignature   [0]     EXPLICIT Signature OPTIONAL }
152656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project */
153656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projecttypedef struct ocsp_request_st
154656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
155656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	OCSP_REQINFO *tbsRequest;
156656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	OCSP_SIGNATURE *optionalSignature; /* OPTIONAL */
157656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	} OCSP_REQUEST;
158656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
159656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/*   OCSPResponseStatus ::= ENUMERATED {
160656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *       successful            (0),      --Response has valid confirmations
161656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *       malformedRequest      (1),      --Illegal confirmation request
162656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *       internalError         (2),      --Internal error in issuer
163656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *       tryLater              (3),      --Try again later
164656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *                                       --(4) is not used
165656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *       sigRequired           (5),      --Must sign the request
166656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *       unauthorized          (6)       --Request unauthorized
167656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *   }
168656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project */
169656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_RESPONSE_STATUS_SUCCESSFUL          0
170656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_RESPONSE_STATUS_MALFORMEDREQUEST     1
171656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_RESPONSE_STATUS_INTERNALERROR        2
172656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_RESPONSE_STATUS_TRYLATER             3
173656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_RESPONSE_STATUS_SIGREQUIRED          5
174656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_RESPONSE_STATUS_UNAUTHORIZED         6
175656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
176656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/*   ResponseBytes ::=       SEQUENCE {
177656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *       responseType   OBJECT IDENTIFIER,
178656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *       response       OCTET STRING }
179656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project */
180656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projecttypedef struct ocsp_resp_bytes_st
181656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
182656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ASN1_OBJECT *responseType;
183656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ASN1_OCTET_STRING *response;
184656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	} OCSP_RESPBYTES;
185656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
186656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/*   OCSPResponse ::= SEQUENCE {
187656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *      responseStatus         OCSPResponseStatus,
188656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *      responseBytes          [0] EXPLICIT ResponseBytes OPTIONAL }
189656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project */
190656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectstruct ocsp_response_st
191656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
192656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ASN1_ENUMERATED *responseStatus;
193656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	OCSP_RESPBYTES  *responseBytes;
194656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	};
195656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
196656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/*   ResponderID ::= CHOICE {
197656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *      byName   [1] Name,
198656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *      byKey    [2] KeyHash }
199656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project */
200656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define V_OCSP_RESPID_NAME 0
201656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define V_OCSP_RESPID_KEY  1
202656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectstruct ocsp_responder_id_st
203656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
204656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	int type;
205656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	union   {
206656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		X509_NAME* byName;
207656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project        	ASN1_OCTET_STRING *byKey;
208656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		} value;
209656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	};
210656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
211656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectDECLARE_STACK_OF(OCSP_RESPID)
212656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectDECLARE_ASN1_FUNCTIONS(OCSP_RESPID)
213656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
214656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/*   KeyHash ::= OCTET STRING --SHA-1 hash of responder's public key
215656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *                            --(excluding the tag and length fields)
216656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project */
217656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
218656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/*   RevokedInfo ::= SEQUENCE {
219656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *       revocationTime              GeneralizedTime,
220656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *       revocationReason    [0]     EXPLICIT CRLReason OPTIONAL }
221656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project */
222656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projecttypedef struct ocsp_revoked_info_st
223656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
224656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ASN1_GENERALIZEDTIME *revocationTime;
225656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ASN1_ENUMERATED *revocationReason;
226656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	} OCSP_REVOKEDINFO;
227656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
228656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/*   CertStatus ::= CHOICE {
229656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *       good                [0]     IMPLICIT NULL,
230656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *       revoked             [1]     IMPLICIT RevokedInfo,
231656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *       unknown             [2]     IMPLICIT UnknownInfo }
232656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project */
233656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define V_OCSP_CERTSTATUS_GOOD    0
234656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define V_OCSP_CERTSTATUS_REVOKED 1
235656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define V_OCSP_CERTSTATUS_UNKNOWN 2
236656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projecttypedef struct ocsp_cert_status_st
237656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
238656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	int type;
239656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	union	{
240656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		ASN1_NULL *good;
241656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		OCSP_REVOKEDINFO *revoked;
242656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		ASN1_NULL *unknown;
243656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		} value;
244656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	} OCSP_CERTSTATUS;
245656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
246656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/*   SingleResponse ::= SEQUENCE {
247656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *      certID                       CertID,
248656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *      certStatus                   CertStatus,
249656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *      thisUpdate                   GeneralizedTime,
250656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *      nextUpdate           [0]     EXPLICIT GeneralizedTime OPTIONAL,
251656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *      singleExtensions     [1]     EXPLICIT Extensions OPTIONAL }
252656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project */
253656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projecttypedef struct ocsp_single_response_st
254656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
255656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	OCSP_CERTID *certId;
256656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	OCSP_CERTSTATUS *certStatus;
257656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ASN1_GENERALIZEDTIME *thisUpdate;
258656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ASN1_GENERALIZEDTIME *nextUpdate;
259656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	STACK_OF(X509_EXTENSION) *singleExtensions;
260656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	} OCSP_SINGLERESP;
261656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
262656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectDECLARE_STACK_OF(OCSP_SINGLERESP)
263656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectDECLARE_ASN1_SET_OF(OCSP_SINGLERESP)
264656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
265656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/*   ResponseData ::= SEQUENCE {
266656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *      version              [0] EXPLICIT Version DEFAULT v1,
267656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *      responderID              ResponderID,
268656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *      producedAt               GeneralizedTime,
269656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *      responses                SEQUENCE OF SingleResponse,
270656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *      responseExtensions   [1] EXPLICIT Extensions OPTIONAL }
271656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project */
272656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projecttypedef struct ocsp_response_data_st
273656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
274656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ASN1_INTEGER *version;
275656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	OCSP_RESPID  *responderId;
276656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ASN1_GENERALIZEDTIME *producedAt;
277656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	STACK_OF(OCSP_SINGLERESP) *responses;
278656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	STACK_OF(X509_EXTENSION) *responseExtensions;
279656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	} OCSP_RESPDATA;
280656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
281656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/*   BasicOCSPResponse       ::= SEQUENCE {
282656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *      tbsResponseData      ResponseData,
283656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *      signatureAlgorithm   AlgorithmIdentifier,
284656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *      signature            BIT STRING,
285656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *      certs                [0] EXPLICIT SEQUENCE OF Certificate OPTIONAL }
286656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project */
287656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project  /* Note 1:
288656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project     The value for "signature" is specified in the OCSP rfc2560 as follows:
289656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project     "The value for the signature SHALL be computed on the hash of the DER
290656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project     encoding ResponseData."  This means that you must hash the DER-encoded
291656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project     tbsResponseData, and then run it through a crypto-signing function, which
292656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project     will (at least w/RSA) do a hash-'n'-private-encrypt operation.  This seems
293656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project     a bit odd, but that's the spec.  Also note that the data structures do not
294656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project     leave anywhere to independently specify the algorithm used for the initial
295656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project     hash. So, we look at the signature-specification algorithm, and try to do
296656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project     something intelligent.	-- Kathy Weinhold, CertCo */
297656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project  /* Note 2:
298656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project     It seems that the mentioned passage from RFC 2560 (section 4.2.1) is open
299656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project     for interpretation.  I've done tests against another responder, and found
300656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project     that it doesn't do the double hashing that the RFC seems to say one
301656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project     should.  Therefore, all relevant functions take a flag saying which
302656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project     variant should be used.	-- Richard Levitte, OpenSSL team and CeloCom */
303656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projecttypedef struct ocsp_basic_response_st
304656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
305656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	OCSP_RESPDATA *tbsResponseData;
306656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	X509_ALGOR *signatureAlgorithm;
307656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ASN1_BIT_STRING *signature;
308656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	STACK_OF(X509) *certs;
309656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	} OCSP_BASICRESP;
310656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
311656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/*
312656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *   CRLReason ::= ENUMERATED {
313656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *        unspecified             (0),
314656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *        keyCompromise           (1),
315656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *        cACompromise            (2),
316656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *        affiliationChanged      (3),
317656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *        superseded              (4),
318656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *        cessationOfOperation    (5),
319656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *        certificateHold         (6),
320656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *        removeFromCRL           (8) }
321656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project */
322656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_REVOKED_STATUS_NOSTATUS               -1
323656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_REVOKED_STATUS_UNSPECIFIED             0
324656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_REVOKED_STATUS_KEYCOMPROMISE           1
325656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_REVOKED_STATUS_CACOMPROMISE            2
326656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_REVOKED_STATUS_AFFILIATIONCHANGED      3
327656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_REVOKED_STATUS_SUPERSEDED              4
328656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_REVOKED_STATUS_CESSATIONOFOPERATION    5
329656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_REVOKED_STATUS_CERTIFICATEHOLD         6
330656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_REVOKED_STATUS_REMOVEFROMCRL           8
331656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
332656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* CrlID ::= SEQUENCE {
333656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *     crlUrl               [0]     EXPLICIT IA5String OPTIONAL,
334656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *     crlNum               [1]     EXPLICIT INTEGER OPTIONAL,
335656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *     crlTime              [2]     EXPLICIT GeneralizedTime OPTIONAL }
336656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project */
337656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projecttypedef struct ocsp_crl_id_st
338656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project        {
339656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ASN1_IA5STRING *crlUrl;
340656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ASN1_INTEGER *crlNum;
341656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ASN1_GENERALIZEDTIME *crlTime;
342656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project        } OCSP_CRLID;
343656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
344656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* ServiceLocator ::= SEQUENCE {
345656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *      issuer    Name,
346656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *      locator   AuthorityInfoAccessSyntax OPTIONAL }
347656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project */
348656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projecttypedef struct ocsp_service_locator_st
349656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project        {
350656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	X509_NAME* issuer;
351656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	STACK_OF(ACCESS_DESCRIPTION) *locator;
352656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project        } OCSP_SERVICELOC;
353656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
354656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define PEM_STRING_OCSP_REQUEST	"OCSP REQUEST"
355656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define PEM_STRING_OCSP_RESPONSE "OCSP RESPONSE"
356656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
357656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define d2i_OCSP_REQUEST_bio(bp,p) ASN1_d2i_bio_of(OCSP_REQUEST,OCSP_REQUEST_new,d2i_OCSP_REQUEST,bp,p)
358656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
359656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define d2i_OCSP_RESPONSE_bio(bp,p) ASN1_d2i_bio_of(OCSP_RESPONSE,OCSP_RESPONSE_new,d2i_OCSP_RESPONSE,bp,p)
360656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
361656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define	PEM_read_bio_OCSP_REQUEST(bp,x,cb) (OCSP_REQUEST *)PEM_ASN1_read_bio( \
362656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project     (char *(*)())d2i_OCSP_REQUEST,PEM_STRING_OCSP_REQUEST,bp,(char **)x,cb,NULL)
363656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
364656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define	PEM_read_bio_OCSP_RESPONSE(bp,x,cb)(OCSP_RESPONSE *)PEM_ASN1_read_bio(\
365656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project     (char *(*)())d2i_OCSP_RESPONSE,PEM_STRING_OCSP_RESPONSE,bp,(char **)x,cb,NULL)
366656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
367656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define PEM_write_bio_OCSP_REQUEST(bp,o) \
368656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project    PEM_ASN1_write_bio((int (*)())i2d_OCSP_REQUEST,PEM_STRING_OCSP_REQUEST,\
369656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			bp,(char *)o, NULL,NULL,0,NULL,NULL)
370656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
371656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define PEM_write_bio_OCSP_RESPONSE(bp,o) \
372656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project    PEM_ASN1_write_bio((int (*)())i2d_OCSP_RESPONSE,PEM_STRING_OCSP_RESPONSE,\
373656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			bp,(char *)o, NULL,NULL,0,NULL,NULL)
374656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
375656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define i2d_OCSP_RESPONSE_bio(bp,o) ASN1_i2d_bio_of(OCSP_RESPONSE,i2d_OCSP_RESPONSE,bp,o)
376656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
377656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define i2d_OCSP_REQUEST_bio(bp,o) ASN1_i2d_bio_of(OCSP_REQUEST,i2d_OCSP_REQUEST,bp,o)
378656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
379656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_REQUEST_sign(o,pkey,md) \
380656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ASN1_item_sign(ASN1_ITEM_rptr(OCSP_REQINFO),\
381656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		o->optionalSignature->signatureAlgorithm,NULL,\
382656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	        o->optionalSignature->signature,o->tbsRequest,pkey,md)
383656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
384656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_BASICRESP_sign(o,pkey,md,d) \
385656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ASN1_item_sign(ASN1_ITEM_rptr(OCSP_RESPDATA),o->signatureAlgorithm,NULL,\
386656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		o->signature,o->tbsResponseData,pkey,md)
387656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
388656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_REQUEST_verify(a,r) ASN1_item_verify(ASN1_ITEM_rptr(OCSP_REQINFO),\
389656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project        a->optionalSignature->signatureAlgorithm,\
390656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	a->optionalSignature->signature,a->tbsRequest,r)
391656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
392656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_BASICRESP_verify(a,r,d) ASN1_item_verify(ASN1_ITEM_rptr(OCSP_RESPDATA),\
393656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	a->signatureAlgorithm,a->signature,a->tbsResponseData,r)
394656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
395656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define ASN1_BIT_STRING_digest(data,type,md,len) \
396656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ASN1_item_digest(ASN1_ITEM_rptr(ASN1_BIT_STRING),type,data,md,len)
397656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
398656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_CERTSTATUS_dup(cs)\
399656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project                (OCSP_CERTSTATUS*)ASN1_dup((int(*)())i2d_OCSP_CERTSTATUS,\
400656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		(char *(*)())d2i_OCSP_CERTSTATUS,(char *)(cs))
401656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
402221304ee937bc0910948a8be1320cb8cc4eb6d36Brian CarlstromOCSP_CERTID *OCSP_CERTID_dup(OCSP_CERTID *id);
403221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom
404656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectOCSP_RESPONSE *OCSP_sendreq_bio(BIO *b, char *path, OCSP_REQUEST *req);
405656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectOCSP_REQ_CTX *OCSP_sendreq_new(BIO *io, char *path, OCSP_REQUEST *req,
406656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project								int maxline);
407656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint OCSP_sendreq_nbio(OCSP_RESPONSE **presp, OCSP_REQ_CTX *rctx);
408656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectvoid OCSP_REQ_CTX_free(OCSP_REQ_CTX *rctx);
409221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstromint OCSP_REQ_CTX_set1_req(OCSP_REQ_CTX *rctx, OCSP_REQUEST *req);
410221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstromint OCSP_REQ_CTX_add1_header(OCSP_REQ_CTX *rctx,
411221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom		const char *name, const char *value);
412656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
413656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectOCSP_CERTID *OCSP_cert_to_id(const EVP_MD *dgst, X509 *subject, X509 *issuer);
414656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
415656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectOCSP_CERTID *OCSP_cert_id_new(const EVP_MD *dgst,
416656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			      X509_NAME *issuerName,
417656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			      ASN1_BIT_STRING* issuerKey,
418656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			      ASN1_INTEGER *serialNumber);
419656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
420656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectOCSP_ONEREQ *OCSP_request_add0_id(OCSP_REQUEST *req, OCSP_CERTID *cid);
421656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
422656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint OCSP_request_add1_nonce(OCSP_REQUEST *req, unsigned char *val, int len);
423656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint OCSP_basic_add1_nonce(OCSP_BASICRESP *resp, unsigned char *val, int len);
424656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint OCSP_check_nonce(OCSP_REQUEST *req, OCSP_BASICRESP *bs);
425656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint OCSP_copy_nonce(OCSP_BASICRESP *resp, OCSP_REQUEST *req);
426656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
427656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint OCSP_request_set1_name(OCSP_REQUEST *req, X509_NAME *nm);
428656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint OCSP_request_add1_cert(OCSP_REQUEST *req, X509 *cert);
429656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
430656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint OCSP_request_sign(OCSP_REQUEST   *req,
431656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		      X509           *signer,
432656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		      EVP_PKEY       *key,
433656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		      const EVP_MD   *dgst,
434656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		      STACK_OF(X509) *certs,
435656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		      unsigned long flags);
436656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
437656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint OCSP_response_status(OCSP_RESPONSE *resp);
438656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectOCSP_BASICRESP *OCSP_response_get1_basic(OCSP_RESPONSE *resp);
439656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
440656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint OCSP_resp_count(OCSP_BASICRESP *bs);
441656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectOCSP_SINGLERESP *OCSP_resp_get0(OCSP_BASICRESP *bs, int idx);
442656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint OCSP_resp_find(OCSP_BASICRESP *bs, OCSP_CERTID *id, int last);
443656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint OCSP_single_get0_status(OCSP_SINGLERESP *single, int *reason,
444656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				ASN1_GENERALIZEDTIME **revtime,
445656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				ASN1_GENERALIZEDTIME **thisupd,
446656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				ASN1_GENERALIZEDTIME **nextupd);
447656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint OCSP_resp_find_status(OCSP_BASICRESP *bs, OCSP_CERTID *id, int *status,
448656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				int *reason,
449656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				ASN1_GENERALIZEDTIME **revtime,
450656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				ASN1_GENERALIZEDTIME **thisupd,
451656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				ASN1_GENERALIZEDTIME **nextupd);
452656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint OCSP_check_validity(ASN1_GENERALIZEDTIME *thisupd,
453656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			ASN1_GENERALIZEDTIME *nextupd,
454656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			long sec, long maxsec);
455656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
456656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint OCSP_request_verify(OCSP_REQUEST *req, STACK_OF(X509) *certs, X509_STORE *store, unsigned long flags);
457656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
458656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint OCSP_parse_url(char *url, char **phost, char **pport, char **ppath, int *pssl);
459656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
460656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint OCSP_id_issuer_cmp(OCSP_CERTID *a, OCSP_CERTID *b);
461656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint OCSP_id_cmp(OCSP_CERTID *a, OCSP_CERTID *b);
462656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
463656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint OCSP_request_onereq_count(OCSP_REQUEST *req);
464656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectOCSP_ONEREQ *OCSP_request_onereq_get0(OCSP_REQUEST *req, int i);
465656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectOCSP_CERTID *OCSP_onereq_get0_id(OCSP_ONEREQ *one);
466656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint OCSP_id_get0_info(ASN1_OCTET_STRING **piNameHash, ASN1_OBJECT **pmd,
467656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			ASN1_OCTET_STRING **pikeyHash,
468656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			ASN1_INTEGER **pserial, OCSP_CERTID *cid);
469656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint OCSP_request_is_signed(OCSP_REQUEST *req);
470656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectOCSP_RESPONSE *OCSP_response_create(int status, OCSP_BASICRESP *bs);
471656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectOCSP_SINGLERESP *OCSP_basic_add1_status(OCSP_BASICRESP *rsp,
472656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project						OCSP_CERTID *cid,
473656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project						int status, int reason,
474656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project						ASN1_TIME *revtime,
475656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project					ASN1_TIME *thisupd, ASN1_TIME *nextupd);
476656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint OCSP_basic_add1_cert(OCSP_BASICRESP *resp, X509 *cert);
477656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint OCSP_basic_sign(OCSP_BASICRESP *brsp,
478656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			X509 *signer, EVP_PKEY *key, const EVP_MD *dgst,
479656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			STACK_OF(X509) *certs, unsigned long flags);
480656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
481656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectX509_EXTENSION *OCSP_crlID_new(char *url, long *n, char *tim);
482656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
483656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectX509_EXTENSION *OCSP_accept_responses_new(char **oids);
484656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
485656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectX509_EXTENSION *OCSP_archive_cutoff_new(char* tim);
486656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
487656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectX509_EXTENSION *OCSP_url_svcloc_new(X509_NAME* issuer, char **urls);
488656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
489656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint OCSP_REQUEST_get_ext_count(OCSP_REQUEST *x);
490656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint OCSP_REQUEST_get_ext_by_NID(OCSP_REQUEST *x, int nid, int lastpos);
491656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint OCSP_REQUEST_get_ext_by_OBJ(OCSP_REQUEST *x, ASN1_OBJECT *obj, int lastpos);
492656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint OCSP_REQUEST_get_ext_by_critical(OCSP_REQUEST *x, int crit, int lastpos);
493656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectX509_EXTENSION *OCSP_REQUEST_get_ext(OCSP_REQUEST *x, int loc);
494656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectX509_EXTENSION *OCSP_REQUEST_delete_ext(OCSP_REQUEST *x, int loc);
495656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectvoid *OCSP_REQUEST_get1_ext_d2i(OCSP_REQUEST *x, int nid, int *crit, int *idx);
496656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint OCSP_REQUEST_add1_ext_i2d(OCSP_REQUEST *x, int nid, void *value, int crit,
497656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project							unsigned long flags);
498656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint OCSP_REQUEST_add_ext(OCSP_REQUEST *x, X509_EXTENSION *ex, int loc);
499656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
500656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint OCSP_ONEREQ_get_ext_count(OCSP_ONEREQ *x);
501656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint OCSP_ONEREQ_get_ext_by_NID(OCSP_ONEREQ *x, int nid, int lastpos);
502656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint OCSP_ONEREQ_get_ext_by_OBJ(OCSP_ONEREQ *x, ASN1_OBJECT *obj, int lastpos);
503656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint OCSP_ONEREQ_get_ext_by_critical(OCSP_ONEREQ *x, int crit, int lastpos);
504656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectX509_EXTENSION *OCSP_ONEREQ_get_ext(OCSP_ONEREQ *x, int loc);
505656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectX509_EXTENSION *OCSP_ONEREQ_delete_ext(OCSP_ONEREQ *x, int loc);
506656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectvoid *OCSP_ONEREQ_get1_ext_d2i(OCSP_ONEREQ *x, int nid, int *crit, int *idx);
507656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint OCSP_ONEREQ_add1_ext_i2d(OCSP_ONEREQ *x, int nid, void *value, int crit,
508656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project							unsigned long flags);
509656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint OCSP_ONEREQ_add_ext(OCSP_ONEREQ *x, X509_EXTENSION *ex, int loc);
510656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
511656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint OCSP_BASICRESP_get_ext_count(OCSP_BASICRESP *x);
512656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint OCSP_BASICRESP_get_ext_by_NID(OCSP_BASICRESP *x, int nid, int lastpos);
513656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint OCSP_BASICRESP_get_ext_by_OBJ(OCSP_BASICRESP *x, ASN1_OBJECT *obj, int lastpos);
514656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint OCSP_BASICRESP_get_ext_by_critical(OCSP_BASICRESP *x, int crit, int lastpos);
515656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectX509_EXTENSION *OCSP_BASICRESP_get_ext(OCSP_BASICRESP *x, int loc);
516656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectX509_EXTENSION *OCSP_BASICRESP_delete_ext(OCSP_BASICRESP *x, int loc);
517656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectvoid *OCSP_BASICRESP_get1_ext_d2i(OCSP_BASICRESP *x, int nid, int *crit, int *idx);
518656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint OCSP_BASICRESP_add1_ext_i2d(OCSP_BASICRESP *x, int nid, void *value, int crit,
519656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project							unsigned long flags);
520656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint OCSP_BASICRESP_add_ext(OCSP_BASICRESP *x, X509_EXTENSION *ex, int loc);
521656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
522656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint OCSP_SINGLERESP_get_ext_count(OCSP_SINGLERESP *x);
523656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint OCSP_SINGLERESP_get_ext_by_NID(OCSP_SINGLERESP *x, int nid, int lastpos);
524656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint OCSP_SINGLERESP_get_ext_by_OBJ(OCSP_SINGLERESP *x, ASN1_OBJECT *obj, int lastpos);
525656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint OCSP_SINGLERESP_get_ext_by_critical(OCSP_SINGLERESP *x, int crit, int lastpos);
526656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectX509_EXTENSION *OCSP_SINGLERESP_get_ext(OCSP_SINGLERESP *x, int loc);
527656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectX509_EXTENSION *OCSP_SINGLERESP_delete_ext(OCSP_SINGLERESP *x, int loc);
528656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectvoid *OCSP_SINGLERESP_get1_ext_d2i(OCSP_SINGLERESP *x, int nid, int *crit, int *idx);
529656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint OCSP_SINGLERESP_add1_ext_i2d(OCSP_SINGLERESP *x, int nid, void *value, int crit,
530656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project							unsigned long flags);
531656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint OCSP_SINGLERESP_add_ext(OCSP_SINGLERESP *x, X509_EXTENSION *ex, int loc);
532656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
533656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectDECLARE_ASN1_FUNCTIONS(OCSP_SINGLERESP)
534656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectDECLARE_ASN1_FUNCTIONS(OCSP_CERTSTATUS)
535656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectDECLARE_ASN1_FUNCTIONS(OCSP_REVOKEDINFO)
536656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectDECLARE_ASN1_FUNCTIONS(OCSP_BASICRESP)
537656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectDECLARE_ASN1_FUNCTIONS(OCSP_RESPDATA)
538656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectDECLARE_ASN1_FUNCTIONS(OCSP_RESPID)
539656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectDECLARE_ASN1_FUNCTIONS(OCSP_RESPONSE)
540656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectDECLARE_ASN1_FUNCTIONS(OCSP_RESPBYTES)
541656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectDECLARE_ASN1_FUNCTIONS(OCSP_ONEREQ)
542656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectDECLARE_ASN1_FUNCTIONS(OCSP_CERTID)
543656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectDECLARE_ASN1_FUNCTIONS(OCSP_REQUEST)
544656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectDECLARE_ASN1_FUNCTIONS(OCSP_SIGNATURE)
545656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectDECLARE_ASN1_FUNCTIONS(OCSP_REQINFO)
546656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectDECLARE_ASN1_FUNCTIONS(OCSP_CRLID)
547656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectDECLARE_ASN1_FUNCTIONS(OCSP_SERVICELOC)
548656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
549221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstromconst char *OCSP_response_status_str(long s);
550221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstromconst char *OCSP_cert_status_str(long s);
551221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstromconst char *OCSP_crl_reason_str(long s);
552656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
553656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint OCSP_REQUEST_print(BIO *bp, OCSP_REQUEST* a, unsigned long flags);
554656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint OCSP_RESPONSE_print(BIO *bp, OCSP_RESPONSE* o, unsigned long flags);
555656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
556656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint OCSP_basic_verify(OCSP_BASICRESP *bs, STACK_OF(X509) *certs,
557656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				X509_STORE *st, unsigned long flags);
558656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
559656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* BEGIN ERROR CODES */
560656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* The following lines are auto generated by the script mkerr.pl. Any changes
561656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * made after this point may be overwritten when the script is next run.
562656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project */
563656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectvoid ERR_load_OCSP_strings(void);
564656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
565656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Error codes for the OCSP functions. */
566656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
567656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Function codes. */
568656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_F_ASN1_STRING_ENCODE			 100
569656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_F_D2I_OCSP_NONCE				 102
570656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_F_OCSP_BASIC_ADD1_STATUS			 103
571656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_F_OCSP_BASIC_SIGN				 104
572656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_F_OCSP_BASIC_VERIFY			 105
573656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_F_OCSP_CERT_ID_NEW				 101
574656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_F_OCSP_CHECK_DELEGATED			 106
575656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_F_OCSP_CHECK_IDS				 107
576656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_F_OCSP_CHECK_ISSUER			 108
577656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_F_OCSP_CHECK_VALIDITY			 115
578656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_F_OCSP_MATCH_ISSUERID			 109
579656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_F_OCSP_PARSE_URL				 114
580656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_F_OCSP_REQUEST_SIGN			 110
581656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_F_OCSP_REQUEST_VERIFY			 116
582656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_F_OCSP_RESPONSE_GET1_BASIC			 111
583656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_F_OCSP_SENDREQ_BIO				 112
584221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom#define OCSP_F_OCSP_SENDREQ_NBIO			 117
585221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom#define OCSP_F_PARSE_HTTP_LINE1				 118
586656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_F_REQUEST_VERIFY				 113
587656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
588656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Reason codes. */
589656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_R_BAD_DATA					 100
590656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_R_CERTIFICATE_VERIFY_ERROR			 101
591656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_R_DIGEST_ERR				 102
592656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_R_ERROR_IN_NEXTUPDATE_FIELD		 122
593656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_R_ERROR_IN_THISUPDATE_FIELD		 123
594656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_R_ERROR_PARSING_URL			 121
595656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_R_MISSING_OCSPSIGNING_USAGE		 103
596656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_R_NEXTUPDATE_BEFORE_THISUPDATE		 124
597656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_R_NOT_BASIC_RESPONSE			 104
598656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_R_NO_CERTIFICATES_IN_CHAIN			 105
599656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_R_NO_CONTENT				 106
600656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_R_NO_PUBLIC_KEY				 107
601656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_R_NO_RESPONSE_DATA				 108
602656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_R_NO_REVOKED_TIME				 109
603656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_R_PRIVATE_KEY_DOES_NOT_MATCH_CERTIFICATE	 110
604656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_R_REQUEST_NOT_SIGNED			 128
605656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_R_RESPONSE_CONTAINS_NO_REVOCATION_DATA	 111
606656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_R_ROOT_CA_NOT_TRUSTED			 112
607656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_R_SERVER_READ_ERROR			 113
608656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_R_SERVER_RESPONSE_ERROR			 114
609656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_R_SERVER_RESPONSE_PARSE_ERROR		 115
610656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_R_SERVER_WRITE_ERROR			 116
611656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_R_SIGNATURE_FAILURE			 117
612656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_R_SIGNER_CERTIFICATE_NOT_FOUND		 118
613656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_R_STATUS_EXPIRED				 125
614656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_R_STATUS_NOT_YET_VALID			 126
615656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_R_STATUS_TOO_OLD				 127
616656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_R_UNKNOWN_MESSAGE_DIGEST			 119
617656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_R_UNKNOWN_NID				 120
618656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_R_UNSUPPORTED_REQUESTORNAME_TYPE		 129
619656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
620656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifdef  __cplusplus
621656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project}
622656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
623656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
624