1/* 2 * Copyright (c) 2000-2004,2006 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// 26// cssmcert - CSSM layer certificate (CL) related objects. 27// 28#include <security_cdsa_utilities/cssmcert.h> 29#include <security_utilities/debugging.h> 30 31 32namespace Security { 33 34 35// 36// Construct an EncodedCertificate 37// 38EncodedCertificate::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// 52CertGroup::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// 65void 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 89