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