FEESignatureObject.h [plain text]
#ifdef CRYPTKIT_CSP_ENABLE
#ifndef _FEE_SIGNATURE_OBJECT_H_
#define _FEE_SIGNATURE_OBJECT_H_
#include <security_cryptkit/feePublicKey.h>
#include <security_cryptkit/feeECDSA.h>
#include "FEECSPUtils.h"
#include "CryptKitSpace.h"
#include <RawSigner.h>
#include <AppleCSPSession.h>
namespace CryptKit {
class FEESigner : public RawSigner {
public:
FEESigner(
feeRandFcn randFcn,
void *randRef,
AppleCSPSession &session,
Allocator &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);
void sigFormatFromContext(
const Context &context);
protected:
feeSigFormat mSigFormat;
feePubKey mFeeKey;
bool mWeMallocdFeeKey;
feeRandFcn mRandFcn;
void *mRandRef;
AppleCSPSession &mSession;
};
class FEERawSigner : public FEESigner
{
public:
FEERawSigner(
feeRandFcn randFcn,
void *randRef,
AppleCSPSession &session,
Allocator &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,
Allocator &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