diff options
Diffstat (limited to 'src/hash')
-rw-r--r-- | src/hash/md4_ia32/info.txt | 14 | ||||
-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.h | 33 | ||||
-rw-r--r-- | src/hash/md4_ia32/md4_ia32_imp.S (renamed from src/hash/md4_ia32/md4_ia32.S) | 4 | ||||
-rw-r--r-- | src/hash/md5_ia32/info.txt | 14 | ||||
-rw-r--r-- | src/hash/md5_ia32/md5_ia32.cpp (renamed from src/hash/md5_ia32/md5.cpp) | 23 | ||||
-rw-r--r-- | src/hash/md5_ia32/md5_ia32.h | 33 | ||||
-rw-r--r-- | src/hash/md5_ia32/md5_ia32_imp.S (renamed from src/hash/md5_ia32/md5_ia32.S) | 4 | ||||
-rw-r--r-- | src/hash/sha1_amd64/info.txt | 14 | ||||
-rw-r--r-- | src/hash/sha1_amd64/sha160.cpp | 52 | ||||
-rw-r--r-- | src/hash/sha1_amd64/sha1_amd64.cpp (renamed from src/hash/sha1_sse2/sha160.cpp) | 27 | ||||
-rw-r--r-- | src/hash/sha1_amd64/sha1_amd64.h | 34 | ||||
-rw-r--r-- | src/hash/sha1_amd64/sha1_amd64_imp.S (renamed from src/hash/sha1_amd64/sha1_asm.S) | 6 | ||||
-rw-r--r-- | src/hash/sha1_ia32/info.txt | 14 | ||||
-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.h | 36 | ||||
-rw-r--r-- | src/hash/sha1_ia32/sha1_ia32_imp.S (renamed from src/hash/sha1_ia32/sha1_ia32.S) | 6 | ||||
-rw-r--r-- | src/hash/sha1_sse2/info.txt | 15 | ||||
-rw-r--r-- | src/hash/sha1_sse2/sha1_sse2.cpp | 44 | ||||
-rw-r--r-- | src/hash/sha1_sse2/sha1_sse2.h (renamed from src/hash/sha1_sse2/sha160.h) | 11 | ||||
-rw-r--r-- | src/hash/sha1_sse2/sha1_sse2_imp.cpp (renamed from src/hash/sha1_sse2/sha1_sse.cpp) | 4 |
21 files changed, 289 insertions, 144 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) diff --git a/src/hash/md5_ia32/info.txt b/src/hash/md5_ia32/info.txt index 566b6a0d4..652b50a16 100644 --- a/src/hash/md5_ia32/info.txt +++ b/src/hash/md5_ia32/info.txt @@ -1,17 +1,19 @@ -realname "MD5 (x86)" +realname "MD5 (IA-32)" -define MD5 +define MD5_IA32 -load_on requested +load_on asm_ok <add> -md5_ia32.S -md5.cpp -md5.h +md5_ia32_imp.S +md5_ia32.cpp +md5_ia32.h </add> <requires> +asm_ia32 mdx_hash +utils </requires> <arch> diff --git a/src/hash/md5_ia32/md5.cpp b/src/hash/md5_ia32/md5_ia32.cpp index 04e7673c1..b95eb0c56 100644 --- a/src/hash/md5_ia32/md5.cpp +++ b/src/hash/md5_ia32/md5_ia32.cpp @@ -1,36 +1,41 @@ /************************************************* -* MD5 Source File * +* MD5 (IA-32) Source File * * (C) 1999-2007 Jack Lloyd * *************************************************/ -#include <botan/md5.h> +#include <botan/md5_ia32.h> #include <botan/loadstor.h> namespace Botan { -extern "C" void botan_md5_core_asm(u32bit[4], const byte[64], u32bit[16]); +namespace { + +extern "C" +void botan_md5_ia32_compress(u32bit[4], const byte[64], u32bit[16]); + +} /************************************************* * MD5 Compression Function * *************************************************/ -void MD5::hash(const byte input[]) +void MD5_IA32::hash(const byte input[]) { - md5_core(digest, input, M); + botan_md5_ia32_compress(digest, input, M); } /************************************************* * Copy out the digest * *************************************************/ -void MD5::copy_out(byte output[]) +void MD5_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 MD5::clear() throw() +void MD5_IA32::clear() throw() { MDx_HashFunction::clear(); M.clear(); diff --git a/src/hash/md5_ia32/md5_ia32.h b/src/hash/md5_ia32/md5_ia32.h new file mode 100644 index 000000000..cf5038c1c --- /dev/null +++ b/src/hash/md5_ia32/md5_ia32.h @@ -0,0 +1,33 @@ +/************************************************* +* MD5 (IA-32) Header File * +* (C) 1999-2007 Jack Lloyd * +*************************************************/ + +#ifndef BOTAN_MD5_IA32_H__ +#define BOTAN_MD5_IA32_H__ + +#include <botan/mdx_hash.h> + +namespace Botan { + +/************************************************* +* MD5 * +*************************************************/ +class BOTAN_DLL MD5_IA32 : public MDx_HashFunction + { + public: + void clear() throw(); + std::string name() const { return "MD5"; } + HashFunction* clone() const { return new MD5_IA32; } + MD5_IA32() : MDx_HashFunction(16, 64, false, true) { clear(); } + private: + void hash(const byte[]); + void copy_out(byte[]); + + SecureBuffer<u32bit, 16> M; + SecureBuffer<u32bit, 4> digest; + }; + +} + +#endif diff --git a/src/hash/md5_ia32/md5_ia32.S b/src/hash/md5_ia32/md5_ia32_imp.S index 8e1ec2e79..7f9268a1e 100644 --- a/src/hash/md5_ia32/md5_ia32.S +++ b/src/hash/md5_ia32/md5_ia32_imp.S @@ -7,7 +7,7 @@ START_LISTING(md5_ia32.S) -START_FUNCTION(botan_md5_core_asm) +START_FUNCTION(botan_md5_ia32_compress) SPILL_REGS() #define PUSHED 4 @@ -161,4 +161,4 @@ LOOP_UNTIL_EQ(ESI, 16, .LOAD_INPUT) ADD(ARRAY4(EBP, 3), EDX) RESTORE_REGS() -END_FUNCTION(botan_md5_core_asm) +END_FUNCTION(botan_md5_ia32_compress) diff --git a/src/hash/sha1_amd64/info.txt b/src/hash/sha1_amd64/info.txt index 405b78343..400752b28 100644 --- a/src/hash/sha1_amd64/info.txt +++ b/src/hash/sha1_amd64/info.txt @@ -1,13 +1,19 @@ realname "SHA-1 (x86-64 assembler)" -load_on request +load_on auto <add> -sha160.cpp -asm_macr.h -sha1_asm.S +sha1_amd64_imp.S +sha1_amd64.cpp +sha1_amd64.h </add> +<requires> +asm_amd64 +mdx_hash +utils +</requires> + <arch> amd64 </arch> diff --git a/src/hash/sha1_amd64/sha160.cpp b/src/hash/sha1_amd64/sha160.cpp deleted file mode 100644 index c7fbea25a..000000000 --- a/src/hash/sha1_amd64/sha160.cpp +++ /dev/null @@ -1,52 +0,0 @@ -/************************************************* -* SHA-160 Source File * -* (C) 1999-2007 Jack Lloyd * -*************************************************/ - -#include <botan/sha160.h> -#include <botan/loadstor.h> - -namespace Botan { - -extern "C" void botan_sha160_core_asm(u32bit[5], const byte[64], u32bit[80]); - -/************************************************* -* SHA-160 Compression Function * -*************************************************/ -void SHA_160::hash(const byte input[]) - { - botan_sha160_asm_amd64(digest, input, W); - } - -/************************************************* -* Copy out the digest * -*************************************************/ -void SHA_160::copy_out(byte output[]) - { - for(u32bit j = 0; j != OUTPUT_LENGTH; ++j) - output[j] = get_byte(j % 4, digest[j/4]); - } - -/************************************************* -* Clear memory of sensitive data * -*************************************************/ -void SHA_160::clear() throw() - { - MDx_HashFunction::clear(); - W.clear(); - digest[0] = 0x67452301; - digest[1] = 0xEFCDAB89; - digest[2] = 0x98BADCFE; - digest[3] = 0x10325476; - digest[4] = 0xC3D2E1F0; - } - -/************************************************* -* SHA_160 Constructor * -*************************************************/ -SHA_160::SHA_160() : MDx_HashFunction(20, 64, true, true), W(80) - { - clear(); - } - -} diff --git a/src/hash/sha1_sse2/sha160.cpp b/src/hash/sha1_amd64/sha1_amd64.cpp index dfb5fdfe5..1c780a9c1 100644 --- a/src/hash/sha1_sse2/sha160.cpp +++ b/src/hash/sha1_amd64/sha1_amd64.cpp @@ -3,26 +3,30 @@ * (C) 1999-2007 Jack Lloyd * *************************************************/ -#include <botan/sha160.h> +#include <botan/sha1_amd64.h> #include <botan/loadstor.h> -#include <botan/bit_ops.h> namespace Botan { -extern "C" void botan_sha1_sse(u32bit[5], const byte[64]); +namespace { + +extern "C" +void botan_sha160_amd64_compress(u32bit[5], const byte[64], u32bit[80]); + +} /************************************************* * SHA-160 Compression Function * *************************************************/ -void SHA_160::hash(const byte input[]) +void SHA_160_AMD64::hash(const byte input[]) { - botan_sha1_sse(digest, input); + botan_sha160_amd64_compress(digest, input, W); } /************************************************* * Copy out the digest * *************************************************/ -void SHA_160::copy_out(byte output[]) +void SHA_160_AMD64::copy_out(byte output[]) { for(u32bit j = 0; j != OUTPUT_LENGTH; ++j) output[j] = get_byte(j % 4, digest[j/4]); @@ -31,9 +35,10 @@ void SHA_160::copy_out(byte output[]) /************************************************* * Clear memory of sensitive data * *************************************************/ -void SHA_160::clear() throw() +void SHA_160_AMD64::clear() throw() { MDx_HashFunction::clear(); + W.clear(); digest[0] = 0x67452301; digest[1] = 0xEFCDAB89; digest[2] = 0x98BADCFE; @@ -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) - { - clear(); - } - } diff --git a/src/hash/sha1_amd64/sha1_amd64.h b/src/hash/sha1_amd64/sha1_amd64.h new file mode 100644 index 000000000..91cbc8293 --- /dev/null +++ b/src/hash/sha1_amd64/sha1_amd64.h @@ -0,0 +1,34 @@ +/************************************************* +* SHA-160 (x86-64) Header File * +* (C) 1999-2007 Jack Lloyd * +*************************************************/ + +#ifndef BOTAN_SHA_160_AMD64_H__ +#define BOTAN_SHA_160_AMD64_H__ + +#include <botan/mdx_hash.h> + +namespace Botan { + +/************************************************* +* SHA-160 * +*************************************************/ +class BOTAN_DLL SHA_160_AMD64 : public MDx_HashFunction + { + public: + void clear() throw(); + std::string name() const { return "SHA-160"; } + HashFunction* clone() const { return new SHA_160_AMD64; } + + SHA_160_AMD64() : MDx_HashFunction(20, 64, true, true) { clear(); } + private: + void hash(const byte[]); + void copy_out(byte[]); + + SecureBuffer<u32bit, 5> digest; + SecureBuffer<u32bit, 80> W; + }; + +} + +#endif diff --git a/src/hash/sha1_amd64/sha1_asm.S b/src/hash/sha1_amd64/sha1_amd64_imp.S index b94dfbadc..f20494999 100644 --- a/src/hash/sha1_amd64/sha1_asm.S +++ b/src/hash/sha1_amd64/sha1_amd64_imp.S @@ -5,9 +5,9 @@ #include <botan/asm_macr.h> -START_LISTING(sha1_asm.S) +START_LISTING(sha1_amd64.S) -START_FUNCTION(botan_sha160_core_asm) +START_FUNCTION(botan_sha160_amd64_compress) #define DIGEST_ARR %rdi #define INPUT %rsi @@ -255,4 +255,4 @@ ALIGN; ADD(ARRAY4(DIGEST_ARR, 3), B) ADD(ARRAY4(DIGEST_ARR, 4), C) -END_FUNCTION(botan_core_sha160_asm) +END_FUNCTION(botan_sha160_amd64_compress) 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) diff --git a/src/hash/sha1_sse2/info.txt b/src/hash/sha1_sse2/info.txt index 4177c0ab7..cf5fb0943 100644 --- a/src/hash/sha1_sse2/info.txt +++ b/src/hash/sha1_sse2/info.txt @@ -1,15 +1,20 @@ realname "SHA-1 (SSE2)" -define SHA1 +define SHA1_SSE2 -load_on request +load_on auto <add> -sha160.cpp -sha160.h -sha1_sse.cpp +sha1_sse2_imp.cpp +sha1_sse2.cpp +sha1_sse2.h </add> +<requires> +mdx_hash +utils +</requires> + <arch> pentium-m pentium4 diff --git a/src/hash/sha1_sse2/sha1_sse2.cpp b/src/hash/sha1_sse2/sha1_sse2.cpp new file mode 100644 index 000000000..df7f2277c --- /dev/null +++ b/src/hash/sha1_sse2/sha1_sse2.cpp @@ -0,0 +1,44 @@ +/************************************************* +* SHA-160 (SSE2) Source File * +* (C) 1999-2007 Jack Lloyd * +*************************************************/ + +#include <botan/sha1_sse2.h> +#include <botan/loadstor.h> +#include <botan/bit_ops.h> + +namespace Botan { + +extern "C" void botan_sha1_sse2_compress(u32bit[5], const byte[64]); + +/************************************************* +* SHA-160 Compression Function * +*************************************************/ +void SHA_160_SSE2::hash(const byte input[]) + { + botan_sha1_sse2_compress(digest, input); + } + +/************************************************* +* Copy out the digest * +*************************************************/ +void SHA_160_SSE2::copy_out(byte output[]) + { + for(u32bit j = 0; j != OUTPUT_LENGTH; ++j) + output[j] = get_byte(j % 4, digest[j/4]); + } + +/************************************************* +* Clear memory of sensitive data * +*************************************************/ +void SHA_160_SSE2::clear() throw() + { + MDx_HashFunction::clear(); + digest[0] = 0x67452301; + digest[1] = 0xEFCDAB89; + digest[2] = 0x98BADCFE; + digest[3] = 0x10325476; + digest[4] = 0xC3D2E1F0; + } + +} diff --git a/src/hash/sha1_sse2/sha160.h b/src/hash/sha1_sse2/sha1_sse2.h index c6f8482cf..5683acc4f 100644 --- a/src/hash/sha1_sse2/sha160.h +++ b/src/hash/sha1_sse2/sha1_sse2.h @@ -3,8 +3,8 @@ * (C) 1999-2007 The Botan Project * *************************************************/ -#ifndef BOTAN_SHA_160_H__ -#define BOTAN_SHA_160_H__ +#ifndef BOTAN_SHA_160_SSE2_H__ +#define BOTAN_SHA_160_SSE2_H__ #include <botan/mdx_hash.h> @@ -13,13 +13,14 @@ namespace Botan { /************************************************* * SHA-160 * *************************************************/ -class SHA_160 : public MDx_HashFunction +class SHA_160_SSE2 : public MDx_HashFunction { public: void clear() throw(); std::string name() const { return "SHA-160"; } - HashFunction* clone() const { return new SHA_160; } - SHA_160(); + HashFunction* clone() const { return new SHA_160_SSE2; } + + SHA_160_SSE2() : MDx_HashFunction(20, 64, true, true) { clear(); } private: void hash(const byte[]); void copy_out(byte[]); diff --git a/src/hash/sha1_sse2/sha1_sse.cpp b/src/hash/sha1_sse2/sha1_sse2_imp.cpp index 23dbfc5e2..759d88afa 100644 --- a/src/hash/sha1_sse2/sha1_sse.cpp +++ b/src/hash/sha1_sse2/sha1_sse2_imp.cpp @@ -188,8 +188,8 @@ static inline u32bit f60_79(u32bit x, u32bit y, u32bit z) (xt) += ((xe) + rol((xa), 5)); \ } while(0) -extern "C" void botan_sha1_sse(u32bit* H, - const u32bit* inputu) +extern "C" void botan_sha1_sse2_compress(u32bit* H, + const u32bit* inputu) { const __m128i * input = (const __m128i *)inputu; __m128i W0, W1, W2, W3; |