aboutsummaryrefslogtreecommitdiffstats
path: root/src/hash/md4_ia32
diff options
context:
space:
mode:
Diffstat (limited to 'src/hash/md4_ia32')
-rw-r--r--src/hash/md4_ia32/info.txt14
-rw-r--r--src/hash/md4_ia32/md4_ia32.cpp (renamed from src/hash/md4_ia32/md4.cpp)18
-rw-r--r--src/hash/md4_ia32/md4_ia32.h33
-rw-r--r--src/hash/md4_ia32/md4_ia32_imp.S (renamed from src/hash/md4_ia32/md4_ia32.S)4
4 files changed, 52 insertions, 17 deletions
diff --git a/src/hash/md4_ia32/info.txt b/src/hash/md4_ia32/info.txt
index 4a192cbc2..afc150768 100644
--- a/src/hash/md4_ia32/info.txt
+++ b/src/hash/md4_ia32/info.txt
@@ -1,17 +1,19 @@
-realname "MD4 (x86)"
+realname "MD4 (IA-32)"
-define MD4
+define MD4_IA32
-load_on requested
+load_on asm_ok
<add>
-md4_ia32.S
-md4.cpp
-md4.h
+md4_ia32_imp.S
+md4_ia32.cpp
+md4_ia32.h
</add>
<requires>
+asm_ia32
mdx_hash
+utils
</requires>
<arch>
diff --git a/src/hash/md4_ia32/md4.cpp b/src/hash/md4_ia32/md4_ia32.cpp
index 12466e86e..a34cbb3a6 100644
--- a/src/hash/md4_ia32/md4.cpp
+++ b/src/hash/md4_ia32/md4_ia32.cpp
@@ -1,36 +1,36 @@
/*************************************************
-* MD4 Source File *
+* MD4 (IA-32) Source File *
* (C) 1999-2007 Jack Lloyd *
*************************************************/
-#include <botan/md4.h>
+#include <botan/md4_ia32.h>
#include <botan/loadstor.h>
namespace Botan {
-extern "C" void botan_md4_core_asm(u32bit[4], const byte[64], u32bit[16]);
+extern "C" void botan_md4_ia32_compress(u32bit[4], const byte[64], u32bit[16]);
/*************************************************
* MD4 Compression Function *
*************************************************/
-void MD4::hash(const byte input[])
+void MD4_IA32::hash(const byte input[])
{
- md4_core(digest, input, M);
+ botan_md4_ia32_compress(digest, input, M);
}
/*************************************************
* Copy out the digest *
*************************************************/
-void MD4::copy_out(byte output[])
+void MD4_IA32::copy_out(byte output[])
{
- for(u32bit j = 0; j != OUTPUT_LENGTH; ++j)
- output[j] = get_byte(3 - (j % 4), digest[j/4]);
+ for(u32bit j = 0; j != OUTPUT_LENGTH; j += 4)
+ store_le(digest[j/4], output + j);
}
/*************************************************
* Clear memory of sensitive data *
*************************************************/
-void MD4::clear() throw()
+void MD4_IA32::clear() throw()
{
MDx_HashFunction::clear();
M.clear();
diff --git a/src/hash/md4_ia32/md4_ia32.h b/src/hash/md4_ia32/md4_ia32.h
new file mode 100644
index 000000000..c6640435e
--- /dev/null
+++ b/src/hash/md4_ia32/md4_ia32.h
@@ -0,0 +1,33 @@
+/*************************************************
+* MD4 (IA-32) Header File *
+* (C) 1999-2007 Jack Lloyd *
+*************************************************/
+
+#ifndef BOTAN_MD4_IA32_H__
+#define BOTAN_MD4_IA32_H__
+
+#include <botan/mdx_hash.h>
+
+namespace Botan {
+
+/*************************************************
+* MD4 *
+*************************************************/
+class BOTAN_DLL MD4_IA32 : public MDx_HashFunction
+ {
+ 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;
+ };
+
+}
+
+#endif
diff --git a/src/hash/md4_ia32/md4_ia32.S b/src/hash/md4_ia32/md4_ia32_imp.S
index 410c540e9..9b728c73d 100644
--- a/src/hash/md4_ia32/md4_ia32.S
+++ b/src/hash/md4_ia32/md4_ia32_imp.S
@@ -7,7 +7,7 @@
START_LISTING(md4_ia32.S)
-START_FUNCTION(botan_md4_core_asm)
+START_FUNCTION(botan_md4_ia32_compress)
SPILL_REGS()
#define PUSHED 4
@@ -132,4 +132,4 @@ LOOP_UNTIL_EQ(ESI, 16, .LOAD_INPUT)
ADD(ARRAY4(EBP, 3), EDX)
RESTORE_REGS()
-END_FUNCTION(botan_md4_core_asm)
+END_FUNCTION(botan_md4_ia32_compress)