diff options
author | lloyd <[email protected]> | 2008-09-29 20:30:20 +0000 |
---|---|---|
committer | lloyd <[email protected]> | 2008-09-29 20:30:20 +0000 |
commit | 5a2001846f4470d90dff2a72896e1f19630e4fc2 (patch) | |
tree | 6a56108106dbf752bd120edcb1b03d2d845bd13e /src/hash/md4_ia32 | |
parent | a3366dc421c4ef9f802009a667ddcb8a9cd2c8a6 (diff) |
Derive the x86 assembly implementations of MD4, MD5, and Serpent from
the normal Botan base classes. This required making data members of
MD4, MD5, and Serpent protected rather than private, which is not very
good style IMO. On the other hand it allows for removing a bit of duplicated
code, and also has the nice effect that a pointer to a Serpent_IA32 can be
used right as a Serpent object, which makes sense anyway since they implement
the same algorithm. The C++ files in the *_ia32 modules are now simply hooks
between the virtual function call runtime and the assembly code.
Diffstat (limited to 'src/hash/md4_ia32')
-rw-r--r-- | src/hash/md4_ia32/info.txt | 3 | ||||
-rw-r--r-- | src/hash/md4_ia32/md4_ia32.cpp | 22 | ||||
-rw-r--r-- | src/hash/md4_ia32/md4_ia32.h | 11 |
3 files changed, 3 insertions, 33 deletions
diff --git a/src/hash/md4_ia32/info.txt b/src/hash/md4_ia32/info.txt index afc150768..b2ad76ca3 100644 --- a/src/hash/md4_ia32/info.txt +++ b/src/hash/md4_ia32/info.txt @@ -12,8 +12,7 @@ md4_ia32.h <requires> asm_ia32 -mdx_hash -utils +md4 </requires> <arch> diff --git a/src/hash/md4_ia32/md4_ia32.cpp b/src/hash/md4_ia32/md4_ia32.cpp index a34cbb3a6..1483d0e8f 100644 --- a/src/hash/md4_ia32/md4_ia32.cpp +++ b/src/hash/md4_ia32/md4_ia32.cpp @@ -18,26 +18,4 @@ void MD4_IA32::hash(const byte input[]) botan_md4_ia32_compress(digest, input, M); } -/************************************************* -* Copy out the digest * -*************************************************/ -void MD4_IA32::copy_out(byte output[]) - { - for(u32bit j = 0; j != OUTPUT_LENGTH; j += 4) - store_le(digest[j/4], output + j); - } - -/************************************************* -* Clear memory of sensitive data * -*************************************************/ -void MD4_IA32::clear() throw() - { - MDx_HashFunction::clear(); - M.clear(); - digest[0] = 0x67452301; - digest[1] = 0xEFCDAB89; - digest[2] = 0x98BADCFE; - digest[3] = 0x10325476; - } - } diff --git a/src/hash/md4_ia32/md4_ia32.h b/src/hash/md4_ia32/md4_ia32.h index c6640435e..94ee3b028 100644 --- a/src/hash/md4_ia32/md4_ia32.h +++ b/src/hash/md4_ia32/md4_ia32.h @@ -6,26 +6,19 @@ #ifndef BOTAN_MD4_IA32_H__ #define BOTAN_MD4_IA32_H__ -#include <botan/mdx_hash.h> +#include <botan/md4.h> namespace Botan { /************************************************* * MD4 * *************************************************/ -class BOTAN_DLL MD4_IA32 : public MDx_HashFunction +class BOTAN_DLL MD4_IA32 : public MD4 { public: - void clear() throw(); - std::string name() const { return "MD4"; } HashFunction* clone() const { return new MD4_IA32; } - MD4_IA32() : MDx_HashFunction(16, 64, false, true) { clear(); } private: void hash(const byte[]); - void copy_out(byte[]); - - SecureBuffer<u32bit, 48> M; - SecureBuffer<u32bit, 4> digest; }; } |