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
00047 class DSIG_EXPORT OpenSSLCryptoKeyDSA : public XSECCryptoKeyDSA {
00048
00049 public :
00050
00053
00054 OpenSSLCryptoKeyDSA();
00055
00063 virtual ~OpenSSLCryptoKeyDSA();
00064
00066
00069
00077 virtual XSECCryptoKey::KeyType getKeyType();
00078
00083 virtual const XMLCh * getProviderName() {return DSIGConstants::s_unicodeStrPROVOpenSSL;}
00084
00089 virtual XSECCryptoKey * clone();
00090
00092
00095
00110 virtual unsigned int signBase64Signature(unsigned char * hashBuf,
00111 unsigned int hashLen,
00112 char * base64SignatureBuf,
00113 unsigned int base64SignatureBufLen);
00114
00128 virtual bool verifyBase64Signature(unsigned char * hashBuf,
00129 unsigned int hashLen,
00130 char * base64Signature,
00131 unsigned int sigLen);
00132
00134
00142
00150 virtual void loadPBase64BigNums(const char * b64, unsigned int len);
00151
00159 virtual void loadQBase64BigNums(const char * b64, unsigned int len);
00160
00168 virtual void loadGBase64BigNums(const char * b64, unsigned int len);
00169
00177 virtual void loadYBase64BigNums(const char * b64, unsigned int len);
00178
00186 virtual void loadJBase64BigNums(const char * b64, unsigned int len);
00187
00189
00192
00200 OpenSSLCryptoKeyDSA(EVP_PKEY *k);
00201
00203
00204
00205 private:
00206
00207 XSECCryptoKey::KeyType m_keyType;
00208 DSA * mp_dsaKey;
00209
00210 };
00211
00212 #endif
00213 #endif