1/*
2 * Copyright (c) 2003,2005 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
7 * obtain a copy of the License at http://www.apple.com/publicsource and
8 * read it before 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
12 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
13 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
14 * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
15 * Please see the License for the specific language governing rights and
16 * limitations under the License.
17 */
18
19/*
20 * pkcs12Parsed.h - Parsed contents of a p12 blob
21 */
22
23#include "pkcs12Parsed.h"
24#include <string.h>
25
26P12KnownBlobs::P12KnownBlobs(
27	SecNssCoder &coder)
28		: mBlobs(NULL), mNumBlobs(0), mCoder(coder)
29{
30
31}
32
33void P12KnownBlobs::addBlob(
34	const CSSM_DATA &blob)
35{
36	/* coder doesn't have a realloc */
37	CSSM_DATA *newBlobs =
38		(CSSM_DATA *)mCoder.malloc((mNumBlobs + 1) * sizeof(CSSM_DATA));
39	memmove(newBlobs, mBlobs, mNumBlobs * sizeof(CSSM_DATA));
40	newBlobs[mNumBlobs++] = blob;
41	mBlobs = newBlobs;
42}
43
44P12UnknownBlob::P12UnknownBlob(
45	const CSSM_DATA &blob,
46	const char *descr)
47{
48	mBlob = blob;
49	mOid.Data = NULL;
50	mOid.Length = 0;
51	strcpy(mDescr, descr);
52}
53
54P12UnknownBlob::P12UnknownBlob(
55	const CSSM_DATA &blob,
56	const CSSM_OID &oid)
57{
58	mBlob = blob;
59	mOid = oid;
60	mDescr[0] = '\0';
61}
62
63P12UnknownBlobs::P12UnknownBlobs(
64	SecNssCoder &coder)
65		: mBlobs(NULL), mNumBlobs(0), mCoder(coder)
66{
67
68}
69
70P12UnknownBlobs::~P12UnknownBlobs()
71{
72	for(unsigned dex=0; dex<mNumBlobs; dex++) {
73		delete mBlobs[dex];
74	}
75}
76
77void P12UnknownBlobs::addBlob(
78	P12UnknownBlob *blob)
79{
80	/* coder doesn't have a realloc */
81	P12UnknownBlob **newBlobs =
82		(P12UnknownBlob **)mCoder.malloc((mNumBlobs + 1) *
83			sizeof(P12UnknownBlob *));
84	memmove(newBlobs, mBlobs, mNumBlobs * sizeof(P12UnknownBlob *));
85	newBlobs[mNumBlobs++] = blob;
86	mBlobs = newBlobs;
87}
88
89P12Parsed::P12Parsed(SecNssCoder &coder)
90	: mCoder(coder), mCerts(coder), mCrls(coder), mUnknown(coder)
91{
92
93}
94