]> git.saurik.com Git - apple/security.git/blob - OSX/libsecurity_cdsa_utilities/lib/cssmcert.cpp
Security-59754.41.1.tar.gz
[apple/security.git] / OSX / libsecurity_cdsa_utilities / lib / cssmcert.cpp
1 /*
2 * Copyright (c) 2000-2004,2006,2011,2014 Apple 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 //
26 // cssmcert - CSSM layer certificate (CL) related objects.
27 //
28 #include <security_cdsa_utilities/cssmcert.h>
29 #include <security_utilities/debugging.h>
30
31
32 namespace Security {
33
34
35 //
36 // Construct an EncodedCertificate
37 //
38 EncodedCertificate::EncodedCertificate(CSSM_CERT_TYPE type, CSSM_CERT_ENCODING enc,
39 const CSSM_DATA *data)
40 {
41 clearPod();
42 CertType = type;
43 CertEncoding = enc;
44 if (data)
45 CertBlob = *data;
46 }
47
48
49 //
50 // Construct an empty CertGroup.
51 //
52 CertGroup::CertGroup(CSSM_CERT_TYPE ctype,
53 CSSM_CERT_ENCODING encoding, CSSM_CERTGROUP_TYPE type)
54 {
55 clearPod();
56 CertType = ctype;
57 CertEncoding = encoding;
58 CertGroupType = type;
59 }
60
61
62 //
63 // Free all memory in a CertGroup
64 //
65 void CertGroup::destroy(Allocator &allocator)
66 {
67 switch (type()) {
68 case CSSM_CERTGROUP_DATA:
69 // array of CSSM_DATA elements
70 for (uint32 n = 0; n < count(); n++)
71 allocator.free(blobCerts()[n].data());
72 allocator.free (blobCerts ());
73 break;
74 case CSSM_CERTGROUP_ENCODED_CERT:
75 for (uint32 n = 0; n < count(); n++)
76 allocator.free(encodedCerts()[n].data());
77 allocator.free (blobCerts ());
78 break;
79 case CSSM_CERTGROUP_PARSED_CERT:
80 // CSSM_PARSED_CERTS array -- unimplemented
81 case CSSM_CERTGROUP_CERT_PAIR:
82 // CSSM_CERT_PAIR array -- unimplemented
83 break;
84 }
85 }
86
87
88 } // end namespace Security