1/* 2 * Copyright (c) 2004-2005 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 <Security/SecAsn1Coder.h> 32#include <Security/ocspTemplates.h> 33#include <security_utilities/utilities.h> 34#include <clAppUtils/CertParser.h> 35 36class OCSPClientCertID; 37 38class OCSPRequest 39{ 40 NOCOPY(OCSPRequest) 41public: 42 /* 43 * The only constructor. Subject and issuer must remain valid for the 44 * lifetime of this object. 45 */ 46 OCSPRequest( 47 CertParser &subject, 48 CertParser &issuer, 49 bool genNonce); 50 51 ~OCSPRequest(); 52 53 /* 54 * Obtain encoded OCSP request suitable for posting to responder. 55 * This object owns and maintains the memory. 56 */ 57 const CSSM_DATA *encode(); 58 59 /* 60 * Obtain this request's nonce (which we randomly generate at encode() time), 61 * This object owns and maintains the memory. Result is NULL} if we 62 * didn't generate a nonce. 63 */ 64 const CSSM_DATA *nonce(); 65 66 /* 67 * Obtain this request's CertID. Used to look up matching SingleResponse 68 * in the OCSPResponse. 69 */ 70 OCSPClientCertID *certID(); 71 72private: 73 SecAsn1CoderRef mCoder; 74 CertParser &mSubject; 75 CertParser &mIssuer; 76 bool mGenNonce; 77 CSSM_DATA mNonce; 78 CSSM_DATA mEncoded; /* lazily evaluated */ 79 OCSPClientCertID *mCertID; /* calculated during encode() */ 80 81}; 82 83#endif /* _OCSP_REQUEST_H_ */ 84 85