MuscleCardKeyHandle.h [plain text]
#ifndef _MUSCLECARDKEYHANDLE_H_
#define _MUSCLECARDKEYHANDLE_H_
#include "KeyHandle.h"
class MscKey;
class MuscleCardKeyHandle: public Tokend::KeyHandle
{
NOCOPY(MuscleCardKeyHandle)
public:
MuscleCardKeyHandle(const Tokend::MetaRecord &metaRecord,
Tokend::Record &record, MscKey &key);
~MuscleCardKeyHandle();
virtual void getKeySize(CSSM_KEY_SIZE &keySize);
virtual uint32 getOutputSize(const Context &context, uint32 inputSize, bool encrypting);
virtual void generateSignature(const Context &context, CSSM_ALGORITHMS signOnly, const CssmData &input, CssmData &signature);
virtual void verifySignature(const Context &context, CSSM_ALGORITHMS signOnly, const CssmData &input, const CssmData &signature);
virtual void generateMac(const Context &context, const CssmData &input, CssmData &output);
virtual void verifyMac(const Context &context, const CssmData &input, const CssmData &compare);
virtual void encrypt(const Context &context, const CssmData &clear, CssmData &cipher);
virtual void decrypt(const Context &context, const CssmData &cipher, CssmData &clear);
virtual void exportKey(const Context &context, const AccessCredentials *cred,
CssmKey &wrappedKey);
virtual void getOwner(AclOwnerPrototype &owner);
virtual void getAcl(const char *tag, uint32 &count, AclEntryInfo *&aclList);
private:
MscKey &mKey;
AutoAclOwnerPrototype mAclOwner;
AutoAclEntryInfoList mAclEntries;
void keyAcl(unsigned int acl, const AclAuthorizationSet &auths);
};
class MuscleCardKeyHandleFactory : public Tokend::KeyHandleFactory
{
NOCOPY(MuscleCardKeyHandleFactory)
public:
MuscleCardKeyHandleFactory() {}
virtual ~MuscleCardKeyHandleFactory();
virtual Tokend::KeyHandle *keyHandle(Tokend::TokenContext *tokenContext,
const Tokend::MetaRecord &metaRecord, Tokend::Record &record) const;
};
#endif