Update comments in IterHashBase and friends
We also switched to "IsAligned<HashWordType>(input)". Using word64 was due to debug testing on Solaris (the alignment check is needed). Hard coding word64 should not have been checked in.pull/696/head
parent
61f1456a5a
commit
f1192fd044
12
iterhash.cpp
12
iterhash.cpp
|
|
@ -96,16 +96,17 @@ template <class T, class BASE> size_t IteratedHashBase<T, BASE>::HashMultipleBlo
|
||||||
bool noReverse = NativeByteOrderIs(this->GetByteOrder());
|
bool noReverse = NativeByteOrderIs(this->GetByteOrder());
|
||||||
T* dataBuf = this->DataBuf();
|
T* dataBuf = this->DataBuf();
|
||||||
|
|
||||||
// IteratedHashBase Update calls this with an aligned input,
|
// Alignment checks due to http://github.com/weidai11/cryptopp/issues/690.
|
||||||
// but HashBlock may call it with an unaligned buffer.
|
// Sparc requires 8-byte aligned buffer when HashWordType is word64.
|
||||||
// Alignment checks due to Issues 690/
|
// We also had to provide a GetAlignmentOf specialization for word64 on Sparc.
|
||||||
|
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
if (noReverse)
|
if (noReverse)
|
||||||
{
|
{
|
||||||
if (IsAligned<word64>(input))
|
if (IsAligned<HashWordType>(input))
|
||||||
{
|
{
|
||||||
|
// Sparc bus error with non-aligned input.
|
||||||
this->HashEndianCorrectedBlock(input);
|
this->HashEndianCorrectedBlock(input);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
@ -116,8 +117,9 @@ template <class T, class BASE> size_t IteratedHashBase<T, BASE>::HashMultipleBlo
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (IsAligned<word64>(input))
|
if (IsAligned<HashWordType>(input))
|
||||||
{
|
{
|
||||||
|
// Sparc bus error with non-aligned input.
|
||||||
ByteReverse(dataBuf, input, blockSize);
|
ByteReverse(dataBuf, input, blockSize);
|
||||||
this->HashEndianCorrectedBlock(dataBuf);
|
this->HashEndianCorrectedBlock(dataBuf);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -16,10 +16,6 @@
|
||||||
# endif
|
# endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// GCC cast warning
|
|
||||||
#define HashWordPtr(x) ((HashWordType*)(void*)(x))
|
|
||||||
#define ConstHashWordPtr(x) ((const HashWordType*)(const void*)(x))
|
|
||||||
|
|
||||||
NAMESPACE_BEGIN(CryptoPP)
|
NAMESPACE_BEGIN(CryptoPP)
|
||||||
|
|
||||||
/// \brief Exception thrown when trying to hash more data than is allowed by a hash function
|
/// \brief Exception thrown when trying to hash more data than is allowed by a hash function
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue