#ifndef _CACRECORD_H_
#define _CACRECORD_H_
#include "Record.h"
class CACToken;
class CACRecord : public Tokend::Record
{
NOCOPY(CACRecord)
public:
CACRecord(const unsigned char *application, const char *description) :
mApplication(application), mDescription(description) {}
virtual ~CACRecord();
virtual const char *description() { return mDescription; }
protected:
const unsigned char *application() const { return mApplication; }
protected:
const unsigned char *mApplication;
const char *mDescription;
};
class CACCertificateRecord : public CACRecord
{
NOCOPY(CACCertificateRecord)
public:
CACCertificateRecord(const unsigned char *application,
const char *description) :
CACRecord(application, description) {}
virtual ~CACCertificateRecord();
virtual Tokend::Attribute *getDataAttribute(Tokend::TokenContext *tokenContext);
};
class CACKeyRecord : public CACRecord
{
NOCOPY(CACKeyRecord)
public:
CACKeyRecord(const unsigned char *application, const char *description,
const Tokend::MetaRecord &metaRecord);
virtual ~CACKeyRecord();
size_t sizeInBits() const { return 1024; }
void computeCrypt(CACToken &cacToken, bool sign, const unsigned char *data,
size_t dataLength, unsigned char *result, size_t &resultLength);
virtual void getAcl(const char *tag, uint32 &count,
AclEntryInfo *&aclList);
private:
AutoAclEntryInfoList mAclEntries;
};
class CACTBRecord : public CACRecord
{
NOCOPY(CACTBRecord)
public:
CACTBRecord(const unsigned char *application, const char *description) :
CACRecord(application, description) {}
virtual ~CACTBRecord();
virtual Tokend::Attribute *getDataAttribute(Tokend::TokenContext *tokenContext);
protected:
void getSize(CACToken &cacToken, size_t &tbsize, size_t &vbsize);
Tokend::Attribute *getDataAttribute(CACToken &cacToken, bool getTB);
};
class CACVBRecord : public CACTBRecord
{
NOCOPY(CACVBRecord)
public:
CACVBRecord(const unsigned char *application, const char *description) :
CACTBRecord(application, description) {}
virtual ~CACVBRecord();
virtual Tokend::Attribute *getDataAttribute(Tokend::TokenContext *tokenContext);
virtual void getAcl(const char *tag, uint32 &count,
AclEntryInfo *&aclList);
private:
AutoAclEntryInfoList mAclEntries;
};
#endif