I've made a little progress.  Instead of trying to upgrade to 5.2, I
tried 4.2 instead.  This was much more obvious.  In this case the
classes I was looking for are "NRDigestVerifier" and "NRDigestSigner".
In these two classes the accessor functions have been renamed from

GetPrime()
GetParameterQ()
GetParameterG()
GetParameterY()
GetParameterX()

to

GetModulus()
GetSubgroupSize()
GetGenerator()
GetPublicResidue()
GetPrivateExponent()

When I make those changes, everything works great.

But now my challenge is that the two classes NRDigestVerifier and
NRDigestSigner disappear from crypto++ in version 5.0.  It looks like
I'm supposes to use something along the lines of "NR<SHA>::Signer" and
"NR<SHA>::Verifier".  But those classes take different arguments to
their constructors, and don't have the same accessors.

Help?




-----Original Message-----
From: Bill Shanahan [mailto:[EMAIL PROTECTED] 
Sent: Friday, October 07, 2005 1:46 PM
To: [email protected]
Subject: Upgrading ElGamalSig... functions

The crypto++ library that our software links with is, well,
embarrassingly old -- 2.3.  We are trying to fix that.  The main problem
I am having right now is that I can't figure out how to duplicate the
functionality of the ElGamalSigPrivateKey and ElGamalSigPublicKey
classes.  Specifically, we have been constructing them like

ElGamalSigPrivateKey:
mpPrivateKey = new ElGamalSigPrivateKey( GetRNG(), mKeyBits );

ElGamalSigPublicKey:
mpPublicKey = new ElGamalSigPublicKey(*mpPrivateKey );

And serializing them (separately) like

ElGamalSigPrivateKey:

p = mpPrivateKey->GetPrime();
q = mpPrivateKey->GetParameterQ();
g = mpPrivateKey->GetParameterG();
y = mpPrivateKey->GetParameterY();
x = mpPrivateKey->GetParameterX();

ElGamalSigPublicKey:
p = mpPublicKey->GetPrime();
q = mpPublicKey->GetParameterQ();
g = mpPublicKey->GetParameterG();
y = mpPublicKey->GetParameterY();

And finally reconstructing them like

new ElGamalSigPrivateKey( p, q, g, y, x );

new ElGamalSigPublicKey( p, q, g, y );

In order to maintain backward compatibility, I need to be able
accomplish the equivalent with the 5.2 version of crypto++.  But I
haven't been able to figure out what classes to instantiate to do that.
If somebody could give me some guidance, I will probably be able to
figure out the ElGamalCrypto... stuff myself.  Thanks for your help.





Reply via email to