fix bug in UnalignedPutWordNonTemplate
parent
a1e8a5f05c
commit
c992330622
84
misc.h
84
misc.h
|
|
@ -847,32 +847,61 @@ inline void UnalignedPutWordNonTemplate(ByteOrder order, byte *block, byte value
|
|||
inline void UnalignedPutWordNonTemplate(ByteOrder order, byte *block, word16 value, const byte *xorBlock)
|
||||
{
|
||||
if (order == BIG_ENDIAN_ORDER)
|
||||
{
|
||||
if (xorBlock)
|
||||
{
|
||||
block[0] = xorBlock[0] ^ CRYPTOPP_GET_BYTE_AS_BYTE(value, 1);
|
||||
block[1] = xorBlock[1] ^ CRYPTOPP_GET_BYTE_AS_BYTE(value, 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
block[0] = CRYPTOPP_GET_BYTE_AS_BYTE(value, 1);
|
||||
block[1] = CRYPTOPP_GET_BYTE_AS_BYTE(value, 0);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (xorBlock)
|
||||
{
|
||||
block[0] = xorBlock[0] ^ CRYPTOPP_GET_BYTE_AS_BYTE(value, 0);
|
||||
block[1] = xorBlock[1] ^ CRYPTOPP_GET_BYTE_AS_BYTE(value, 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
block[0] = CRYPTOPP_GET_BYTE_AS_BYTE(value, 0);
|
||||
block[1] = CRYPTOPP_GET_BYTE_AS_BYTE(value, 1);
|
||||
}
|
||||
|
||||
if (xorBlock)
|
||||
{
|
||||
block[0] ^= xorBlock[0];
|
||||
block[1] ^= xorBlock[1];
|
||||
}
|
||||
}
|
||||
|
||||
inline void UnalignedPutWordNonTemplate(ByteOrder order, byte *block, word32 value, const byte *xorBlock)
|
||||
{
|
||||
if (order == BIG_ENDIAN_ORDER)
|
||||
{
|
||||
if (xorBlock)
|
||||
{
|
||||
block[0] = xorBlock[0] ^ CRYPTOPP_GET_BYTE_AS_BYTE(value, 3);
|
||||
block[1] = xorBlock[1] ^ CRYPTOPP_GET_BYTE_AS_BYTE(value, 2);
|
||||
block[2] = xorBlock[2] ^ CRYPTOPP_GET_BYTE_AS_BYTE(value, 1);
|
||||
block[3] = xorBlock[3] ^ CRYPTOPP_GET_BYTE_AS_BYTE(value, 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
block[0] = CRYPTOPP_GET_BYTE_AS_BYTE(value, 3);
|
||||
block[1] = CRYPTOPP_GET_BYTE_AS_BYTE(value, 2);
|
||||
block[2] = CRYPTOPP_GET_BYTE_AS_BYTE(value, 1);
|
||||
block[3] = CRYPTOPP_GET_BYTE_AS_BYTE(value, 0);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (xorBlock)
|
||||
{
|
||||
block[0] = xorBlock[0] ^ CRYPTOPP_GET_BYTE_AS_BYTE(value, 0);
|
||||
block[1] = xorBlock[1] ^ CRYPTOPP_GET_BYTE_AS_BYTE(value, 1);
|
||||
block[2] = xorBlock[2] ^ CRYPTOPP_GET_BYTE_AS_BYTE(value, 2);
|
||||
block[3] = xorBlock[3] ^ CRYPTOPP_GET_BYTE_AS_BYTE(value, 3);
|
||||
}
|
||||
else
|
||||
{
|
||||
block[0] = CRYPTOPP_GET_BYTE_AS_BYTE(value, 0);
|
||||
|
|
@ -880,13 +909,6 @@ inline void UnalignedPutWordNonTemplate(ByteOrder order, byte *block, word32 val
|
|||
block[2] = CRYPTOPP_GET_BYTE_AS_BYTE(value, 2);
|
||||
block[3] = CRYPTOPP_GET_BYTE_AS_BYTE(value, 3);
|
||||
}
|
||||
|
||||
if (xorBlock)
|
||||
{
|
||||
block[0] ^= xorBlock[0];
|
||||
block[1] ^= xorBlock[1];
|
||||
block[2] ^= xorBlock[2];
|
||||
block[3] ^= xorBlock[3];
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -894,6 +916,19 @@ inline void UnalignedPutWordNonTemplate(ByteOrder order, byte *block, word32 val
|
|||
inline void UnalignedPutWordNonTemplate(ByteOrder order, byte *block, word64 value, const byte *xorBlock)
|
||||
{
|
||||
if (order == BIG_ENDIAN_ORDER)
|
||||
{
|
||||
if (xorBlock)
|
||||
{
|
||||
block[0] = xorBlock[0] ^ CRYPTOPP_GET_BYTE_AS_BYTE(value, 7);
|
||||
block[1] = xorBlock[1] ^ CRYPTOPP_GET_BYTE_AS_BYTE(value, 6);
|
||||
block[2] = xorBlock[2] ^ CRYPTOPP_GET_BYTE_AS_BYTE(value, 5);
|
||||
block[3] = xorBlock[3] ^ CRYPTOPP_GET_BYTE_AS_BYTE(value, 4);
|
||||
block[4] = xorBlock[4] ^ CRYPTOPP_GET_BYTE_AS_BYTE(value, 3);
|
||||
block[5] = xorBlock[5] ^ CRYPTOPP_GET_BYTE_AS_BYTE(value, 2);
|
||||
block[6] = xorBlock[6] ^ CRYPTOPP_GET_BYTE_AS_BYTE(value, 1);
|
||||
block[7] = xorBlock[7] ^ CRYPTOPP_GET_BYTE_AS_BYTE(value, 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
block[0] = CRYPTOPP_GET_BYTE_AS_BYTE(value, 7);
|
||||
block[1] = CRYPTOPP_GET_BYTE_AS_BYTE(value, 6);
|
||||
|
|
@ -904,6 +939,20 @@ inline void UnalignedPutWordNonTemplate(ByteOrder order, byte *block, word64 val
|
|||
block[6] = CRYPTOPP_GET_BYTE_AS_BYTE(value, 1);
|
||||
block[7] = CRYPTOPP_GET_BYTE_AS_BYTE(value, 0);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (xorBlock)
|
||||
{
|
||||
block[0] = xorBlock[0] ^ CRYPTOPP_GET_BYTE_AS_BYTE(value, 0);
|
||||
block[1] = xorBlock[1] ^ CRYPTOPP_GET_BYTE_AS_BYTE(value, 1);
|
||||
block[2] = xorBlock[2] ^ CRYPTOPP_GET_BYTE_AS_BYTE(value, 2);
|
||||
block[3] = xorBlock[3] ^ CRYPTOPP_GET_BYTE_AS_BYTE(value, 3);
|
||||
block[4] = xorBlock[4] ^ CRYPTOPP_GET_BYTE_AS_BYTE(value, 4);
|
||||
block[5] = xorBlock[5] ^ CRYPTOPP_GET_BYTE_AS_BYTE(value, 5);
|
||||
block[6] = xorBlock[6] ^ CRYPTOPP_GET_BYTE_AS_BYTE(value, 6);
|
||||
block[7] = xorBlock[7] ^ CRYPTOPP_GET_BYTE_AS_BYTE(value, 7);
|
||||
}
|
||||
else
|
||||
{
|
||||
block[0] = CRYPTOPP_GET_BYTE_AS_BYTE(value, 0);
|
||||
|
|
@ -915,17 +964,6 @@ inline void UnalignedPutWordNonTemplate(ByteOrder order, byte *block, word64 val
|
|||
block[6] = CRYPTOPP_GET_BYTE_AS_BYTE(value, 6);
|
||||
block[7] = CRYPTOPP_GET_BYTE_AS_BYTE(value, 7);
|
||||
}
|
||||
|
||||
if (xorBlock)
|
||||
{
|
||||
block[0] ^= xorBlock[0];
|
||||
block[1] ^= xorBlock[1];
|
||||
block[2] ^= xorBlock[2];
|
||||
block[3] ^= xorBlock[3];
|
||||
block[4] ^= xorBlock[4];
|
||||
block[5] ^= xorBlock[5];
|
||||
block[6] ^= xorBlock[6];
|
||||
block[7] ^= xorBlock[7];
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
|
|
|||
Loading…
Reference in New Issue