#ifndef _JPKIRECORD_H_
#define _JPKIRECORD_H_
#include "Record.h"
#include <security_cdsa_utilities/cssmcred.h>
class JPKIToken;
class JPKIRecord : public Tokend::Record
{
NOCOPY(JPKIRecord)
public:
JPKIRecord(const char *description) :
mDescription(description) {}
~JPKIRecord();
virtual const char *description() { return mDescription; }
protected:
const char *mDescription;
};
class JPKICertificateRecord : public JPKIRecord
{
NOCOPY(JPKICertificateRecord)
public:
JPKICertificateRecord(uint8_t shortEFName, const char *description) :
JPKIRecord(description), mShortEFName(shortEFName) {}
~JPKICertificateRecord();
virtual Tokend::Attribute *getDataAttribute(Tokend::TokenContext *tokenContext);
protected:
uint8_t mShortEFName;
};
class JPKIKeyRecord : public JPKIRecord
{
NOCOPY(JPKIKeyRecord)
public:
JPKIKeyRecord(uint8_t shortEFName, const char *description,
const Tokend::MetaRecord &metaRecord, bool signOnly);
~JPKIKeyRecord();
size_t sizeInBits() const { return 1024; }
void computeCrypt(JPKIToken &jpkiToken, 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:
uint8_t mShortEFName;
bool mSignOnly;
AutoAclEntryInfoList mAclEntries;
};
#endif