RSA_DSA_signature.h [plain text]
#ifndef _RSA_DSA_SIGNATURE_H_
#define _RSA_DSA_SIGNATURE_H_
#include <openssl/rsa.h>
#include <openssl/dsa.h>
#include <RawSigner.h>
#include <AppleCSPSession.h>
#define RSA_SIG_PADDING_DEFAULT RSA_PKCS1_PADDING
class RSASigner : public RawSigner {
public:
RSASigner(
Allocator &alloc,
AppleCSPSession &session,
CSSM_ALGORITHMS digestAlg) :
RawSigner(alloc, digestAlg),
mRsaKey(NULL),
mWeMallocdRsaKey(false),
mSession(session),
mPadding(RSA_SIG_PADDING_DEFAULT) { }
~RSASigner();
void signerInit(
const Context &context,
bool isSigning);
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();
private:
void keyFromContext(
const Context &context);
RSA *mRsaKey;
bool mWeMallocdRsaKey;
AppleCSPSession &mSession;
int mPadding; };
class DSASigner : public RawSigner {
public:
DSASigner(
Allocator &alloc,
AppleCSPSession &session,
CSSM_ALGORITHMS digestAlg) :
RawSigner(alloc, digestAlg),
mDsaKey(NULL),
mWeMallocdDsaKey(false),
mSession(session) { }
~DSASigner();
void signerInit(
const Context &context,
bool isSigning);
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();
private:
void keyFromContext(
const Context &context);
DSA *mDsaKey;
bool mWeMallocdDsaKey;
AppleCSPSession &mSession;
};
#endif