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
9361aa94b4c4af8cbf7cb5763939b495cddcaf3c8dAndrew Hsieh#ifdef OPENSSL_SYS_WIN32
9461aa94b4c4af8cbf7cb5763939b495cddcaf3c8dAndrew Hsieh  /* Under Win32 these are defined in wincrypt.h */
9561aa94b4c4af8cbf7cb5763939b495cddcaf3c8dAndrew Hsieh#undef OCSP_REQUEST
9661aa94b4c4af8cbf7cb5763939b495cddcaf3c8dAndrew Hsieh#undef X509_NAME
9761aa94b4c4af8cbf7cb5763939b495cddcaf3c8dAndrew Hsieh#undef OCSP_RESPONSE
9861aa94b4c4af8cbf7cb5763939b495cddcaf3c8dAndrew Hsieh#endif
9961aa94b4c4af8cbf7cb5763939b495cddcaf3c8dAndrew Hsieh
100656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/*   CertID ::= SEQUENCE {
101656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *       hashAlgorithm            AlgorithmIdentifier,
102656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *       issuerNameHash     OCTET STRING, -- Hash of Issuer's DN
103656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *       issuerKeyHash      OCTET STRING, -- Hash of Issuers public key (excluding the tag & length fields)
104656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *       serialNumber       CertificateSerialNumber }
105656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project */
106656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projecttypedef struct ocsp_cert_id_st
107656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
108656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	X509_ALGOR *hashAlgorithm;
109656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ASN1_OCTET_STRING *issuerNameHash;
110656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ASN1_OCTET_STRING *issuerKeyHash;
111656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ASN1_INTEGER *serialNumber;
112656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	} OCSP_CERTID;
113656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
114656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectDECLARE_STACK_OF(OCSP_CERTID)
115656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
116656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/*   Request ::=     SEQUENCE {
117656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *       reqCert                    CertID,
118656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *       singleRequestExtensions    [0] EXPLICIT Extensions OPTIONAL }
119656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project */
120656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projecttypedef struct ocsp_one_request_st
121656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
122656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	OCSP_CERTID *reqCert;
123656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	STACK_OF(X509_EXTENSION) *singleRequestExtensions;
124656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	} OCSP_ONEREQ;
125656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
126656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectDECLARE_STACK_OF(OCSP_ONEREQ)
127656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectDECLARE_ASN1_SET_OF(OCSP_ONEREQ)
128656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
129656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
130656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/*   TBSRequest      ::=     SEQUENCE {
131656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *       version             [0] EXPLICIT Version DEFAULT v1,
132656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *       requestorName       [1] EXPLICIT GeneralName OPTIONAL,
133656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *       requestList             SEQUENCE OF Request,
134656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *       requestExtensions   [2] EXPLICIT Extensions OPTIONAL }
135656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project */
136656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projecttypedef struct ocsp_req_info_st
137656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
138656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ASN1_INTEGER *version;
139656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	GENERAL_NAME *requestorName;
140656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	STACK_OF(OCSP_ONEREQ) *requestList;
141656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	STACK_OF(X509_EXTENSION) *requestExtensions;
142656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	} OCSP_REQINFO;
143656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
144656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/*   Signature       ::=     SEQUENCE {
145656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *       signatureAlgorithm   AlgorithmIdentifier,
146656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *       signature            BIT STRING,
147656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *       certs                [0] EXPLICIT SEQUENCE OF Certificate OPTIONAL }
148656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project */
149656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projecttypedef struct ocsp_signature_st
150656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
151656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	X509_ALGOR *signatureAlgorithm;
152656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ASN1_BIT_STRING *signature;
153656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	STACK_OF(X509) *certs;
154656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	} OCSP_SIGNATURE;
155656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
156656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/*   OCSPRequest     ::=     SEQUENCE {
157656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *       tbsRequest                  TBSRequest,
158656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *       optionalSignature   [0]     EXPLICIT Signature OPTIONAL }
159656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project */
160656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projecttypedef struct ocsp_request_st
161656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
162656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	OCSP_REQINFO *tbsRequest;
163656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	OCSP_SIGNATURE *optionalSignature; /* OPTIONAL */
164656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	} OCSP_REQUEST;
165656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
166656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/*   OCSPResponseStatus ::= ENUMERATED {
167656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *       successful            (0),      --Response has valid confirmations
168656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *       malformedRequest      (1),      --Illegal confirmation request
169656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *       internalError         (2),      --Internal error in issuer
170656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *       tryLater              (3),      --Try again later
171656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *                                       --(4) is not used
172656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *       sigRequired           (5),      --Must sign the request
173656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *       unauthorized          (6)       --Request unauthorized
174656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *   }
175656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project */
176656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_RESPONSE_STATUS_SUCCESSFUL          0
177656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_RESPONSE_STATUS_MALFORMEDREQUEST     1
178656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_RESPONSE_STATUS_INTERNALERROR        2
179656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_RESPONSE_STATUS_TRYLATER             3
180656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_RESPONSE_STATUS_SIGREQUIRED          5
181656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_RESPONSE_STATUS_UNAUTHORIZED         6
182656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
183656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/*   ResponseBytes ::=       SEQUENCE {
184656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *       responseType   OBJECT IDENTIFIER,
185656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *       response       OCTET STRING }
186656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project */
187656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projecttypedef struct ocsp_resp_bytes_st
188656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
189656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ASN1_OBJECT *responseType;
190656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ASN1_OCTET_STRING *response;
191656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	} OCSP_RESPBYTES;
192656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
193656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/*   OCSPResponse ::= SEQUENCE {
194656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *      responseStatus         OCSPResponseStatus,
195656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *      responseBytes          [0] EXPLICIT ResponseBytes OPTIONAL }
196656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project */
197656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectstruct ocsp_response_st
198656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
199656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ASN1_ENUMERATED *responseStatus;
200656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	OCSP_RESPBYTES  *responseBytes;
201656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	};
202656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
203656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/*   ResponderID ::= CHOICE {
204656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *      byName   [1] Name,
205656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *      byKey    [2] KeyHash }
206656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project */
207656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define V_OCSP_RESPID_NAME 0
208656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define V_OCSP_RESPID_KEY  1
209656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectstruct ocsp_responder_id_st
210656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
211656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	int type;
212656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	union   {
213656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		X509_NAME* byName;
214656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project        	ASN1_OCTET_STRING *byKey;
215656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		} value;
216656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	};
217656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
218656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectDECLARE_STACK_OF(OCSP_RESPID)
219656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectDECLARE_ASN1_FUNCTIONS(OCSP_RESPID)
220656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
221656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/*   KeyHash ::= OCTET STRING --SHA-1 hash of responder's public key
222656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *                            --(excluding the tag and length fields)
223656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project */
224656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
225656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/*   RevokedInfo ::= SEQUENCE {
226656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *       revocationTime              GeneralizedTime,
227656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *       revocationReason    [0]     EXPLICIT CRLReason OPTIONAL }
228656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project */
229656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projecttypedef struct ocsp_revoked_info_st
230656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
231656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ASN1_GENERALIZEDTIME *revocationTime;
232656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ASN1_ENUMERATED *revocationReason;
233656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	} OCSP_REVOKEDINFO;
234656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
235656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/*   CertStatus ::= CHOICE {
236656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *       good                [0]     IMPLICIT NULL,
237656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *       revoked             [1]     IMPLICIT RevokedInfo,
238656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *       unknown             [2]     IMPLICIT UnknownInfo }
239656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project */
240656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define V_OCSP_CERTSTATUS_GOOD    0
241656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define V_OCSP_CERTSTATUS_REVOKED 1
242656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define V_OCSP_CERTSTATUS_UNKNOWN 2
243656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projecttypedef struct ocsp_cert_status_st
244656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
245656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	int type;
246656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	union	{
247656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		ASN1_NULL *good;
248656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		OCSP_REVOKEDINFO *revoked;
249656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		ASN1_NULL *unknown;
250656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		} value;
251656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	} OCSP_CERTSTATUS;
252656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
253656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/*   SingleResponse ::= SEQUENCE {
254656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *      certID                       CertID,
255656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *      certStatus                   CertStatus,
256656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *      thisUpdate                   GeneralizedTime,
257656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *      nextUpdate           [0]     EXPLICIT GeneralizedTime OPTIONAL,
258656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *      singleExtensions     [1]     EXPLICIT Extensions OPTIONAL }
259656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project */
260656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projecttypedef struct ocsp_single_response_st
261656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
262656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	OCSP_CERTID *certId;
263656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	OCSP_CERTSTATUS *certStatus;
264656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ASN1_GENERALIZEDTIME *thisUpdate;
265656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ASN1_GENERALIZEDTIME *nextUpdate;
266656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	STACK_OF(X509_EXTENSION) *singleExtensions;
267656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	} OCSP_SINGLERESP;
268656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
269656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectDECLARE_STACK_OF(OCSP_SINGLERESP)
270656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectDECLARE_ASN1_SET_OF(OCSP_SINGLERESP)
271656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
272656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/*   ResponseData ::= SEQUENCE {
273656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *      version              [0] EXPLICIT Version DEFAULT v1,
274656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *      responderID              ResponderID,
275656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *      producedAt               GeneralizedTime,
276656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *      responses                SEQUENCE OF SingleResponse,
277656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *      responseExtensions   [1] EXPLICIT Extensions OPTIONAL }
278656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project */
279656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projecttypedef struct ocsp_response_data_st
280656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
281656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ASN1_INTEGER *version;
282656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	OCSP_RESPID  *responderId;
283656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ASN1_GENERALIZEDTIME *producedAt;
284656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	STACK_OF(OCSP_SINGLERESP) *responses;
285656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	STACK_OF(X509_EXTENSION) *responseExtensions;
286656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	} OCSP_RESPDATA;
287656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
288656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/*   BasicOCSPResponse       ::= SEQUENCE {
289656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *      tbsResponseData      ResponseData,
290656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *      signatureAlgorithm   AlgorithmIdentifier,
291656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *      signature            BIT STRING,
292656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *      certs                [0] EXPLICIT SEQUENCE OF Certificate OPTIONAL }
293656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project */
294656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project  /* Note 1:
295656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project     The value for "signature" is specified in the OCSP rfc2560 as follows:
296656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project     "The value for the signature SHALL be computed on the hash of the DER
297656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project     encoding ResponseData."  This means that you must hash the DER-encoded
298656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project     tbsResponseData, and then run it through a crypto-signing function, which
299656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project     will (at least w/RSA) do a hash-'n'-private-encrypt operation.  This seems
300656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project     a bit odd, but that's the spec.  Also note that the data structures do not
301656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project     leave anywhere to independently specify the algorithm used for the initial
302656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project     hash. So, we look at the signature-specification algorithm, and try to do
303656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project     something intelligent.	-- Kathy Weinhold, CertCo */
304656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project  /* Note 2:
305656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project     It seems that the mentioned passage from RFC 2560 (section 4.2.1) is open
306656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project     for interpretation.  I've done tests against another responder, and found
307656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project     that it doesn't do the double hashing that the RFC seems to say one
308656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project     should.  Therefore, all relevant functions take a flag saying which
309656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project     variant should be used.	-- Richard Levitte, OpenSSL team and CeloCom */
310656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projecttypedef struct ocsp_basic_response_st
311656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
312656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	OCSP_RESPDATA *tbsResponseData;
313656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	X509_ALGOR *signatureAlgorithm;
314656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ASN1_BIT_STRING *signature;
315656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	STACK_OF(X509) *certs;
316656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	} OCSP_BASICRESP;
317656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
318656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/*
319656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *   CRLReason ::= ENUMERATED {
320656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *        unspecified             (0),
321656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *        keyCompromise           (1),
322656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *        cACompromise            (2),
323656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *        affiliationChanged      (3),
324656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *        superseded              (4),
325656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *        cessationOfOperation    (5),
326656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *        certificateHold         (6),
327656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *        removeFromCRL           (8) }
328656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project */
329656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_REVOKED_STATUS_NOSTATUS               -1
330656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_REVOKED_STATUS_UNSPECIFIED             0
331656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_REVOKED_STATUS_KEYCOMPROMISE           1
332656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_REVOKED_STATUS_CACOMPROMISE            2
333656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_REVOKED_STATUS_AFFILIATIONCHANGED      3
334656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_REVOKED_STATUS_SUPERSEDED              4
335656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_REVOKED_STATUS_CESSATIONOFOPERATION    5
336656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_REVOKED_STATUS_CERTIFICATEHOLD         6
337656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_REVOKED_STATUS_REMOVEFROMCRL           8
338656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
339656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* CrlID ::= SEQUENCE {
340656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *     crlUrl               [0]     EXPLICIT IA5String OPTIONAL,
341656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *     crlNum               [1]     EXPLICIT INTEGER OPTIONAL,
342656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *     crlTime              [2]     EXPLICIT GeneralizedTime OPTIONAL }
343656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project */
344656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projecttypedef struct ocsp_crl_id_st
345656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project        {
346656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ASN1_IA5STRING *crlUrl;
347656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ASN1_INTEGER *crlNum;
348656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ASN1_GENERALIZEDTIME *crlTime;
349656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project        } OCSP_CRLID;
350656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
351656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* ServiceLocator ::= SEQUENCE {
352656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *      issuer    Name,
353656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *      locator   AuthorityInfoAccessSyntax OPTIONAL }
354656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project */
355656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projecttypedef struct ocsp_service_locator_st
356656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project        {
357656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	X509_NAME* issuer;
358656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	STACK_OF(ACCESS_DESCRIPTION) *locator;
359656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project        } OCSP_SERVICELOC;
360656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
361656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define PEM_STRING_OCSP_REQUEST	"OCSP REQUEST"
362656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define PEM_STRING_OCSP_RESPONSE "OCSP RESPONSE"
363656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
364656d9c7f52f88b3a3daccafa7655dec086c4756eThe 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)
365656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
366656d9c7f52f88b3a3daccafa7655dec086c4756eThe 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)
367656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
368656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define	PEM_read_bio_OCSP_REQUEST(bp,x,cb) (OCSP_REQUEST *)PEM_ASN1_read_bio( \
369656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project     (char *(*)())d2i_OCSP_REQUEST,PEM_STRING_OCSP_REQUEST,bp,(char **)x,cb,NULL)
370656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
371656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define	PEM_read_bio_OCSP_RESPONSE(bp,x,cb)(OCSP_RESPONSE *)PEM_ASN1_read_bio(\
372656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project     (char *(*)())d2i_OCSP_RESPONSE,PEM_STRING_OCSP_RESPONSE,bp,(char **)x,cb,NULL)
373656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
374656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define PEM_write_bio_OCSP_REQUEST(bp,o) \
375656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project    PEM_ASN1_write_bio((int (*)())i2d_OCSP_REQUEST,PEM_STRING_OCSP_REQUEST,\
376656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			bp,(char *)o, NULL,NULL,0,NULL,NULL)
377656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
378656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define PEM_write_bio_OCSP_RESPONSE(bp,o) \
379656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project    PEM_ASN1_write_bio((int (*)())i2d_OCSP_RESPONSE,PEM_STRING_OCSP_RESPONSE,\
380656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			bp,(char *)o, NULL,NULL,0,NULL,NULL)
381656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
382656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define i2d_OCSP_RESPONSE_bio(bp,o) ASN1_i2d_bio_of(OCSP_RESPONSE,i2d_OCSP_RESPONSE,bp,o)
383656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
384656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define i2d_OCSP_REQUEST_bio(bp,o) ASN1_i2d_bio_of(OCSP_REQUEST,i2d_OCSP_REQUEST,bp,o)
385656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
386656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_REQUEST_sign(o,pkey,md) \
387656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ASN1_item_sign(ASN1_ITEM_rptr(OCSP_REQINFO),\
388656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		o->optionalSignature->signatureAlgorithm,NULL,\
389656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	        o->optionalSignature->signature,o->tbsRequest,pkey,md)
390656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
391656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_BASICRESP_sign(o,pkey,md,d) \
392656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ASN1_item_sign(ASN1_ITEM_rptr(OCSP_RESPDATA),o->signatureAlgorithm,NULL,\
393656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		o->signature,o->tbsResponseData,pkey,md)
394656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
395656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_REQUEST_verify(a,r) ASN1_item_verify(ASN1_ITEM_rptr(OCSP_REQINFO),\
396656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project        a->optionalSignature->signatureAlgorithm,\
397656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	a->optionalSignature->signature,a->tbsRequest,r)
398656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
399656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_BASICRESP_verify(a,r,d) ASN1_item_verify(ASN1_ITEM_rptr(OCSP_RESPDATA),\
400656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	a->signatureAlgorithm,a->signature,a->tbsResponseData,r)
401656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
402656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define ASN1_BIT_STRING_digest(data,type,md,len) \
403656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ASN1_item_digest(ASN1_ITEM_rptr(ASN1_BIT_STRING),type,data,md,len)
404656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
405656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_CERTSTATUS_dup(cs)\
406656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project                (OCSP_CERTSTATUS*)ASN1_dup((int(*)())i2d_OCSP_CERTSTATUS,\
407656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		(char *(*)())d2i_OCSP_CERTSTATUS,(char *)(cs))
408656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
409221304ee937bc0910948a8be1320cb8cc4eb6d36Brian CarlstromOCSP_CERTID *OCSP_CERTID_dup(OCSP_CERTID *id);
410221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom
411656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectOCSP_RESPONSE *OCSP_sendreq_bio(BIO *b, char *path, OCSP_REQUEST *req);
412656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectOCSP_REQ_CTX *OCSP_sendreq_new(BIO *io, char *path, OCSP_REQUEST *req,
413656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project								int maxline);
414656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint OCSP_sendreq_nbio(OCSP_RESPONSE **presp, OCSP_REQ_CTX *rctx);
415656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectvoid OCSP_REQ_CTX_free(OCSP_REQ_CTX *rctx);
416221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstromint OCSP_REQ_CTX_set1_req(OCSP_REQ_CTX *rctx, OCSP_REQUEST *req);
417221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstromint OCSP_REQ_CTX_add1_header(OCSP_REQ_CTX *rctx,
418221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom		const char *name, const char *value);
419656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
420656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectOCSP_CERTID *OCSP_cert_to_id(const EVP_MD *dgst, X509 *subject, X509 *issuer);
421656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
422656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectOCSP_CERTID *OCSP_cert_id_new(const EVP_MD *dgst,
423656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			      X509_NAME *issuerName,
424656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			      ASN1_BIT_STRING* issuerKey,
425656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			      ASN1_INTEGER *serialNumber);
426656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
427656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectOCSP_ONEREQ *OCSP_request_add0_id(OCSP_REQUEST *req, OCSP_CERTID *cid);
428656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
429656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint OCSP_request_add1_nonce(OCSP_REQUEST *req, unsigned char *val, int len);
430656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint OCSP_basic_add1_nonce(OCSP_BASICRESP *resp, unsigned char *val, int len);
431656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint OCSP_check_nonce(OCSP_REQUEST *req, OCSP_BASICRESP *bs);
432656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint OCSP_copy_nonce(OCSP_BASICRESP *resp, OCSP_REQUEST *req);
433656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
434656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint OCSP_request_set1_name(OCSP_REQUEST *req, X509_NAME *nm);
435656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint OCSP_request_add1_cert(OCSP_REQUEST *req, X509 *cert);
436656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
437656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint OCSP_request_sign(OCSP_REQUEST   *req,
438656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		      X509           *signer,
439656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		      EVP_PKEY       *key,
440656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		      const EVP_MD   *dgst,
441656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		      STACK_OF(X509) *certs,
442656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		      unsigned long flags);
443656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
444656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint OCSP_response_status(OCSP_RESPONSE *resp);
445656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectOCSP_BASICRESP *OCSP_response_get1_basic(OCSP_RESPONSE *resp);
446656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
447656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint OCSP_resp_count(OCSP_BASICRESP *bs);
448656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectOCSP_SINGLERESP *OCSP_resp_get0(OCSP_BASICRESP *bs, int idx);
449656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint OCSP_resp_find(OCSP_BASICRESP *bs, OCSP_CERTID *id, int last);
450656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint OCSP_single_get0_status(OCSP_SINGLERESP *single, int *reason,
451656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				ASN1_GENERALIZEDTIME **revtime,
452656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				ASN1_GENERALIZEDTIME **thisupd,
453656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				ASN1_GENERALIZEDTIME **nextupd);
454656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint OCSP_resp_find_status(OCSP_BASICRESP *bs, OCSP_CERTID *id, int *status,
455656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				int *reason,
456656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				ASN1_GENERALIZEDTIME **revtime,
457656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				ASN1_GENERALIZEDTIME **thisupd,
458656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				ASN1_GENERALIZEDTIME **nextupd);
459656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint OCSP_check_validity(ASN1_GENERALIZEDTIME *thisupd,
460656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			ASN1_GENERALIZEDTIME *nextupd,
461656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			long sec, long maxsec);
462656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
463656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint OCSP_request_verify(OCSP_REQUEST *req, STACK_OF(X509) *certs, X509_STORE *store, unsigned long flags);
464656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
465656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint OCSP_parse_url(char *url, char **phost, char **pport, char **ppath, int *pssl);
466656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
467656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint OCSP_id_issuer_cmp(OCSP_CERTID *a, OCSP_CERTID *b);
468656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint OCSP_id_cmp(OCSP_CERTID *a, OCSP_CERTID *b);
469656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
470656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint OCSP_request_onereq_count(OCSP_REQUEST *req);
471656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectOCSP_ONEREQ *OCSP_request_onereq_get0(OCSP_REQUEST *req, int i);
472656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectOCSP_CERTID *OCSP_onereq_get0_id(OCSP_ONEREQ *one);
473656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint OCSP_id_get0_info(ASN1_OCTET_STRING **piNameHash, ASN1_OBJECT **pmd,
474656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			ASN1_OCTET_STRING **pikeyHash,
475656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			ASN1_INTEGER **pserial, OCSP_CERTID *cid);
476656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint OCSP_request_is_signed(OCSP_REQUEST *req);
477656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectOCSP_RESPONSE *OCSP_response_create(int status, OCSP_BASICRESP *bs);
478656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectOCSP_SINGLERESP *OCSP_basic_add1_status(OCSP_BASICRESP *rsp,
479656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project						OCSP_CERTID *cid,
480656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project						int status, int reason,
481656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project						ASN1_TIME *revtime,
482656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project					ASN1_TIME *thisupd, ASN1_TIME *nextupd);
483656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint OCSP_basic_add1_cert(OCSP_BASICRESP *resp, X509 *cert);
484656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint OCSP_basic_sign(OCSP_BASICRESP *brsp,
485656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			X509 *signer, EVP_PKEY *key, const EVP_MD *dgst,
486656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			STACK_OF(X509) *certs, unsigned long flags);
487656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
488656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectX509_EXTENSION *OCSP_crlID_new(char *url, long *n, char *tim);
489656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
490656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectX509_EXTENSION *OCSP_accept_responses_new(char **oids);
491656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
492656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectX509_EXTENSION *OCSP_archive_cutoff_new(char* tim);
493656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
494656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectX509_EXTENSION *OCSP_url_svcloc_new(X509_NAME* issuer, char **urls);
495656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
496656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint OCSP_REQUEST_get_ext_count(OCSP_REQUEST *x);
497656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint OCSP_REQUEST_get_ext_by_NID(OCSP_REQUEST *x, int nid, int lastpos);
498656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint OCSP_REQUEST_get_ext_by_OBJ(OCSP_REQUEST *x, ASN1_OBJECT *obj, int lastpos);
499656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint OCSP_REQUEST_get_ext_by_critical(OCSP_REQUEST *x, int crit, int lastpos);
500656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectX509_EXTENSION *OCSP_REQUEST_get_ext(OCSP_REQUEST *x, int loc);
501656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectX509_EXTENSION *OCSP_REQUEST_delete_ext(OCSP_REQUEST *x, int loc);
502656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectvoid *OCSP_REQUEST_get1_ext_d2i(OCSP_REQUEST *x, int nid, int *crit, int *idx);
503656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint OCSP_REQUEST_add1_ext_i2d(OCSP_REQUEST *x, int nid, void *value, int crit,
504656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project							unsigned long flags);
505656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint OCSP_REQUEST_add_ext(OCSP_REQUEST *x, X509_EXTENSION *ex, int loc);
506656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
507656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint OCSP_ONEREQ_get_ext_count(OCSP_ONEREQ *x);
508656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint OCSP_ONEREQ_get_ext_by_NID(OCSP_ONEREQ *x, int nid, int lastpos);
509656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint OCSP_ONEREQ_get_ext_by_OBJ(OCSP_ONEREQ *x, ASN1_OBJECT *obj, int lastpos);
510656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint OCSP_ONEREQ_get_ext_by_critical(OCSP_ONEREQ *x, int crit, int lastpos);
511656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectX509_EXTENSION *OCSP_ONEREQ_get_ext(OCSP_ONEREQ *x, int loc);
512656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectX509_EXTENSION *OCSP_ONEREQ_delete_ext(OCSP_ONEREQ *x, int loc);
513656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectvoid *OCSP_ONEREQ_get1_ext_d2i(OCSP_ONEREQ *x, int nid, int *crit, int *idx);
514656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint OCSP_ONEREQ_add1_ext_i2d(OCSP_ONEREQ *x, int nid, void *value, int crit,
515656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project							unsigned long flags);
516656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint OCSP_ONEREQ_add_ext(OCSP_ONEREQ *x, X509_EXTENSION *ex, int loc);
517656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
518656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint OCSP_BASICRESP_get_ext_count(OCSP_BASICRESP *x);
519656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint OCSP_BASICRESP_get_ext_by_NID(OCSP_BASICRESP *x, int nid, int lastpos);
520656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint OCSP_BASICRESP_get_ext_by_OBJ(OCSP_BASICRESP *x, ASN1_OBJECT *obj, int lastpos);
521656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint OCSP_BASICRESP_get_ext_by_critical(OCSP_BASICRESP *x, int crit, int lastpos);
522656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectX509_EXTENSION *OCSP_BASICRESP_get_ext(OCSP_BASICRESP *x, int loc);
523656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectX509_EXTENSION *OCSP_BASICRESP_delete_ext(OCSP_BASICRESP *x, int loc);
524656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectvoid *OCSP_BASICRESP_get1_ext_d2i(OCSP_BASICRESP *x, int nid, int *crit, int *idx);
525656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint OCSP_BASICRESP_add1_ext_i2d(OCSP_BASICRESP *x, int nid, void *value, int crit,
526656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project							unsigned long flags);
527656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint OCSP_BASICRESP_add_ext(OCSP_BASICRESP *x, X509_EXTENSION *ex, int loc);
528656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
529656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint OCSP_SINGLERESP_get_ext_count(OCSP_SINGLERESP *x);
530656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint OCSP_SINGLERESP_get_ext_by_NID(OCSP_SINGLERESP *x, int nid, int lastpos);
531656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint OCSP_SINGLERESP_get_ext_by_OBJ(OCSP_SINGLERESP *x, ASN1_OBJECT *obj, int lastpos);
532656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint OCSP_SINGLERESP_get_ext_by_critical(OCSP_SINGLERESP *x, int crit, int lastpos);
533656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectX509_EXTENSION *OCSP_SINGLERESP_get_ext(OCSP_SINGLERESP *x, int loc);
534656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectX509_EXTENSION *OCSP_SINGLERESP_delete_ext(OCSP_SINGLERESP *x, int loc);
535656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectvoid *OCSP_SINGLERESP_get1_ext_d2i(OCSP_SINGLERESP *x, int nid, int *crit, int *idx);
536656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint OCSP_SINGLERESP_add1_ext_i2d(OCSP_SINGLERESP *x, int nid, void *value, int crit,
537656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project							unsigned long flags);
538656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint OCSP_SINGLERESP_add_ext(OCSP_SINGLERESP *x, X509_EXTENSION *ex, int loc);
539656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
540656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectDECLARE_ASN1_FUNCTIONS(OCSP_SINGLERESP)
541656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectDECLARE_ASN1_FUNCTIONS(OCSP_CERTSTATUS)
542656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectDECLARE_ASN1_FUNCTIONS(OCSP_REVOKEDINFO)
543656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectDECLARE_ASN1_FUNCTIONS(OCSP_BASICRESP)
544656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectDECLARE_ASN1_FUNCTIONS(OCSP_RESPDATA)
545656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectDECLARE_ASN1_FUNCTIONS(OCSP_RESPID)
546656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectDECLARE_ASN1_FUNCTIONS(OCSP_RESPONSE)
547656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectDECLARE_ASN1_FUNCTIONS(OCSP_RESPBYTES)
548656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectDECLARE_ASN1_FUNCTIONS(OCSP_ONEREQ)
549656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectDECLARE_ASN1_FUNCTIONS(OCSP_CERTID)
550656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectDECLARE_ASN1_FUNCTIONS(OCSP_REQUEST)
551656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectDECLARE_ASN1_FUNCTIONS(OCSP_SIGNATURE)
552656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectDECLARE_ASN1_FUNCTIONS(OCSP_REQINFO)
553656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectDECLARE_ASN1_FUNCTIONS(OCSP_CRLID)
554656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectDECLARE_ASN1_FUNCTIONS(OCSP_SERVICELOC)
555656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
556221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstromconst char *OCSP_response_status_str(long s);
557221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstromconst char *OCSP_cert_status_str(long s);
558221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstromconst char *OCSP_crl_reason_str(long s);
559656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
560656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint OCSP_REQUEST_print(BIO *bp, OCSP_REQUEST* a, unsigned long flags);
561656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint OCSP_RESPONSE_print(BIO *bp, OCSP_RESPONSE* o, unsigned long flags);
562656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
563656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint OCSP_basic_verify(OCSP_BASICRESP *bs, STACK_OF(X509) *certs,
564656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				X509_STORE *st, unsigned long flags);
565656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
566656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* BEGIN ERROR CODES */
567656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* The following lines are auto generated by the script mkerr.pl. Any changes
568656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * made after this point may be overwritten when the script is next run.
569656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project */
570656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectvoid ERR_load_OCSP_strings(void);
571656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
572656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Error codes for the OCSP functions. */
573656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
574656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Function codes. */
575656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_F_ASN1_STRING_ENCODE			 100
576656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_F_D2I_OCSP_NONCE				 102
577656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_F_OCSP_BASIC_ADD1_STATUS			 103
578656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_F_OCSP_BASIC_SIGN				 104
579656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_F_OCSP_BASIC_VERIFY			 105
580656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_F_OCSP_CERT_ID_NEW				 101
581656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_F_OCSP_CHECK_DELEGATED			 106
582656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_F_OCSP_CHECK_IDS				 107
583656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_F_OCSP_CHECK_ISSUER			 108
584656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_F_OCSP_CHECK_VALIDITY			 115
585656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_F_OCSP_MATCH_ISSUERID			 109
586656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_F_OCSP_PARSE_URL				 114
587656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_F_OCSP_REQUEST_SIGN			 110
588656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_F_OCSP_REQUEST_VERIFY			 116
589656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_F_OCSP_RESPONSE_GET1_BASIC			 111
590656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_F_OCSP_SENDREQ_BIO				 112
591221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom#define OCSP_F_OCSP_SENDREQ_NBIO			 117
592221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom#define OCSP_F_PARSE_HTTP_LINE1				 118
593656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_F_REQUEST_VERIFY				 113
594656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
595656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Reason codes. */
596656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_R_BAD_DATA					 100
597656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_R_CERTIFICATE_VERIFY_ERROR			 101
598656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_R_DIGEST_ERR				 102
599656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_R_ERROR_IN_NEXTUPDATE_FIELD		 122
600656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_R_ERROR_IN_THISUPDATE_FIELD		 123
601656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_R_ERROR_PARSING_URL			 121
602656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_R_MISSING_OCSPSIGNING_USAGE		 103
603656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_R_NEXTUPDATE_BEFORE_THISUPDATE		 124
604656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_R_NOT_BASIC_RESPONSE			 104
605656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_R_NO_CERTIFICATES_IN_CHAIN			 105
606656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_R_NO_CONTENT				 106
607656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_R_NO_PUBLIC_KEY				 107
608656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_R_NO_RESPONSE_DATA				 108
609656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_R_NO_REVOKED_TIME				 109
610656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_R_PRIVATE_KEY_DOES_NOT_MATCH_CERTIFICATE	 110
611656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_R_REQUEST_NOT_SIGNED			 128
612656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_R_RESPONSE_CONTAINS_NO_REVOCATION_DATA	 111
613656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_R_ROOT_CA_NOT_TRUSTED			 112
614656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_R_SERVER_READ_ERROR			 113
615656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_R_SERVER_RESPONSE_ERROR			 114
616656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_R_SERVER_RESPONSE_PARSE_ERROR		 115
617656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_R_SERVER_WRITE_ERROR			 116
618656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_R_SIGNATURE_FAILURE			 117
619656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_R_SIGNER_CERTIFICATE_NOT_FOUND		 118
620656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_R_STATUS_EXPIRED				 125
621656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_R_STATUS_NOT_YET_VALID			 126
622656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_R_STATUS_TOO_OLD				 127
623656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_R_UNKNOWN_MESSAGE_DIGEST			 119
624656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_R_UNKNOWN_NID				 120
625656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OCSP_R_UNSUPPORTED_REQUESTORNAME_TYPE		 129
626656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
627656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifdef  __cplusplus
628656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project}
629656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
630656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
631