FEESignatureObject.h [plain text]
#ifdef CRYPTKIT_CSP_ENABLE
#ifndef _FEE_SIGNATURE_OBJECT_H_
#define _FEE_SIGNATURE_OBJECT_H_
#include <CoreServices/../Frameworks/CarbonCore.framework/Headers/MacTypes.h>
#include <CryptKit/feePublicKey.h>
#include <CryptKit/feeECDSA.h>
#include <CryptKitCSP/FEECSPUtils.h>
#include <CryptKitCSP/CryptKitSpace.h>
#include <AppleCSP/RawSigner.h>
#include <AppleCSP/AppleCSPSession.h>
namespace CryptKit {
class FEESigner : public RawSigner {
public:
FEESigner(
feeRandFcn randFcn,
void *randRef,
AppleCSPSession &session,
CssmAllocator &alloc) :
RawSigner(alloc, CSSM_ALGID_NONE),
mFeeKey(NULL),
mWeMallocdFeeKey(false),
mRandFcn(randFcn),
mRandRef(randRef),
mSession(session) { }
virtual ~FEESigner();
void signerInit(
const Context &context,
bool isSigning);
void keyFromContext(
const Context &context);
protected:
feePubKey mFeeKey;
bool mWeMallocdFeeKey;
feeRandFcn mRandFcn;
void *mRandRef;
AppleCSPSession &mSession;
};
class FEERawSigner : public FEESigner
{
public:
FEERawSigner(
feeRandFcn randFcn,
void *randRef,
AppleCSPSession &session,
CssmAllocator &alloc) :
FEESigner(randFcn, randRef, session, alloc) { };
~FEERawSigner() { }
void sign(
const void *data,
size_t dataLen,
void *sig,
size_t *sigLen);
void verify(
const void *data,
size_t dataLen,
const void *sig,
size_t sigLen);
size_t maxSigSize();
};
class FEEECDSASigner : public FEESigner
{
public:
FEEECDSASigner(
feeRandFcn randFcn,
void *randRef,
AppleCSPSession &session,
CssmAllocator &alloc) :
FEESigner(randFcn, randRef, session, alloc) { };
~FEEECDSASigner() { }
void sign(
const void *data,
size_t dataLen,
void *sig,
size_t *sigLen);
void verify(
const void *data,
size_t dataLen,
const void *sig,
size_t sigLen);
size_t maxSigSize();
};
}
#endif
#endif