2 * Copyright (c) 2000-2001 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.
20 // genkey - client interface to CSSM sign/verify contexts
22 #ifndef _H_CDSA_CLIENT_GENKEY
23 #define _H_CDSA_CLIENT_GENKEY 1
25 #include <Security/cspclient.h>
26 #include <Security/cryptoclient.h>
27 #include <Security/dlclient.h>
28 #include <Security/keyclient.h>
37 class GenerateKey
: public Context
{
39 GenerateKey(const CSP
&csp
, CSSM_ALGORITHMS alg
, uint32 size
= 0);
44 void size(uint32 s
) { mKeySize
= s
; set(CSSM_ATTRIBUTE_KEY_LENGTH
, s
); }
45 void seed(const CssmCryptoData
&s
) { mSeed
= &s
; set(CSSM_ATTRIBUTE_SEED
, s
); }
46 void salt(const CssmData
&s
) { mSalt
= &s
;set(CSSM_ATTRIBUTE_SALT
, s
); }
47 void params(const CssmData
&p
) { mParams
= &p
; set(CSSM_ATTRIBUTE_ALG_PARAMS
, p
); }
48 void database(const Db
&inDb
);
50 // Generation parameters
51 void initialAcl(const ResourceControlContext
*rc
) { mInitialAcl
= rc
; }
53 // symmetric key generation
54 Key
operator () (const KeySpec
&spec
);
55 void operator () (CssmKey
&key
, const KeySpec
&spec
);
57 // asymmetric key generation
58 void operator () (Key
&publicKey
, const KeySpec
&publicSpec
,
59 Key
&privateKey
, const KeySpec
&privateSpec
);
60 void operator () (CssmKey
&publicKey
, const KeySpec
&publicSpec
,
61 CssmKey
&privateKey
, const KeySpec
&privateSpec
);
70 const CssmCryptoData
*mSeed
;
71 const CssmData
*mSalt
;
72 const CssmData
*mParams
;
75 // generation parameters(?)
76 const ResourceControlContext
*mInitialAcl
;
79 } // end namespace CssmClient
81 } // end namespace Security
83 #endif // _H_CDSA_CLIENT_GENKEY