bool HashTransformation::TruncatedVerify(const byte *digestIn, size_t digestLength) { ThrowIfInvalidTruncatedSize(digestLength); SecByteBlock digest(digestLength); TruncatedFinal(digest, digestLength); return VerifyBufsEqual(digest, digestIn, digestLength); }
void Adler32::TruncatedFinal(byte *hash, size_t size) { ThrowIfInvalidTruncatedSize(size); switch (size) { default: hash[3] = byte(m_s1); // fall through case 3: hash[2] = byte(m_s1 >> 8); // fall through case 2: hash[1] = byte(m_s2); // fall through case 1: hash[0] = byte(m_s2 >> 8); // fall through case 0: ;; // fall through } Reset(); }
bool HashTransformation::TruncatedVerify(const byte *digestIn, unsigned int digestLength) { ThrowIfInvalidTruncatedSize(digestLength); SecByteBlock digest(digestLength); TruncatedFinal(digest, digestLength); return memcmp(digest, digestIn, digestLength) == 0; }
void SHA3::TruncatedFinal(byte *hash, size_t size) { ThrowIfInvalidTruncatedSize(size); m_state.BytePtr()[m_counter] ^= 1; m_state.BytePtr()[r()-1] ^= 0x80; KeccakF1600(m_state); memcpy(hash, m_state, size); Restart(); }
void CRC32C::TruncatedFinal(byte *hash, size_t size) { ThrowIfInvalidTruncatedSize(size); m_crc ^= CRC32_NEGL; for (size_t i=0; i<size; i++) hash[i] = GetCrcByte(i); Reset(); }
void CBC_MAC_Base::TruncatedFinal(byte *mac, size_t size) { ThrowIfInvalidTruncatedSize(size); if (m_counter) ProcessBuf(); memcpy(mac, m_reg, size); memset(m_reg, 0, AccessCipher().BlockSize()); }
void Keccak::TruncatedFinal(byte *hash, size_t size) { CRYPTOPP_ASSERT(hash != NULLPTR); ThrowIfInvalidTruncatedSize(size); m_state.BytePtr()[m_counter] ^= 1; m_state.BytePtr()[r()-1] ^= 0x80; KeccakF1600(m_state); memcpy(hash, m_state, size); Restart(); }
void SapphireHash::TruncatedFinal(byte *hash, unsigned int size) { ThrowIfInvalidTruncatedSize(size); for (int i=255; i>=0; i--) ProcessByte((byte) i); for (unsigned int j=0; j<size; j++) hash[j] = ProcessByte(0); Init(); }
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 Tiger::TruncatedFinal(byte *hash, unsigned int size) { ThrowIfInvalidTruncatedSize(size); PadLastBlock(56, 0x01); CorrectEndianess(m_data, m_data, 56); m_data[7] = GetBitCountLo(); Transform(m_digest, m_data); CorrectEndianess(m_digest, m_digest, DigestSize()); memcpy(hash, m_digest, size); Restart(); // reinit for next use }
void SHA3::TruncatedFinal(byte *hash, size_t size) { ThrowIfInvalidTruncatedSize(size); #if defined(CRYPTOPP_USE_FIPS_202_SHA3) m_state.BytePtr()[m_counter] ^= 0x06; #else m_state.BytePtr()[m_counter] ^= 1; #endif m_state.BytePtr()[r()-1] ^= 0x80; KeccakF1600(m_state); memcpy(hash, m_state, size); Restart(); }
void HMAC_Base::TruncatedFinal(byte *mac, unsigned int size) { ThrowIfInvalidTruncatedSize(size); HashTransformation &hash = AccessHash(); if (!m_innerHashKeyed) KeyInnerHash(); hash.Final(AccessInnerHash()); hash.Update(AccessOpad(), hash.BlockSize()); hash.Update(AccessInnerHash(), hash.DigestSize()); hash.TruncatedFinal(mac, size); m_innerHashKeyed = false; }
void MD2::TruncatedFinal(byte *hash, size_t size) { ThrowIfInvalidTruncatedSize(size); byte padding[16]; word32 padlen; unsigned int i; padlen= 16-m_count; for(i=0; i<padlen; i++) padding[i]=(byte)padlen; Update(padding, padlen); Update(m_C, 16); memcpy(hash, m_X, size); Init(); }
void Whirlpool::TruncatedFinal(byte *hash, size_t size) { ThrowIfInvalidTruncatedSize(size); PadLastBlock(32); CorrectEndianess(m_data, m_data, 32); m_data[m_data.size()-4] = 0; m_data[m_data.size()-3] = 0; m_data[m_data.size()-2] = GetBitCountHi(); m_data[m_data.size()-1] = GetBitCountLo(); Transform(m_digest, m_data); CorrectEndianess(m_digest, m_digest, DigestSize()); memcpy(hash, m_digest, size); Restart(); // 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 }
void Adler32::TruncatedFinal(byte *hash, unsigned int size) { ThrowIfInvalidTruncatedSize(size); switch (size) { default: hash[3] = byte(m_s1); case 3: hash[2] = byte(m_s1 >> 8); case 2: hash[1] = byte(m_s2); case 1: hash[0] = byte(m_s2 >> 8); case 0: ; } Reset(); }
void CMAC_Base::TruncatedFinal(byte *mac, size_t size) { ThrowIfInvalidTruncatedSize(size); BlockCipher &cipher = AccessCipher(); unsigned int blockSize = cipher.BlockSize(); if (m_counter < blockSize) { m_reg[m_counter] ^= 0x80; cipher.AdvancedProcessBlocks(m_reg, m_reg+2*blockSize, m_reg, blockSize, BlockTransformation::BT_DontIncrementInOutPointers|BlockTransformation::BT_XorInput); } else cipher.AdvancedProcessBlocks(m_reg, m_reg+blockSize, m_reg, blockSize, BlockTransformation::BT_DontIncrementInOutPointers|BlockTransformation::BT_XorInput); memcpy(mac, m_reg, size); m_counter = 0; memset(m_reg, 0, blockSize); }
void MD5MAC_Base::TruncatedFinal(byte *hash, size_t size) { ThrowIfInvalidTruncatedSize(size); PadLastBlock(56); CorrectEndianess(m_data, m_data, 56); m_data[14] = GetBitCountLo(); m_data[15] = GetBitCountHi(); Transform(m_digest, m_data, m_key+4); unsigned i; for (i=0; i<4; i++) m_data[i] = m_key[8+i]; for (i=0; i<12; i++) m_data[i+4] = T[i] ^ m_key[8+i%4]; Transform(m_digest, m_data, m_key+4); CorrectEndianess(m_digest, m_digest, DIGESTSIZE); memcpy(hash, m_digest, size); Restart(); // reinit for next use }