void HAVAL::HashBlock(const word32 *input) { #ifdef IS_LITTLE_ENDIAN vTransform(digest, input); #else byteReverse(data.ptr, input, (unsigned int)DATASIZE); vTransform(digest, data); #endif }
void PanamaHash<B>::TruncatedFinal(byte *hash, unsigned int size) { ThrowIfInvalidTruncatedSize(size); PadLastBlock(BLOCKSIZE, 0x01); vTransform(m_data); Iterate(32); // pull ConditionalByteReverse(B::ToEnum(), m_state+9, m_state+9, DIGESTSIZE); memcpy(hash, m_state+9, size); Restart(); // reinit for next use }
void HAVAL::Final (byte *hash) { PadLastBlock(118, 1); // first byte of padding for HAVAL is 1 instead of 0x80 CorrectEndianess(data, data, 120); data[29] &= 0xffff; data[29] |= ((word32)digestSize<<25) | ((word32)pass<<19) | ((word32)VERSION<<16); data[30] = countLo; data[31] = countHi; vTransform(data); Tailor(digestSize*8); CorrectEndianess(digest, digest, digestSize); memcpy(hash, digest, digestSize); Reinit(); // reinit for next use }
void HAVAL::TruncatedFinal(byte *hash, unsigned int size) { ThrowIfInvalidTruncatedSize(size); PadLastBlock(118, 1); // first byte of padding for HAVAL is 1 instead of 0x80 CorrectEndianess(m_data, m_data, 120); m_data[29] &= 0xffff; m_data[29] |= ((word32)digestSize<<25) | ((word32)pass<<19) | ((word32)HAVAL_VERSION<<16); m_data[30] = GetBitCountLo(); m_data[31] = GetBitCountHi(); vTransform(m_data); Tailor(digestSize*8); CorrectEndianess(m_digest, m_digest, digestSize); memcpy(hash, m_digest, size); Restart(); // reinit for next use }