1/* 2 * Copyright (c) 2004 Apple Computer, Inc. All Rights Reserved. 3 * 4 * @APPLE_LICENSE_HEADER_START@ 5 * 6 * This file contains Original Code and/or Modifications of Original Code 7 * as defined in and that are subject to the Apple Public Source License 8 * Version 2.0 (the 'License'). You may not use this file except in 9 * compliance with the License. Please obtain a copy of the License at 10 * http://www.opensource.apple.com/apsl/ and read it before using this 11 * file. 12 * 13 * The Original Code and all software distributed under the License are 14 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER 15 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, 16 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, 17 * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. 18 * Please see the License for the specific language governing rights and 19 * limitations under the License. 20 * 21 * @APPLE_LICENSE_HEADER_END@ 22 */ 23 24/* 25 * ocspRequest.h - OCSP Request class 26 */ 27 28#ifndef _OCSP_REQUEST_H_ 29#define _OCSP_REQUEST_H_ 30 31#include "TPCertInfo.h" 32#include <Security/SecAsn1Coder.h> 33#include <Security/ocspTemplates.h> 34 35class OCSPClientCertID; 36 37class OCSPRequest 38{ 39 NOCOPY(OCSPRequest) 40public: 41 /* 42 * The only constructor. Subject and issuer must remain valid for the 43 * lifetime of this object (they are not refcounted). 44 */ 45 OCSPRequest( 46 TPCertInfo &subject, 47 TPCertInfo &issuer, 48 bool genNonce); 49 50 ~OCSPRequest(); 51 52 /* 53 * Obtain encoded OCSP request suitable for posting to responder. 54 * This object owns and maintains the memory. 55 */ 56 const CSSM_DATA *encode(); 57 58 /* 59 * Obtain this request's nonce (which we randomly generate at encode() time), 60 * This object owns and maintains the memory. Result is NULL} if we 61 * didn't generate a nonce. 62 */ 63 const CSSM_DATA *nonce(); 64 65 /* 66 * Obtain this request's CertID. Used to look up matching SingleResponse 67 * in the OCSPResponse. 68 */ 69 OCSPClientCertID *certID(); 70 71private: 72 SecAsn1CoderRef mCoder; 73 TPCertInfo &mSubject; 74 TPCertInfo &mIssuer; 75 bool mGenNonce; 76 CSSM_DATA mNonce; 77 CSSM_DATA mEncoded; /* lazily evaluated */ 78 OCSPClientCertID *mCertID; /* calculated during encode() */ 79 80}; 81 82#endif /* _OCSP_REQUEST_H_ */ 83 84