Thanks for the report. I've checked in a fix.

----- Original Message ----- From: "Michael Mertens" <[EMAIL PROTECTED]>
To: <[email protected]>
Sent: Tuesday, March 14, 2006 10:45 AM
Subject: Interger::Encode (bug in CVS)


Hi,

there is a bug in the current CVS version in the Integer
encoding method.

| Integer::Power2(8*UnsignedMin(ByteCount(), outputLen)) + *this;
| (integer.cpp +3114)

It seems that UnsignedMax should be used.

The following code demonstrates the problem.

Greetings,
Michael

Wei: Thanks for pointing out that lword is unsigned. :-)



-- main.cpp

// output:
//
// out: -129.
// in:  127.

#include <iostream>

#include <crypto++/queue.h>
#include <crypto++/integer.h>

int main( int argc, char ** argv )
{
using namespace CryptoPP;
Integer i1 = -129;
ByteQueue bq;
i1.DEREncode(bq);

Integer i2;
i2.BERDecode(bq);

std::cout << "out: " << i1 << std::endl;
std::cout << "in:  " << i2 << std::endl;

return 0;
}


Reply via email to