diff options
author | weidai <weidai11@users.noreply.github.com> | 2003-04-16 00:48:47 +0000 |
---|---|---|
committer | weidai <weidai11@users.noreply.github.com> | 2003-04-16 00:48:47 +0000 |
commit | 15ff20029891b78641bc0027c95a033c3f6dc592 (patch) | |
tree | 0fd99a2b6f4a82c1b57eb58c91904c2e26cfa911 /ttmac.h | |
parent | 397f566bf7648470ef40f8fb4dc25c3f3b269203 (diff) | |
download | cryptopp-git-15ff20029891b78641bc0027c95a033c3f6dc592.tar.gz |
add new algorithms (Kevin Springle)
Diffstat (limited to 'ttmac.h')
-rw-r--r-- | ttmac.h | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/ttmac.h b/ttmac.h new file mode 100644 index 00000000..7ca7ecfa --- /dev/null +++ b/ttmac.h @@ -0,0 +1,38 @@ +// ttmac.h - written and placed in the public domain by Kevin Springle + +#ifndef CRYPTOPP_TTMAC_H +#define CRYPTOPP_TTMAC_H + +#include "seckey.h" +#include "iterhash.h" + +NAMESPACE_BEGIN(CryptoPP) +//! <a href="http://www.eskimo.com/~weidai/scan-mirror/mac.html#Two-Track-MAC">Two-Track-MAC</a> +/*! 160 Bit MAC with 160 Bit Key */ + +class TTMAC_Base : public FixedKeyLength<20>, public IteratedHash<word32, LittleEndian, 64, MessageAuthenticationCode> +{ +public: + static std::string StaticAlgorithmName() {return std::string("Two-Track-MAC");} + enum {DIGESTSIZE=20}; + + TTMAC_Base() : IteratedHash<word32, LittleEndian, 64, MessageAuthenticationCode>(DIGESTSIZE*2) {} + + unsigned int DigestSize() const {return DIGESTSIZE;}; + void UncheckedSetKey(const byte *userKey, unsigned int keylength); + void TruncatedFinal(byte *mac, unsigned int size); + +protected: + static void Transform (word32 *digest, const word32 *X, bool last); + void vTransform(const word32 *data) {Transform(m_digest, data, false);} + void Init(); + + FixedSizeSecBlock<word32, DIGESTSIZE> m_key; +}; + +//! <a href="http://www.weidai.com/scan-mirror/mac.html#TTMAC">Two-Track-MAC</a> +typedef MessageAuthenticationCodeTemplate<TTMAC_Base> TTMAC; + +NAMESPACE_END + +#endif |