aboutsummaryrefslogtreecommitdiffstats
path: root/src/hash/sha1_ia32
diff options
context:
space:
mode:
Diffstat (limited to 'src/hash/sha1_ia32')
-rw-r--r--src/hash/sha1_ia32/info.txt14
-rw-r--r--src/hash/sha1_ia32/sha1_ia32.cpp (renamed from src/hash/sha1_ia32/sha160.cpp)27
-rw-r--r--src/hash/sha1_ia32/sha1_ia32.h36
-rw-r--r--src/hash/sha1_ia32/sha1_ia32_imp.S (renamed from src/hash/sha1_ia32/sha1_ia32.S)6
4 files changed, 59 insertions, 24 deletions
diff --git a/src/hash/sha1_ia32/info.txt b/src/hash/sha1_ia32/info.txt
index c1a75fc55..ff8b66ddc 100644
--- a/src/hash/sha1_ia32/info.txt
+++ b/src/hash/sha1_ia32/info.txt
@@ -1,17 +1,19 @@
-realname "SHA-1 (x86)"
+realname "SHA-1 (IA-32)"
-define SHA1
+define SHA1_IA32
-load_on requested
+load_on auto
<add>
-sha1_ia32.S
-sha160.cpp
-sha160.h
+sha1_ia32_imp.S
+sha1_ia32.cpp
+sha1_ia32.h
</add>
<requires>
+asm_ia32
mdx_hash
+utils
</requires>
<arch>
diff --git a/src/hash/sha1_ia32/sha160.cpp b/src/hash/sha1_ia32/sha1_ia32.cpp
index 7725541d5..4e24b0793 100644
--- a/src/hash/sha1_ia32/sha160.cpp
+++ b/src/hash/sha1_ia32/sha1_ia32.cpp
@@ -1,27 +1,32 @@
/*************************************************
-* SHA-160 Source File *
+* SHA-160 (IA-32) Source File *
* (C) 1999-2007 Jack Lloyd *
*************************************************/
-#include <botan/sha160.h>
+#include <botan/sha1_ia32.h>
#include <botan/loadstor.h>
namespace Botan {
-extern "C" void botan_sha160_asm_ia32(u32bit[5], const byte[64], u32bit[81]);
+namespace {
+
+extern "C"
+void botan_sha160_ia32_compress(u32bit[5], const byte[64], u32bit[81]);
+
+}
/*************************************************
* SHA-160 Compression Function *
*************************************************/
-void SHA_160::hash(const byte input[])
+void SHA_160_IA32::hash(const byte input[])
{
- botan_sha160_asm_ia32(digest, input, W);
+ botan_sha160_ia32_compress(digest, input, W);
}
/*************************************************
* Copy out the digest *
*************************************************/
-void SHA_160::copy_out(byte output[])
+void SHA_160_IA32::copy_out(byte output[])
{
for(u32bit j = 0; j != OUTPUT_LENGTH; ++j)
output[j] = get_byte(j % 4, digest[j/4]);
@@ -30,7 +35,7 @@ void SHA_160::copy_out(byte output[])
/*************************************************
* Clear memory of sensitive data *
*************************************************/
-void SHA_160::clear() throw()
+void SHA_160_IA32::clear() throw()
{
MDx_HashFunction::clear();
W.clear();
@@ -41,12 +46,4 @@ void SHA_160::clear() throw()
digest[4] = 0xC3D2E1F0;
}
-/*************************************************
-* SHA_160 Constructor *
-*************************************************/
-SHA_160::SHA_160() : MDx_HashFunction(20, 64, true, true), W(81)
- {
- clear();
- }
-
}
diff --git a/src/hash/sha1_ia32/sha1_ia32.h b/src/hash/sha1_ia32/sha1_ia32.h
new file mode 100644
index 000000000..ab9dd8ac2
--- /dev/null
+++ b/src/hash/sha1_ia32/sha1_ia32.h
@@ -0,0 +1,36 @@
+/*************************************************
+* SHA-160 (IA-32) Header File *
+* (C) 1999-2007 Jack Lloyd *
+*************************************************/
+
+#ifndef BOTAN_SHA_160_IA32_H__
+#define BOTAN_SHA_160_IA32_H__
+
+#include <botan/mdx_hash.h>
+
+namespace Botan {
+
+/*************************************************
+* SHA-160 *
+*************************************************/
+class BOTAN_DLL SHA_160_IA32 : public MDx_HashFunction
+ {
+ public:
+ void clear() throw();
+ std::string name() const { return "SHA-160"; }
+ HashFunction* clone() const { return new SHA_160_IA32; }
+
+ SHA_160_IA32() : MDx_HashFunction(20, 64, true, true) { clear(); }
+ private:
+ void hash(const byte[]);
+ void copy_out(byte[]);
+
+ SecureBuffer<u32bit, 5> digest;
+
+ // Note 81 instead of normal 80: IA-32 asm needs an extra temp
+ SecureBuffer<u32bit, 81> W;
+ };
+
+}
+
+#endif
diff --git a/src/hash/sha1_ia32/sha1_ia32.S b/src/hash/sha1_ia32/sha1_ia32_imp.S
index ddd72e316..b7f881383 100644
--- a/src/hash/sha1_ia32/sha1_ia32.S
+++ b/src/hash/sha1_ia32/sha1_ia32_imp.S
@@ -5,9 +5,9 @@
#include <botan/asm_macr.h>
-START_LISTING(sha1_asm.S)
+START_LISTING(sha1_ia32.S)
-START_FUNCTION(botan_sha160_core_asm)
+START_FUNCTION(botan_sha160_ia32_compress)
SPILL_REGS()
#define PUSHED 4
@@ -239,4 +239,4 @@ LOOP_UNTIL_EQ(ESI, 80, .EXPANSION)
ADD(ARRAY4(EBP, 4), ECX)
RESTORE_REGS()
-END_FUNCTION(botan_sha160_core_asm)
+END_FUNCTION(botan_sha160_ia32_compress)