Thanks.
My solution now is:
// step one: convert signature format from format DER to P1363
// get P1363 signature length
int new_siglen = DSA::Verifier(p, q, g, y).SignatureLength();
byte new_sig[new_siglen];
try {
DSAConvertSignatureFormat(new_sig, new_siglen, DSA_P1363,
m_signature, m_siglen, DSA_DER);
}
catch (...) {
return false; // invalid signature
}
// step two: verify the signature
return GDSA<SHA1>::Verifier(p, q, g, y).VerifyMessage((byte*) m_body,
strlen(m_body), new_sig, new_siglen);
By the way, did anybody successfully build v5.1 using GCC 3.2 on Linux? I could
compile but when I linked I got a whole bunch of "multiple of definitions" of really
long names. Here are some examples:
./libcryptopp.a(tea.o)(.bss._ZZN8CryptoPP8GetBlockImNS_10EnumToTypeINS_9ByteOrderELi1EEELb1EEclImEERS4_RT_E19cryptopp_assert_583+0x0):
multiple definition of `CryptoPP::GetBlock<unsigned long,
CryptoPP::EnumToType<CryptoPP::ByteOrder, (int)1>, (bool)1>&
CryptoPP::GetBlock<unsigned long, CryptoPP::EnumToType<CryptoPP::ByteOrder, (int)1>,
(bool)1>::operator()<unsigned long>(unsigned long&)::cryptopp_assert_583'
./libcryptopp.a(3way.o)(.bss._ZZN8CryptoPP8GetBlockImNS_10EnumToTypeINS_9ByteOrderELi1EEELb1EEclImEERS4_RT_E19cryptopp_assert_583+0x0):
first defined here
./libcryptopp.a(twofish.o)(.bss._ZZN8CryptoPP8GetBlockImNS_10EnumToTypeINS_9ByteOrderELi0EEELb1EEclImEERS4_RT_E19cryptopp_assert_583+0x0):
multiple definition of `CryptoPP::GetBlock<unsigned long,
CryptoPP::EnumToType<CryptoPP::ByteOrder, (int)0>, (bool)1>&
CryptoPP::GetBlock<unsigned long, CryptoPP::EnumToType<CryptoPP::ByteOrder, (int)0>,
(bool)1>::operator()<unsigned long>(unsigned long&)::cryptopp_assert_583'
./libcryptopp.a(3way.o)(.bss._ZZN8CryptoPP8GetBlockImNS_10EnumToTypeINS_9ByteOrderELi0EEELb1EEclImEERS4_RT_E19cryptopp_assert_583+0x0):
first defined here
collect2: ld returned 1 exit status
make: *** [cryptest.exe] Error 1
But I could successfully compile and link v5.1 on SunOS using GCC 3.2.
Any Ideas?
-----Original Message-----
From: Wei Dai [mailto:[EMAIL PROTECTED]
Sent: Thursday, May 01, 2003 4:04 PM
To: [EMAIL PROTECTED]
Subject: Re: How to replace GDSADigestVerifier when upgrading from 4.1
to 5.0
On Tue, Apr 29, 2003 at 12:15:12PM -0700, Yanmu Huang wrote:
> // calculate digest
> byte digest[20];
> SHA sha1;
> sha1.CalculateDigest((byte*) digest, (byte*) m_body, strlen(m_body));
>
> // verify the signature
> GDSADigestVerifier verifier(p, q, g, y); // I don't
> know how to replace these two lines
> return verifier.VerifyDigest(digest, sizeof(digest), new_sig);
replace the above with:
GDSADigestVerifier verifier(p, q, g, y);
return verifier.VerifyMessage((byte*)m_body, strlen(m_body), new_sig,
new_siglen);