#ifndef _BELPICRECORD_H_
#define _BELPICRECORD_H_
#include "Record.h"
#include <security_cdsa_utilities/cssmcred.h>
class BELPICToken;
class BELPICRecord : public Tokend::Record
{
NOCOPY(BELPICRecord)
public:
BELPICRecord(const char *description) :
mDescription(description) {}
~BELPICRecord();
virtual const char *description() { return mDescription; }
protected:
const char *mDescription;
};
class BELPICBinaryFileRecord : public BELPICRecord
{
NOCOPY(BELPICBinaryFileRecord)
public:
BELPICBinaryFileRecord(const uint8_t *df, const uint8_t *ef,
const char *description) :
BELPICRecord(description), mDF(df), mEF(ef) {}
~BELPICBinaryFileRecord();
virtual Tokend::Attribute *getDataAttribute(
Tokend::TokenContext *tokenContext);
protected:
const uint8_t *mDF;
const uint8_t *mEF;
};
class BELPICKeyRecord : public BELPICRecord
{
NOCOPY(BELPICKeyRecord)
public:
BELPICKeyRecord(const uint8_t *keyId, const char *description,
const Tokend::MetaRecord &metaRecord, bool signOnly);
~BELPICKeyRecord();
size_t sizeInBits() const { return 1024; }
void computeCrypt(BELPICToken &belpicToken, bool sign,
const AccessCredentials *cred, const unsigned char *data,
size_t dataLength, unsigned char *result, size_t &resultLength);
void getAcl(const char *tag, uint32 &count, AclEntryInfo *&acls);
private:
const uint8_t *mKeyId;
bool mSignOnly;
AutoAclEntryInfoList mAclEntries;
};
#endif