Core/Common: fix a bug in BigNumber::AsByteArray that was causing incorrect output in 1/256 cases with explicit minSize (iff MSB zero)

This commit is contained in:
Treeston
2019-08-06 11:24:48 +02:00
parent 4fcb322010
commit b2b9880377

View File

@@ -184,11 +184,11 @@ std::unique_ptr<uint8[]> BigNumber::AsByteArray(int32 minSize, bool littleEndian
if (length > numBytes)
memset((void*)array, 0, length);
BN_bn2bin(_bn, (unsigned char *)array);
BN_bn2bin(_bn, array + (length-numBytes));
// openssl's BN stores data internally in big endian format, reverse if little endian desired
if (littleEndian)
std::reverse(array, array + numBytes);
std::reverse(array, array + length);
std::unique_ptr<uint8[]> ret(array);
return ret;