-- From rfc2560
-- $Id$
OCSP DEFINITIONS EXPLICIT TAGS::=

BEGIN

IMPORTS
	Certificate, AlgorithmIdentifier, CRLReason,
	Name, GeneralName, CertificateSerialNumber, Extensions
	FROM rfc2459;

OCSPVersion  ::=  INTEGER {  ocsp-v1(0) }

OCSPCertStatus ::= CHOICE {
    good                [0]     IMPLICIT NULL,
    revoked             [1]     IMPLICIT -- OCSPRevokedInfo -- SEQUENCE {
    			revocationTime		GeneralizedTime,
			revocationReason[0]	EXPLICIT CRLReason OPTIONAL
    },
    unknown             [2]     IMPLICIT NULL }

OCSPCertID ::= SEQUENCE {
    hashAlgorithm            AlgorithmIdentifier,
    issuerNameHash     OCTET STRING, -- Hash of Issuer's DN
    issuerKeyHash      OCTET STRING, -- Hash of Issuers public key
    serialNumber       CertificateSerialNumber }

OCSPSingleResponse ::= SEQUENCE {
   certID                       OCSPCertID,
   certStatus                   OCSPCertStatus,
   thisUpdate                   GeneralizedTime,
   nextUpdate           [0]     EXPLICIT GeneralizedTime OPTIONAL,
   singleExtensions     [1]     EXPLICIT Extensions OPTIONAL }

OCSPInnerRequest ::=     SEQUENCE {
    reqCert                    OCSPCertID,
    singleRequestExtensions    [0] EXPLICIT Extensions OPTIONAL }

OCSPTBSRequest      ::=     SEQUENCE {
    version             [0] EXPLICIT OCSPVersion -- DEFAULT v1 -- OPTIONAL,
    requestorName       [1] EXPLICIT GeneralName OPTIONAL,
    requestList             SEQUENCE OF OCSPInnerRequest,
    requestExtensions   [2] EXPLICIT Extensions OPTIONAL }

OCSPSignature       ::=     SEQUENCE {
    signatureAlgorithm   AlgorithmIdentifier,
    signature            BIT STRING,
    certs                [0] EXPLICIT SEQUENCE OF Certificate OPTIONAL }

OCSPRequest     ::=     SEQUENCE {
    tbsRequest                  OCSPTBSRequest,
    optionalSignature   [0]     EXPLICIT OCSPSignature OPTIONAL }

OCSPResponseBytes ::=       SEQUENCE {
    responseType   OBJECT IDENTIFIER,
    response       OCTET STRING }

OCSPResponseStatus ::= ENUMERATED {
    successful            (0),      --Response has valid confirmations
    malformedRequest      (1),      --Illegal confirmation request
    internalError         (2),      --Internal error in issuer
    tryLater              (3),      --Try again later
                                    --(4) is not used
    sigRequired           (5),      --Must sign the request
    unauthorized          (6)       --Request unauthorized
}

OCSPResponse ::= SEQUENCE {
   responseStatus         OCSPResponseStatus,
   responseBytes          [0] EXPLICIT OCSPResponseBytes OPTIONAL }

OCSPKeyHash ::= OCTET STRING --SHA-1 hash of responder's public key
                         --(excluding the tag and length fields)

OCSPResponderID ::= CHOICE {
   byName   [1] Name,
   byKey    [2] OCSPKeyHash }

OCSPResponseData ::= SEQUENCE {
   version              [0] EXPLICIT OCSPVersion -- DEFAULT v1 -- OPTIONAL,
   responderID              OCSPResponderID,
   producedAt               GeneralizedTime,
   responses                SEQUENCE OF OCSPSingleResponse,
   responseExtensions   [1] EXPLICIT Extensions OPTIONAL }

OCSPBasicOCSPResponse       ::= SEQUENCE {
   tbsResponseData      OCSPResponseData,
   signatureAlgorithm   AlgorithmIdentifier,
   signature            BIT STRING,
   certs                [0] EXPLICIT SEQUENCE OF Certificate OPTIONAL }

-- ArchiveCutoff ::= GeneralizedTime

-- AcceptableResponses ::= SEQUENCE OF OBJECT IDENTIFIER

-- Object Identifiers

id-pkix-ocsp         OBJECT IDENTIFIER ::= {
 	 iso(1) identified-organization(3) dod(6) internet(1)
	 security(5) mechanisms(5) pkix(7) pkix-ad(48) 1
}

id-pkix-ocsp-basic		OBJECT IDENTIFIER ::= { id-pkix-ocsp 1 }
id-pkix-ocsp-nonce		OBJECT IDENTIFIER ::= { id-pkix-ocsp 2 }
-- id-pkix-ocsp-crl             OBJECT IDENTIFIER ::= { id-pkix-ocsp 3 }
-- id-pkix-ocsp-response        OBJECT IDENTIFIER ::= { id-pkix-ocsp 4 }
-- id-pkix-ocsp-nocheck         OBJECT IDENTIFIER ::= { id-pkix-ocsp 5 }
-- id-pkix-ocsp-archive-cutoff  OBJECT IDENTIFIER ::= { id-pkix-ocsp 6 }
-- id-pkix-ocsp-service-locator OBJECT IDENTIFIER ::= { id-pkix-ocsp 7 }


END

