]>
git.saurik.com Git - apple/security.git/blob - Keychain/KeyItem.cpp
bfb10ec0edea4479b0e54150fdece00265f13eb8
2 * Copyright (c) 2002 Apple Computer, Inc. All Rights Reserved.
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
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.
21 #include <Security/KeyItem.h>
22 #include <CoreServices/../Frameworks/CarbonCore.framework/Headers/MacErrors.h>
24 using namespace KeychainCore
;
26 KeyItem::KeyItem(const Keychain
&keychain
, const PrimaryKey
&primaryKey
, const CssmClient::DbUniqueRecord
&uniqueId
) :
27 ItemImpl(keychain
, primaryKey
, uniqueId
),
32 KeyItem::KeyItem(const Keychain
&keychain
, const PrimaryKey
&primaryKey
) :
33 ItemImpl(keychain
, primaryKey
),
38 KeyItem::KeyItem(KeyItem
&keyItem
) :
48 CssmClient::SSDbUniqueRecord
uniqueId(ssDbUniqueRecord());
49 uniqueId
->database()->csp()->freeKey(*mKey
);
50 uniqueId
->allocator().free(mKey
);
57 MacOSError::throwMe(unimpErr
);
61 KeyItem::copyTo(const Keychain
&keychain
)
63 MacOSError::throwMe(unimpErr
);
72 KeyItem::add(Keychain
&keychain
)
74 MacOSError::throwMe(unimpErr
);
77 CssmClient::SSDbUniqueRecord
78 KeyItem::ssDbUniqueRecord()
80 DbUniqueRecordImpl
*impl
= &*dbUniqueRecord();
81 return CssmClient::SSDbUniqueRecord(safe_cast
<Security::CssmClient::SSDbUniqueRecordImpl
*>(impl
));
89 CssmClient::SSDbUniqueRecord
uniqueId(ssDbUniqueRecord());
90 CssmDataContainer
dataBlob(uniqueId
->allocator());
91 uniqueId
->get(NULL
, &dataBlob
);
92 mKey
= reinterpret_cast<CssmKey
*>(dataBlob
.Data
);