diff options
author | Jack Lloyd <[email protected]> | 2016-09-17 14:20:03 -0400 |
---|---|---|
committer | Jack Lloyd <[email protected]> | 2016-09-17 14:20:03 -0400 |
commit | d734198074d0290631e27d1fb27dce45f0676d58 (patch) | |
tree | faed46aaae836e44e972a4e6d5bdea06b0729034 /src/lib/hash/sha1/sha160.cpp | |
parent | 272fcf00572432f64085b10132e364740d7eb093 (diff) | |
parent | 2b7f2d52d032ad56526d38e7f65bd966ac59325a (diff) |
Merge GH #623 Merge algorithm impl types
If CPU specific optimizations are available they are always used,
without requiring the application to use the application registry to
ensure they get the optimal type.
See also GH #477
Diffstat (limited to 'src/lib/hash/sha1/sha160.cpp')
-rw-r--r-- | src/lib/hash/sha1/sha160.cpp | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/src/lib/hash/sha1/sha160.cpp b/src/lib/hash/sha1/sha160.cpp index 21e87465a..87738fb00 100644 --- a/src/lib/hash/sha1/sha160.cpp +++ b/src/lib/hash/sha1/sha160.cpp @@ -6,6 +6,7 @@ */ #include <botan/sha160.h> +#include <botan/cpuid.h> namespace Botan { @@ -60,9 +61,19 @@ void SHA_160::compress_n(const byte input[], size_t blocks) { using namespace SHA1_F; +#if defined(BOTAN_HAS_SHA1_SSE2) + if(CPUID::has_sse2()) + { + return sse2_compress_n(m_digest, input, blocks); + } + +#endif + u32bit A = m_digest[0], B = m_digest[1], C = m_digest[2], D = m_digest[3], E = m_digest[4]; + m_W.resize(80); + for(size_t i = 0; i != blocks; ++i) { load_be(m_W.data(), input, 16); |