]>
Commit | Line | Data |
---|---|---|
b1ab9ed8 A |
1 | /* |
2 | * Copyright (c) 2004 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 | // SDCSPDLSession.cpp - Security Server CSP/DL session. | |
27 | // | |
28 | #include "SDCSPDLSession.h" | |
29 | ||
30 | #include "SDCSPDLPlugin.h" | |
31 | #include "SDKey.h" | |
32 | ||
33 | using namespace SecurityServer; | |
34 | ||
35 | // | |
36 | // SDCSPDLSession -- Security Server CSP session | |
37 | // | |
38 | SDCSPDLSession::SDCSPDLSession() | |
39 | { | |
40 | } | |
41 | ||
42 | ||
43 | // | |
44 | // Reference Key management | |
45 | // | |
46 | void | |
47 | SDCSPDLSession::makeReferenceKey(SDCSPSession &session, KeyHandle inKeyHandle, | |
48 | CssmKey &outKey, CSSM_DB_HANDLE inDBHandle, | |
49 | uint32 inKeyAttr, const CssmData *inKeyLabel) | |
50 | { | |
51 | new SDKey(session, inKeyHandle, outKey, inDBHandle, inKeyAttr, | |
52 | inKeyLabel); | |
53 | } | |
54 | ||
55 | SDKey & | |
56 | SDCSPDLSession::lookupKey(const CssmKey &inKey) | |
57 | { | |
58 | /* for now we only allow ref keys */ | |
59 | if(inKey.blobType() != CSSM_KEYBLOB_REFERENCE) { | |
60 | CssmError::throwMe(CSSMERR_CSP_INVALID_KEY); | |
61 | } | |
62 | ||
63 | /* fetch key (this is just mapping the value in inKey.KeyData to an SDKey) */ | |
64 | SDKey &theKey = find<SDKey>(inKey); | |
65 | ||
66 | #ifdef someday | |
67 | /* | |
68 | * Make sure caller hasn't changed any crucial header fields. | |
69 | * Some fields were changed by makeReferenceKey, so make a local copy.... | |
70 | */ | |
71 | CSSM_KEYHEADER localHdr = cssmKey.KeyHeader; | |
72 | get binKey-like thing from SDKey, maybe SDKey should keep a copy of | |
73 | hdr...but that's' not supersecure....; | |
74 | ||
75 | localHdr.BlobType = binKey->mKeyHeader.BlobType; | |
76 | localHdr.Format = binKey->mKeyHeader.Format; | |
77 | if(memcmp(&localHdr, &binKey->mKeyHeader, sizeof(CSSM_KEYHEADER))) { | |
78 | CssmError::throwMe(CSSMERR_CSP_INVALID_KEY_REFERENCE); | |
79 | } | |
80 | #endif | |
81 | return theKey; | |
82 | } |