#ifndef _H_CDSA_CLIENT_GENKEY
#define _H_CDSA_CLIENT_GENKEY 1
#include <security_cdsa_client/cspclient.h>
#include <security_cdsa_client/cryptoclient.h>
#include <security_cdsa_client/dlclient.h>
#include <security_cdsa_client/keyclient.h>
namespace Security
{
namespace CssmClient
{
class GenerateKey : public Context, public RccBearer {
public:
GenerateKey(const CSP &csp, CSSM_ALGORITHMS alg, uint32 size = 0);
public:
void size(uint32 s) { mKeySize = s; set(CSSM_ATTRIBUTE_KEY_LENGTH, s); }
void seed(const CssmCryptoData &s) { mSeed = &s; set(CSSM_ATTRIBUTE_SEED, s); }
void salt(const CssmData &s) { mSalt = &s;set(CSSM_ATTRIBUTE_SALT, s); }
void params(const CssmData &p) { mParams = &p; set(CSSM_ATTRIBUTE_ALG_PARAMS, p); }
void database(const Db &inDb);
Key operator () (const KeySpec &spec);
void operator () (CssmKey &key, const KeySpec &spec);
void operator () (Key &publicKey, const KeySpec &publicSpec,
Key &privateKey, const KeySpec &privateSpec);
void operator () (CssmKey &publicKey, const KeySpec &publicSpec,
CssmKey &privateKey, const KeySpec &privateSpec);
protected:
void activate();
private:
uint32 mKeySize;
const CssmCryptoData *mSeed;
const CssmData *mSalt;
const CssmData *mParams;
Db mDb;
};
}
}
#endif // _H_CDSA_CLIENT_GENKEY