]> git.saurik.com Git - apple/security.git/blob - AppleX509CL/DecodedCrl.h
Security-179.tar.gz
[apple/security.git] / AppleX509CL / DecodedCrl.h
1 /*
2 * Copyright (c) 2002 Apple Computer, Inc. All Rights Reserved.
3 *
4 * The contents of this file constitute Original Code as defined in and are
5 * subject to the Apple Public Source License Version 1.2 (the 'License').
6 * You may not use this file except in compliance with the License. Please obtain
7 * a copy of the License at http://www.apple.com/publicsource and read it before
8 * using this file.
9 *
10 * This Original Code and all software distributed under the License are
11 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS
12 * OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, INCLUDING WITHOUT
13 * LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
14 * PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. Please see the License for the
15 * specific language governing rights and limitations under the License.
16 */
17
18
19 /*
20 * DecodedCrl.h - object representing a decoded cert in NSS form, with
21 * extensions parsed and decoded (still in NSS format).
22 *
23 * Created 8/28/2002 by Doug Mitchell.
24 *
25 * See DecodedItem.h for details on the care and feeding of this
26 * module.
27 */
28
29 #ifndef _DECODED_CRL_H_
30 #define _DECODED_CRL_H_
31
32 #include <Security/cssmtype.h>
33 #include <Security/cssmdata.h>
34
35 #include "DecodedItem.h"
36 #include <SecurityNssAsn1/X509Templates.h>
37
38 class DecodedCrl : /* for now public CertificateList, */ public DecodedItem
39 {
40 NOCOPY(DecodedCrl)
41 public:
42 /* construct empty CRL, no decoded extensions */
43 DecodedCrl(
44 AppleX509CLSession &session);
45
46 /* one-shot constructor, decoding from DER-encoded data */
47 DecodedCrl(
48 AppleX509CLSession &session,
49 const CssmData &encodedCrl);
50
51 ~DecodedCrl();
52
53 /* decode CRLToSign and its extensions */
54 void decodeCts(
55 const CssmData &encodedCTS);
56
57 /* encode TBSCert and its extensions */
58 void encodeExtensions();
59 void encodeCts(
60 CssmOwnedData &encodedTbs);
61
62 /***
63 *** field accessors (in CrlFields.cpp)
64 ***/
65
66 /*
67 * Obtain the index'th occurrence of field specified by fieldId.
68 * Format of the returned field depends on fieldId.
69 * Returns total number of fieldId fields in the cert if index is 0.
70 * Returns true if specified field was found, else returns false.
71 */
72 bool getCrlFieldData(
73 const CssmOid &fieldId, // which field
74 unsigned index, // which occurrence (0 = first)
75 uint32 &numFields, // RETURNED
76 CssmOwnedData &fieldValue); // RETURNED
77
78 /*
79 * Set the field specified by fieldId in TBS.
80 * Note no index - individual field routines either append (for extensions)
81 * or throw if field already set (for all others)
82 */
83 void setCrlField(
84 const CssmOid &fieldId, // which field
85 const CssmData &fieldValue);
86
87 /*
88 * Free the fieldId-specific data referred to by fieldValue.get().data().
89 */
90 static void freeCrlFieldData(
91 const CssmOid &fieldId,
92 CssmOwnedData &fieldValue);
93
94 void getAllParsedCrlFields(
95 uint32 &NumberOfFields, // RETURNED
96 CSSM_FIELD_PTR &CertFields); // RETURNED
97
98 static void describeFormat(
99 CssmAllocator &alloc,
100 uint32 &NumberOfFields,
101 CSSM_OID_PTR &OidList);
102
103 NSS_Crl mCrl;
104
105 };
106
107 #endif /* _DECODED_CRL_H_ */