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 #ifndef NSSCRYPTOKEYDSA_INCLUDE
00027 #define NSSCRYPTOKEYDSA_INCLUDE
00028
00029 #include <xsec/enc/XSECCryptoKeyDSA.hpp>
00030
00031 #if defined (HAVE_NSS)
00032
00033 #include "nss/pk11func.h"
00034 #include "nss/keyhi.h"
00035 #include "nss/nss.h"
00036
00037 class NSSCryptoProvider;
00038
00051 class DSIG_EXPORT NSSCryptoKeyDSA : public XSECCryptoKeyDSA {
00052
00053 public :
00054
00057
00067 NSSCryptoKeyDSA(SECKEYPublicKey * pubkey = NULL, SECKEYPrivateKey * privkey = NULL);
00068
00069 virtual ~NSSCryptoKeyDSA();
00070
00072
00075
00083 virtual XSECCryptoKey::KeyType getKeyType();
00084
00089 virtual const XMLCh * getProviderName() {return DSIGConstants::s_unicodeStrPROVNSS;}
00090
00095 virtual XSECCryptoKey * clone();
00096
00098
00101
00116 virtual unsigned int signBase64Signature(unsigned char * hashBuf,
00117 unsigned int hashLen,
00118 char * base64SignatureBuf,
00119 unsigned int base64SignatureBufLen);
00120
00133 virtual bool verifyBase64Signature(unsigned char * hashBuf,
00134 unsigned int hashLen,
00135 char * base64Signature,
00136 unsigned int sigLen);
00137
00139
00147
00155 virtual void loadPBase64BigNums(const char * b64, unsigned int len);
00156
00164 virtual void loadQBase64BigNums(const char * b64, unsigned int len);
00165
00173 virtual void loadGBase64BigNums(const char * b64, unsigned int len);
00174
00182 virtual void loadYBase64BigNums(const char * b64, unsigned int len);
00183
00191 virtual void loadJBase64BigNums(const char * b64, unsigned int len);
00192
00194
00197
00206 unsigned int getPBase64BigNums(char * b64, unsigned int len);
00207
00216 unsigned int getQBase64BigNums(char * b64, unsigned int len);
00217
00226 unsigned int getGBase64BigNums(char * b64, unsigned int len);
00227
00236 unsigned int getYBase64BigNums(char * b64, unsigned int len);
00237
00239
00240 private:
00241
00242 SECKEYPublicKey * mp_pubkey;
00243 SECKEYPrivateKey * mp_privkey;
00244
00245 SECItem * mp_P;
00246 SECItem * mp_Q;
00247 SECItem * mp_G;
00248 SECItem * mp_Y;
00249
00250
00251
00252 void importKey(void);
00253 void loadParamsFromKey(void);
00254
00255 };
00256
00257 #endif
00258 #endif