diff options
author | watcherhd <watcherhd@e753b5eb-9565-29b2-b5c5-2cc6f99dfbcb> | 2011-04-21 14:14:52 +0000 |
---|---|---|
committer | watcherhd <watcherhd@e753b5eb-9565-29b2-b5c5-2cc6f99dfbcb> | 2011-04-21 14:14:52 +0000 |
commit | cb4a46e7fbe62d788e66ed6121c717a2d22a4d7c (patch) | |
tree | 30df260fdc5a1b5a7049c2f8cac8b7ef17513d6d /cryptopp/crypto/ttmac.h | |
parent | 19b6f534d2e784a1e120bf52c4aa07004798f473 (diff) |
svn.miranda.im is moving to a new home!
git-svn-id: http://miranda-plugins.googlecode.com/svn/trunk@7 e753b5eb-9565-29b2-b5c5-2cc6f99dfbcb
Diffstat (limited to 'cryptopp/crypto/ttmac.h')
-rw-r--r-- | cryptopp/crypto/ttmac.h | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/cryptopp/crypto/ttmac.h b/cryptopp/crypto/ttmac.h new file mode 100644 index 0000000..ce8d968 --- /dev/null +++ b/cryptopp/crypto/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)
+
+//! _
+class CRYPTOPP_NO_VTABLE TTMAC_Base : public FixedKeyLength<20>, public IteratedHash<word32, LittleEndian, 64, MessageAuthenticationCode>
+{
+public:
+ static std::string StaticAlgorithmName() {return std::string("Two-Track-MAC");}
+ CRYPTOPP_CONSTANT(DIGESTSIZE=20)
+
+ unsigned int DigestSize() const {return DIGESTSIZE;};
+ void UncheckedSetKey(const byte *userKey, unsigned int keylength, const NameValuePairs ¶ms);
+ void TruncatedFinal(byte *mac, size_t size);
+
+protected:
+ static void Transform (word32 *digest, const word32 *X, bool last);
+ void HashEndianCorrectedBlock(const word32 *data) {Transform(m_digest, data, false);}
+ void Init();
+ word32* StateBuf() {return m_digest;}
+
+ FixedSizeSecBlock<word32, 10> m_digest;
+ FixedSizeSecBlock<word32, 5> m_key;
+};
+
+//! <a href="http://www.weidai.com/scan-mirror/mac.html#TTMAC">Two-Track-MAC</a>
+/*! 160 Bit MAC with 160 Bit Key */
+DOCUMENTED_TYPEDEF(MessageAuthenticationCodeFinal<TTMAC_Base>, TTMAC)
+
+NAMESPACE_END
+
+#endif
|