00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #ifndef OPENSSLCRYPTOKEYDSA_INCLUDE
00029 #define OPENSSLCRYPTOKEYDSA_INCLUDE
00030
00031 #include <xsec/enc/XSECCryptoKeyDSA.hpp>
00032
00033 #if defined (HAVE_OPENSSL)
00034 #include <openssl/evp.h>
00035
00048 class DSIG_EXPORT OpenSSLCryptoKeyDSA : public XSECCryptoKeyDSA {
00049
00050 public :
00051
00054
00055 OpenSSLCryptoKeyDSA();
00056
00064 virtual ~OpenSSLCryptoKeyDSA();
00065
00067
00070
00078 virtual XSECCryptoKey::KeyType getKeyType();
00079
00084 virtual const XMLCh * getProviderName() {return DSIGConstants::s_unicodeStrPROVOpenSSL;}
00085
00090 virtual XSECCryptoKey * clone();
00091
00093
00096
00111 virtual unsigned int signBase64Signature(unsigned char * hashBuf,
00112 unsigned int hashLen,
00113 char * base64SignatureBuf,
00114 unsigned int base64SignatureBufLen);
00115
00129 virtual bool verifyBase64Signature(unsigned char * hashBuf,
00130 unsigned int hashLen,
00131 char * base64Signature,
00132 unsigned int sigLen);
00133
00135
00143
00151 virtual void loadPBase64BigNums(const char * b64, unsigned int len);
00152
00160 virtual void loadQBase64BigNums(const char * b64, unsigned int len);
00161
00169 virtual void loadGBase64BigNums(const char * b64, unsigned int len);
00170
00178 virtual void loadYBase64BigNums(const char * b64, unsigned int len);
00179
00187 virtual void loadJBase64BigNums(const char * b64, unsigned int len);
00188
00190
00193
00201 OpenSSLCryptoKeyDSA(EVP_PKEY *k);
00202
00204
00205
00206 private:
00207
00208 XSECCryptoKey::KeyType m_keyType;
00209 DSA * mp_dsaKey;
00210
00211 };
00212
00213 #endif
00214 #endif