2 * Copyright (c) 2000-2001,2011-2012,2014 Apple 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_cdsa_client/cspclient.h>
26 #include <security_cdsa_client/cryptoclient.h>
27 #include <security_cdsa_client/dlclient.h>
28 #include <security_cdsa_client/keyclient.h>
37 class GenerateKey
: public Context
, public RccBearer
{
39 GenerateKey(const CSP
&csp
, CSSM_ALGORITHMS alg
, uint32 size
= 0);
43 void size(uint32 s
) { mKeySize
= s
; set(CSSM_ATTRIBUTE_KEY_LENGTH
, s
); }
44 void seed(const CssmCryptoData
&s
) { mSeed
= &s
; set(CSSM_ATTRIBUTE_SEED
, s
); }
45 void salt(const CssmData
&s
) { mSalt
= &s
;set(CSSM_ATTRIBUTE_SALT
, s
); }
46 void params(const CssmData
&p
) { mParams
= &p
; set(CSSM_ATTRIBUTE_ALG_PARAMS
, p
); }
47 void database(const Db
&inDb
);
49 // symmetric key generation
50 Key
operator () (const KeySpec
&spec
);
51 void operator () (CssmKey
&key
, const KeySpec
&spec
);
53 // asymmetric key generation
54 void operator () (Key
&publicKey
, const KeySpec
&publicSpec
,
55 Key
&privateKey
, const KeySpec
&privateSpec
);
56 void operator () (CssmKey
&publicKey
, const KeySpec
&publicSpec
,
57 CssmKey
&privateKey
, const KeySpec
&privateSpec
);
66 const CssmCryptoData
*mSeed
;
67 const CssmData
*mSalt
;
68 const CssmData
*mParams
;
71 // generation parameters(?) -- Unused
72 // const ResourceControlContext *mInitialAcl;
75 } // end namespace CssmClient
77 } // end namespace Security
79 #endif // _H_CDSA_CLIENT_GENKEY