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);

Reply via email to