aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJack Lloyd <[email protected]>2015-07-25 00:00:51 -0400
committerJack Lloyd <[email protected]>2015-07-25 00:00:51 -0400
commit46c134b0f9524a47e7ee74b798e83fcc33b74202 (patch)
tree084b82e407e3dc92bdd70063d14e3302a43a2fd7
parent0689b07d9ddc7c10a868691b1ae33dd1c5432490 (diff)
Remove the x86 asm versions of MD4, MD5, SHA-1 and Serpent
With modern compilers, all are slower than the C++ and SSE2 versions of the same algos. GH #216
-rw-r--r--doc/news.rst8
-rw-r--r--src/lib/block/serpent_x86_32/info.txt12
-rw-r--r--src/lib/block/serpent_x86_32/serp_x86_32.cpp90
-rw-r--r--src/lib/block/serpent_x86_32/serp_x86_32.h31
-rw-r--r--src/lib/block/serpent_x86_32/serp_x86_32_imp.S669
-rw-r--r--src/lib/hash/md4_x86_32/info.txt12
-rw-r--r--src/lib/hash/md4_x86_32/md4_x86_32.cpp37
-rw-r--r--src/lib/hash/md4_x86_32/md4_x86_32.h28
-rw-r--r--src/lib/hash/md4_x86_32/md4_x86_32_imp.S137
-rw-r--r--src/lib/hash/md5_x86_32/info.txt12
-rw-r--r--src/lib/hash/md5_x86_32/md5_x86_32.cpp34
-rw-r--r--src/lib/hash/md5_x86_32/md5_x86_32.h28
-rw-r--r--src/lib/hash/md5_x86_32/md5_x86_32_imp.S166
-rw-r--r--src/lib/hash/sha1_x86_32/info.txt12
-rw-r--r--src/lib/hash/sha1_x86_32/sha1_x86_32.cpp34
-rw-r--r--src/lib/hash/sha1_x86_32/sha1_x86_32.h31
-rw-r--r--src/lib/hash/sha1_x86_32/sha1_x86_32_imp.S244
-rw-r--r--src/lib/hash/sha1_x86_64/info.txt12
-rw-r--r--src/lib/hash/sha1_x86_64/sha1_x86_64.cpp34
-rw-r--r--src/lib/hash/sha1_x86_64/sha1_x86_64.h28
-rw-r--r--src/lib/hash/sha1_x86_64/sha1_x86_64_imp.S266
-rw-r--r--src/lib/utils/asm_x86_32/asm_x86_32.h128
-rw-r--r--src/lib/utils/asm_x86_32/info.txt26
-rw-r--r--src/lib/utils/asm_x86_64/asm_x86_64.h127
-rw-r--r--src/lib/utils/asm_x86_64/info.txt24
25 files changed, 7 insertions, 2223 deletions
diff --git a/doc/news.rst b/doc/news.rst
index 144641913..6be3eb250 100644
--- a/doc/news.rst
+++ b/doc/news.rst
@@ -4,10 +4,16 @@ Release Notes
Version 1.11.19, Not Yet Released
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+* The x86-32 assembly versions of MD4, MD5, SHA-1, and Serpent and the
+ x86-64 version of SHA-1 have been removed. With compilers from this
+ decade the C++ versions are significantly faster. The SSE2 versions
+ of SHA-1 and Serpent remain, as they are still the fastest version
+ for processors with SIMD extensions. GH #216
+
* BigInt::to_u32bit would fail if the value was exactly 32 bits.
GH #220
-Version 1.11.18, 2015-07-05
+ Version 1.11.18, 2015-07-05
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
* In this release Botan has switched VCS from ``monotone`` to ``git``,
diff --git a/src/lib/block/serpent_x86_32/info.txt b/src/lib/block/serpent_x86_32/info.txt
deleted file mode 100644
index 370213e87..000000000
--- a/src/lib/block/serpent_x86_32/info.txt
+++ /dev/null
@@ -1,12 +0,0 @@
-define SERPENT_X86_32 20131128
-
-load_on asm_ok
-
-<arch>
-x86_32
-</arch>
-
-<requires>
-asm_x86_32
-serpent
-</requires>
diff --git a/src/lib/block/serpent_x86_32/serp_x86_32.cpp b/src/lib/block/serpent_x86_32/serp_x86_32.cpp
deleted file mode 100644
index f055880b3..000000000
--- a/src/lib/block/serpent_x86_32/serp_x86_32.cpp
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
-* Serpent in x86-32
-* (C) 1999-2007 Jack Lloyd
-*
-* Botan is released under the Simplified BSD License (see license.txt)
-*/
-
-#include <botan/internal/block_utils.h>
-#include <botan/serp_x86_32.h>
-
-namespace Botan {
-
-BOTAN_REGISTER_NAMED_T_NOARGS(BlockCipher, Serpent_X86_32, "Serpent", "x86-32");
-
-extern "C" {
-
-/**
-* Entry point for Serpent encryption in x86 asm
-* @param in the input block
-* @param out the output block
-* @param ks the key schedule
-*/
-void botan_serpent_x86_32_encrypt(const byte in[16],
- byte out[16],
- const u32bit ks[132]);
-
-/**
-* Entry point for Serpent decryption in x86 asm
-* @param in the input block
-* @param out the output block
-* @param ks the key schedule
-*/
-void botan_serpent_x86_32_decrypt(const byte in[16],
- byte out[16],
- const u32bit ks[132]);
-
-/**
-* Entry point for Serpent key schedule in x86 asm
-* @param ks holds the initial working key (padded), and is set to the
- final key schedule
-*/
-void botan_serpent_x86_32_key_schedule(u32bit ks[140]);
-
-}
-
-/*
-* Serpent Encryption
-*/
-void Serpent_X86_32::encrypt_n(const byte in[], byte out[], size_t blocks) const
- {
- auto keys = this->get_round_keys();
-
- for(size_t i = 0; i != blocks; ++i)
- {
- botan_serpent_x86_32_encrypt(in, out, keys.data());
- in += BLOCK_SIZE;
- out += BLOCK_SIZE;
- }
- }
-
-/*
-* Serpent Decryption
-*/
-void Serpent_X86_32::decrypt_n(const byte in[], byte out[], size_t blocks) const
- {
- auto keys = this->get_round_keys();
-
- for(size_t i = 0; i != blocks; ++i)
- {
- botan_serpent_x86_32_decrypt(in, out, keys.data());
- in += BLOCK_SIZE;
- out += BLOCK_SIZE;
- }
- }
-
-/*
-* Serpent Key Schedule
-*/
-void Serpent_X86_32::key_schedule(const byte key[], size_t length)
- {
- secure_vector<u32bit> W(140);
- for(size_t i = 0; i != length / 4; ++i)
- W[i] = load_le<u32bit>(key, i);
- W[length / 4] |= u32bit(1) << ((length%4)*8);
-
- botan_serpent_x86_32_key_schedule(W.data());
- this->set_round_keys(&W[8]);
- }
-
-}
diff --git a/src/lib/block/serpent_x86_32/serp_x86_32.h b/src/lib/block/serpent_x86_32/serp_x86_32.h
deleted file mode 100644
index 89fb1a8fe..000000000
--- a/src/lib/block/serpent_x86_32/serp_x86_32.h
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
-* Serpent in x86-32 asm
-* (C) 1999-2007 Jack Lloyd
-*
-* Botan is released under the Simplified BSD License (see license.txt)
-*/
-
-#ifndef BOTAN_SERPENT_X86_32_H__
-#define BOTAN_SERPENT_X86_32_H__
-
-#include <botan/serpent.h>
-
-namespace Botan {
-
-/**
-* Serpent implementation in x86-32 assembly
-*/
-class BOTAN_DLL Serpent_X86_32 : public Serpent
- {
- public:
- void encrypt_n(const byte in[], byte out[], size_t blocks) const;
- void decrypt_n(const byte in[], byte out[], size_t blocks) const;
-
- BlockCipher* clone() const { return new Serpent_X86_32; }
- private:
- void key_schedule(const byte[], size_t);
- };
-
-}
-
-#endif
diff --git a/src/lib/block/serpent_x86_32/serp_x86_32_imp.S b/src/lib/block/serpent_x86_32/serp_x86_32_imp.S
deleted file mode 100644
index 807c3fc54..000000000
--- a/src/lib/block/serpent_x86_32/serp_x86_32_imp.S
+++ /dev/null
@@ -1,669 +0,0 @@
-/*
-* Serpent in x86-32 assembler
-* (C) 1999-2007 Jack Lloyd
-*
-* Botan is released under the Simplified BSD License (see license.txt)
-*/
-
-#include <botan/internal/asm_x86_32.h>
-
-START_LISTING(serp_x86_32.S)
-
-#define SBOX_E1(A, B, C, D, T) \
- XOR(D, A) ; \
- ASSIGN(T, B) ; \
- AND(B, D) ; \
- XOR(T, C) ; \
- XOR(B, A) ; \
- OR(A, D) ; \
- XOR(A, T) ; \
- XOR(T, D) ; \
- XOR(D, C) ; \
- OR(C, B) ; \
- XOR(C, T) ; \
- NOT(T) ; \
- OR(T, B) ; \
- XOR(B, D) ; \
- XOR(B, T) ; \
- OR(D, A) ; \
- XOR(B, D) ; \
- XOR(T, D) ; \
- ASSIGN(D, A) ; \
- ASSIGN(A, B) ; \
- ASSIGN(B, T) ;
-
-#define SBOX_E2(A, B, C, D, T) \
- NOT(A) ; \
- NOT(C) ; \
- ASSIGN(T, A) ; \
- AND(A, B) ; \
- XOR(C, A) ; \
- OR(A, D) ; \
- XOR(D, C) ; \
- XOR(B, A) ; \
- XOR(A, T) ; \
- OR(T, B) ; \
- XOR(B, D) ; \
- OR(C, A) ; \
- AND(C, T) ; \
- XOR(A, B) ; \
- AND(B, C) ; \
- XOR(B, A) ; \
- AND(A, C) ; \
- XOR(T, A) ; \
- ASSIGN(A, C) ; \
- ASSIGN(C, D) ; \
- ASSIGN(D, B) ; \
- ASSIGN(B, T) ;
-
-#define SBOX_E3(A, B, C, D, T) \
- ASSIGN(T, A) ; \
- AND(A, C) ; \
- XOR(A, D) ; \
- XOR(C, B) ; \
- XOR(C, A) ; \
- OR(D, T) ; \
- XOR(D, B) ; \
- XOR(T, C) ; \
- ASSIGN(B, D) ; \
- OR(D, T) ; \
- XOR(D, A) ; \
- AND(A, B) ; \
- XOR(T, A) ; \
- XOR(B, D) ; \
- XOR(B, T) ; \
- NOT(T) ; \
- ASSIGN(A, C) ; \
- ASSIGN(C, B) ; \
- ASSIGN(B, D) ; \
- ASSIGN(D, T) ;
-
-#define SBOX_E4(A, B, C, D, T) \
- ASSIGN(T, A) ; \
- OR(A, D) ; \
- XOR(D, B) ; \
- AND(B, T) ; \
- XOR(T, C) ; \
- XOR(C, D) ; \
- AND(D, A) ; \
- OR(T, B) ; \
- XOR(D, T) ; \
- XOR(A, B) ; \
- AND(T, A) ; \
- XOR(B, D) ; \
- XOR(T, C) ; \
- OR(B, A) ; \
- XOR(B, C) ; \
- XOR(A, D) ; \
- ASSIGN(C, B) ; \
- OR(B, D) ; \
- XOR(B, A) ; \
- ASSIGN(A, B) ; \
- ASSIGN(B, C) ; \
- ASSIGN(C, D) ; \
- ASSIGN(D, T) ;
-
-#define SBOX_E5(A, B, C, D, T) \
- XOR(B, D) ; \
- NOT(D) ; \
- XOR(C, D) ; \
- XOR(D, A) ; \
- ASSIGN(T, B) ; \
- AND(B, D) ; \
- XOR(B, C) ; \
- XOR(T, D) ; \
- XOR(A, T) ; \
- AND(C, T) ; \
- XOR(C, A) ; \
- AND(A, B) ; \
- XOR(D, A) ; \
- OR(T, B) ; \
- XOR(T, A) ; \
- OR(A, D) ; \
- XOR(A, C) ; \
- AND(C, D) ; \
- NOT(A) ; \
- XOR(T, C) ; \
- ASSIGN(C, A) ; \
- ASSIGN(A, B) ; \
- ASSIGN(B, T) ;
-
-#define SBOX_E6(A, B, C, D, T) \
- XOR(A, B) ; \
- XOR(B, D) ; \
- NOT(D) ; \
- ASSIGN(T, B) ; \
- AND(B, A) ; \
- XOR(C, D) ; \
- XOR(B, C) ; \
- OR(C, T) ; \
- XOR(T, D) ; \
- AND(D, B) ; \
- XOR(D, A) ; \
- XOR(T, B) ; \
- XOR(T, C) ; \
- XOR(C, A) ; \
- AND(A, D) ; \
- NOT(C) ; \
- XOR(A, T) ; \
- OR(T, D) ; \
- XOR(T, C) ; \
- ASSIGN(C, A) ; \
- ASSIGN(A, B) ; \
- ASSIGN(B, D) ; \
- ASSIGN(D, T) ;
-
-#define SBOX_E7(A, B, C, D, T) \
- NOT(C) ; \
- ASSIGN(T, D) ; \
- AND(D, A) ; \
- XOR(A, T) ; \
- XOR(D, C) ; \
- OR(C, T) ; \
- XOR(B, D) ; \
- XOR(C, A) ; \
- OR(A, B) ; \
- XOR(C, B) ; \
- XOR(T, A) ; \
- OR(A, D) ; \
- XOR(A, C) ; \
- XOR(T, D) ; \
- XOR(T, A) ; \
- NOT(D) ; \
- AND(C, T) ; \
- XOR(C, D) ; \
- ASSIGN(D, C) ; \
- ASSIGN(C, T) ;
-
-#define SBOX_E8(A, B, C, D, T) \
- ASSIGN(T, B) ; \
- OR(B, C) ; \
- XOR(B, D) ; \
- XOR(T, C) ; \
- XOR(C, B) ; \
- OR(D, T) ; \
- AND(D, A) ; \
- XOR(T, C) ; \
- XOR(D, B) ; \
- OR(B, T) ; \
- XOR(B, A) ; \
- OR(A, T) ; \
- XOR(A, C) ; \
- XOR(B, T) ; \
- XOR(C, B) ; \
- AND(B, A) ; \
- XOR(B, T) ; \
- NOT(C) ; \
- OR(C, A) ; \
- XOR(T, C) ; \
- ASSIGN(C, B) ; \
- ASSIGN(B, D) ; \
- ASSIGN(D, A) ; \
- ASSIGN(A, T) ;
-
-#define SBOX_D1(A, B, C, D, T) \
- NOT(C) ; \
- ASSIGN(T, B) ; \
- OR(B, A) ; \
- NOT(T) ; \
- XOR(B, C) ; \
- OR(C, T) ; \
- XOR(B, D) ; \
- XOR(A, T) ; \
- XOR(C, A) ; \
- AND(A, D) ; \
- XOR(T, A) ; \
- OR(A, B) ; \
- XOR(A, C) ; \
- XOR(D, T) ; \
- XOR(C, B) ; \
- XOR(D, A) ; \
- XOR(D, B) ; \
- AND(C, D) ; \
- XOR(T, C) ; \
- ASSIGN(C, B) ; \
- ASSIGN(B, T) ;
-
-#define SBOX_D2(A, B, C, D, T) \
- ASSIGN(T, B) ; \
- XOR(B, D) ; \
- AND(D, B) ; \
- XOR(T, C) ; \
- XOR(D, A) ; \
- OR(A, B) ; \
- XOR(C, D) ; \
- XOR(A, T) ; \
- OR(A, C) ; \
- XOR(B, D) ; \
- XOR(A, B) ; \
- OR(B, D) ; \
- XOR(B, A) ; \
- NOT(T) ; \
- XOR(T, B) ; \
- OR(B, A) ; \
- XOR(B, A) ; \
- OR(B, T) ; \
- XOR(D, B) ; \
- ASSIGN(B, A) ; \
- ASSIGN(A, T) ; \
- ASSIGN(T, D) ; \
- ASSIGN(D, C) ; \
- ASSIGN(C, T) ;
-
-#define SBOX_D3(A, B, C, D, T) \
- XOR(C, D) ; \
- XOR(D, A) ; \
- ASSIGN(T, D) ; \
- AND(D, C) ; \
- XOR(D, B) ; \
- OR(B, C) ; \
- XOR(B, T) ; \
- AND(T, D) ; \
- XOR(C, D) ; \
- AND(T, A) ; \
- XOR(T, C) ; \
- AND(C, B) ; \
- OR(C, A) ; \
- NOT(D) ; \
- XOR(C, D) ; \
- XOR(A, D) ; \
- AND(A, B) ; \
- XOR(D, T) ; \
- XOR(D, A) ; \
- ASSIGN(A, B) ; \
- ASSIGN(B, T) ;
-
-#define SBOX_D4(A, B, C, D, T) \
- ASSIGN(T, C) ; \
- XOR(C, B) ; \
- XOR(A, C) ; \
- AND(T, C) ; \
- XOR(T, A) ; \
- AND(A, B) ; \
- XOR(B, D) ; \
- OR(D, T) ; \
- XOR(C, D) ; \
- XOR(A, D) ; \
- XOR(B, T) ; \
- AND(D, C) ; \
- XOR(D, B) ; \
- XOR(B, A) ; \
- OR(B, C) ; \
- XOR(A, D) ; \
- XOR(B, T) ; \
- XOR(A, B) ; \
- ASSIGN(T, A) ; \
- ASSIGN(A, C) ; \
- ASSIGN(C, D) ; \
- ASSIGN(D, T) ;
-
-#define SBOX_D5(A, B, C, D, T) \
- ASSIGN(T, C) ; \
- AND(C, D) ; \
- XOR(C, B) ; \
- OR(B, D) ; \
- AND(B, A) ; \
- XOR(T, C) ; \
- XOR(T, B) ; \
- AND(B, C) ; \
- NOT(A) ; \
- XOR(D, T) ; \
- XOR(B, D) ; \
- AND(D, A) ; \
- XOR(D, C) ; \
- XOR(A, B) ; \
- AND(C, A) ; \
- XOR(D, A) ; \
- XOR(C, T) ; \
- OR(C, D) ; \
- XOR(D, A) ; \
- XOR(C, B) ; \
- ASSIGN(B, D) ; \
- ASSIGN(D, T) ;
-
-#define SBOX_D6(A, B, C, D, T) \
- NOT(B) ; \
- ASSIGN(T, D) ; \
- XOR(C, B) ; \
- OR(D, A) ; \
- XOR(D, C) ; \
- OR(C, B) ; \
- AND(C, A) ; \
- XOR(T, D) ; \
- XOR(C, T) ; \
- OR(T, A) ; \
- XOR(T, B) ; \
- AND(B, C) ; \
- XOR(B, D) ; \
- XOR(T, C) ; \
- AND(D, T) ; \
- XOR(T, B) ; \
- XOR(D, T) ; \
- NOT(T) ; \
- XOR(D, A) ; \
- ASSIGN(A, B) ; \
- ASSIGN(B, T) ; \
- ASSIGN(T, D) ; \
- ASSIGN(D, C) ; \
- ASSIGN(C, T) ;
-
-#define SBOX_D7(A, B, C, D, T) \
- XOR(A, C) ; \
- ASSIGN(T, C) ; \
- AND(C, A) ; \
- XOR(T, D) ; \
- NOT(C) ; \
- XOR(D, B) ; \
- XOR(C, D) ; \
- OR(T, A) ; \
- XOR(A, C) ; \
- XOR(D, T) ; \
- XOR(T, B) ; \
- AND(B, D) ; \
- XOR(B, A) ; \
- XOR(A, D) ; \
- OR(A, C) ; \
- XOR(D, B) ; \
- XOR(T, A) ; \
- ASSIGN(A, B) ; \
- ASSIGN(B, C) ; \
- ASSIGN(C, T) ;
-
-#define SBOX_D8(A, B, C, D, T) \
- ASSIGN(T, C) ; \
- XOR(C, A) ; \
- AND(A, D) ; \
- OR(T, D) ; \
- NOT(C) ; \
- XOR(D, B) ; \
- OR(B, A) ; \
- XOR(A, C) ; \
- AND(C, T) ; \
- AND(D, T) ; \
- XOR(B, C) ; \
- XOR(C, A) ; \
- OR(A, C) ; \
- XOR(T, B) ; \
- XOR(A, D) ; \
- XOR(D, T) ; \
- OR(T, A) ; \
- XOR(D, C) ; \
- XOR(T, C) ; \
- ASSIGN(C, B) ; \
- ASSIGN(B, A) ; \
- ASSIGN(A, D) ; \
- ASSIGN(D, T) ;
-
-#define TRANSFORM(A, B, C, D, T) \
- ROTL_IMM(A, 13) ; \
- ROTL_IMM(C, 3) ; \
- SHL2_3(T, A) ; \
- XOR(B, A) ; \
- XOR(D, C) ; \
- XOR(B, C) ; \
- XOR(D, T) ; \
- ROTL_IMM(B, 1) ; \
- ROTL_IMM(D, 7) ; \
- ASSIGN(T, B) ; \
- SHL_IMM(T, 7) ; \
- XOR(A, B) ; \
- XOR(C, D) ; \
- XOR(A, D) ; \
- XOR(C, T) ; \
- ROTL_IMM(A, 5) ; \
- ROTL_IMM(C, 22) ;
-
-#define I_TRANSFORM(A, B, C, D, T) \
- ROTR_IMM(C, 22) ; \
- ROTR_IMM(A, 5) ; \
- ASSIGN(T, B) ; \
- SHL_IMM(T, 7) ; \
- XOR(A, B) ; \
- XOR(C, D) ; \
- XOR(A, D) ; \
- XOR(C, T) ; \
- ROTR_IMM(D, 7) ; \
- ROTR_IMM(B, 1) ; \
- SHL2_3(T, A) ; \
- XOR(B, C) ; \
- XOR(D, C) ; \
- XOR(B, A) ; \
- XOR(D, T) ; \
- ROTR_IMM(C, 3) ; \
- ROTR_IMM(A, 13) ;
-
-#define KEY_XOR(A, B, C, D, N) \
- XOR(A, ARRAY4(EDI, (4*N ))) ; \
- XOR(B, ARRAY4(EDI, (4*N+1))) ; \
- XOR(C, ARRAY4(EDI, (4*N+2))) ; \
- XOR(D, ARRAY4(EDI, (4*N+3))) ;
-
-/*
-* Serpent Encryption
-*/
-START_FUNCTION(botan_serpent_x86_32_encrypt)
- SPILL_REGS()
-#define PUSHED 4
-
- ASSIGN(EBP, ARG(1)) /* input block */
- ASSIGN(EAX, ARRAY4(EBP, 0))
- ASSIGN(EBX, ARRAY4(EBP, 1))
- ASSIGN(ECX, ARRAY4(EBP, 2))
- ASSIGN(EDX, ARRAY4(EBP, 3))
-
- ASSIGN(EDI, ARG(3)) /* round keys */
- ZEROIZE(EBP)
-
-#define E_ROUND(A, B, C, D, T, N, SBOX) \
- KEY_XOR(A, B, C, D, N) \
- SBOX(A, B, C, D, T) \
- TRANSFORM(A, B, C, D, T)
-
-
- E_ROUND(EAX, EBX, ECX, EDX, EBP, 0, SBOX_E1)
- E_ROUND(EAX, EBX, ECX, EDX, EBP, 1, SBOX_E2)
- E_ROUND(EAX, EBX, ECX, EDX, EBP, 2, SBOX_E3)
- E_ROUND(EAX, EBX, ECX, EDX, EBP, 3, SBOX_E4)
- E_ROUND(EAX, EBX, ECX, EDX, EBP, 4, SBOX_E5)
- E_ROUND(EAX, EBX, ECX, EDX, EBP, 5, SBOX_E6)
- E_ROUND(EAX, EBX, ECX, EDX, EBP, 6, SBOX_E7)
- E_ROUND(EAX, EBX, ECX, EDX, EBP, 7, SBOX_E8)
-
- E_ROUND(EAX, EBX, ECX, EDX, EBP, 8, SBOX_E1)
- E_ROUND(EAX, EBX, ECX, EDX, EBP, 9, SBOX_E2)
- E_ROUND(EAX, EBX, ECX, EDX, EBP, 10, SBOX_E3)
- E_ROUND(EAX, EBX, ECX, EDX, EBP, 11, SBOX_E4)
- E_ROUND(EAX, EBX, ECX, EDX, EBP, 12, SBOX_E5)
- E_ROUND(EAX, EBX, ECX, EDX, EBP, 13, SBOX_E6)
- E_ROUND(EAX, EBX, ECX, EDX, EBP, 14, SBOX_E7)
- E_ROUND(EAX, EBX, ECX, EDX, EBP, 15, SBOX_E8)
-
- E_ROUND(EAX, EBX, ECX, EDX, EBP, 16, SBOX_E1)
- E_ROUND(EAX, EBX, ECX, EDX, EBP, 17, SBOX_E2)
- E_ROUND(EAX, EBX, ECX, EDX, EBP, 18, SBOX_E3)
- E_ROUND(EAX, EBX, ECX, EDX, EBP, 19, SBOX_E4)
- E_ROUND(EAX, EBX, ECX, EDX, EBP, 20, SBOX_E5)
- E_ROUND(EAX, EBX, ECX, EDX, EBP, 21, SBOX_E6)
- E_ROUND(EAX, EBX, ECX, EDX, EBP, 22, SBOX_E7)
- E_ROUND(EAX, EBX, ECX, EDX, EBP, 23, SBOX_E8)
-
- E_ROUND(EAX, EBX, ECX, EDX, EBP, 24, SBOX_E1)
- E_ROUND(EAX, EBX, ECX, EDX, EBP, 25, SBOX_E2)
- E_ROUND(EAX, EBX, ECX, EDX, EBP, 26, SBOX_E3)
- E_ROUND(EAX, EBX, ECX, EDX, EBP, 27, SBOX_E4)
- E_ROUND(EAX, EBX, ECX, EDX, EBP, 28, SBOX_E5)
- E_ROUND(EAX, EBX, ECX, EDX, EBP, 29, SBOX_E6)
- E_ROUND(EAX, EBX, ECX, EDX, EBP, 30, SBOX_E7)
-
- KEY_XOR(EAX, EBX, ECX, EDX, 31)
- SBOX_E8(EAX, EBX, ECX, EDX, EBP)
- KEY_XOR(EAX, EBX, ECX, EDX, 32)
-
- ASSIGN(EBP, ARG(2)) /* output block */
- ASSIGN(ARRAY4(EBP, 0), EAX)
- ASSIGN(ARRAY4(EBP, 1), EBX)
- ASSIGN(ARRAY4(EBP, 2), ECX)
- ASSIGN(ARRAY4(EBP, 3), EDX)
-
- RESTORE_REGS()
-#undef PUSHED
-END_FUNCTION(botan_serpent_x86_32_encrypt)
-
-/*
-* Serpent Decryption
-*/
-START_FUNCTION(botan_serpent_x86_32_decrypt)
- SPILL_REGS()
-#define PUSHED 4
-
- ASSIGN(EBP, ARG(1)) /* input block */
- ASSIGN(EAX, ARRAY4(EBP, 0))
- ASSIGN(EBX, ARRAY4(EBP, 1))
- ASSIGN(ECX, ARRAY4(EBP, 2))
- ASSIGN(EDX, ARRAY4(EBP, 3))
-
- ASSIGN(EDI, ARG(3)) /* round keys */
-
- ZEROIZE(EBP)
-
-#define D_ROUND(A, B, C, D, T, N, SBOX) \
- I_TRANSFORM(A, B, C, D, T) \
- SBOX(A, B, C, D, T) \
- KEY_XOR(A, B, C, D, N) \
-
- KEY_XOR(EAX, EBX, ECX, EDX, 32)
- SBOX_D8(EAX, EBX, ECX, EDX, EBP)
- KEY_XOR(EAX, EBX, ECX, EDX, 31)
-
- D_ROUND(EAX, EBX, ECX, EDX, EBP, 30, SBOX_D7)
- D_ROUND(EAX, EBX, ECX, EDX, EBP, 29, SBOX_D6)
- D_ROUND(EAX, EBX, ECX, EDX, EBP, 28, SBOX_D5)
- D_ROUND(EAX, EBX, ECX, EDX, EBP, 27, SBOX_D4)
- D_ROUND(EAX, EBX, ECX, EDX, EBP, 26, SBOX_D3)
- D_ROUND(EAX, EBX, ECX, EDX, EBP, 25, SBOX_D2)
- D_ROUND(EAX, EBX, ECX, EDX, EBP, 24, SBOX_D1)
-
- D_ROUND(EAX, EBX, ECX, EDX, EBP, 23, SBOX_D8)
- D_ROUND(EAX, EBX, ECX, EDX, EBP, 22, SBOX_D7)
- D_ROUND(EAX, EBX, ECX, EDX, EBP, 21, SBOX_D6)
- D_ROUND(EAX, EBX, ECX, EDX, EBP, 20, SBOX_D5)
- D_ROUND(EAX, EBX, ECX, EDX, EBP, 19, SBOX_D4)
- D_ROUND(EAX, EBX, ECX, EDX, EBP, 18, SBOX_D3)
- D_ROUND(EAX, EBX, ECX, EDX, EBP, 17, SBOX_D2)
- D_ROUND(EAX, EBX, ECX, EDX, EBP, 16, SBOX_D1)
-
- D_ROUND(EAX, EBX, ECX, EDX, EBP, 15, SBOX_D8)
- D_ROUND(EAX, EBX, ECX, EDX, EBP, 14, SBOX_D7)
- D_ROUND(EAX, EBX, ECX, EDX, EBP, 13, SBOX_D6)
- D_ROUND(EAX, EBX, ECX, EDX, EBP, 12, SBOX_D5)
- D_ROUND(EAX, EBX, ECX, EDX, EBP, 11, SBOX_D4)
- D_ROUND(EAX, EBX, ECX, EDX, EBP, 10, SBOX_D3)
- D_ROUND(EAX, EBX, ECX, EDX, EBP, 9, SBOX_D2)
- D_ROUND(EAX, EBX, ECX, EDX, EBP, 8, SBOX_D1)
-
- D_ROUND(EAX, EBX, ECX, EDX, EBP, 7, SBOX_D8)
- D_ROUND(EAX, EBX, ECX, EDX, EBP, 6, SBOX_D7)
- D_ROUND(EAX, EBX, ECX, EDX, EBP, 5, SBOX_D6)
- D_ROUND(EAX, EBX, ECX, EDX, EBP, 4, SBOX_D5)
- D_ROUND(EAX, EBX, ECX, EDX, EBP, 3, SBOX_D4)
- D_ROUND(EAX, EBX, ECX, EDX, EBP, 2, SBOX_D3)
- D_ROUND(EAX, EBX, ECX, EDX, EBP, 1, SBOX_D2)
- D_ROUND(EAX, EBX, ECX, EDX, EBP, 0, SBOX_D1)
-
- ASSIGN(EBP, ARG(2)) /* output block */
- ASSIGN(ARRAY4(EBP, 0), EAX)
- ASSIGN(ARRAY4(EBP, 1), EBX)
- ASSIGN(ARRAY4(EBP, 2), ECX)
- ASSIGN(ARRAY4(EBP, 3), EDX)
-
- RESTORE_REGS()
-#undef PUSHED
-END_FUNCTION(botan_serpent_x86_32_decrypt)
-
-/*
-* Serpent Key Schedule
-*/
-START_FUNCTION(botan_serpent_x86_32_key_schedule)
- SPILL_REGS()
-#define PUSHED 4
-
- ASSIGN(EDI, ARG(1)) /* round keys */
- ASSIGN(ESI, IMM(8))
- ADD_IMM(EDI, 32)
-
-START_LOOP(.L_SERP_EXPANSION)
- ASSIGN(EAX, ARRAY4(EDI, -1))
- ASSIGN(EBX, ARRAY4(EDI, -3))
- ASSIGN(ECX, ARRAY4(EDI, -5))
- ASSIGN(EDX, ARRAY4(EDI, -8))
-
- ASSIGN(EBP, ESI)
- SUB_IMM(EBP, 8)
- XOR(EBP, IMM(0x9E3779B9))
- XOR(EAX, EBX)
- XOR(ECX, EDX)
- XOR(EAX, EBP)
- XOR(EAX, ECX)
-
- ROTL_IMM(EAX, 11)
-
- ASSIGN(ARRAY4(EDI, 0), EAX)
-
- ADD_IMM(ESI, 1)
- ADD_IMM(EDI, 4)
-LOOP_UNTIL_EQ(ESI, 140, .L_SERP_EXPANSION)
-
- ASSIGN(EDI, ARG(1)) /* round keys */
-
-#define LOAD_AND_SBOX(MSG, SBOX) \
- ASSIGN(EAX, ARRAY4(EDI, (4*MSG+ 8))) ; \
- ASSIGN(EBX, ARRAY4(EDI, (4*MSG+ 9))) ; \
- ASSIGN(ECX, ARRAY4(EDI, (4*MSG+10))) ; \
- ASSIGN(EDX, ARRAY4(EDI, (4*MSG+11))) ; \
- SBOX(EAX, EBX, ECX, EDX, EBP) ; \
- ASSIGN(ARRAY4(EDI, (4*MSG+ 8)), EAX) ; \
- ASSIGN(ARRAY4(EDI, (4*MSG+ 9)), EBX) ; \
- ASSIGN(ARRAY4(EDI, (4*MSG+10)), ECX) ; \
- ASSIGN(ARRAY4(EDI, (4*MSG+11)), EDX)
-
- LOAD_AND_SBOX( 0, SBOX_E4)
- LOAD_AND_SBOX( 1, SBOX_E3)
- LOAD_AND_SBOX( 2, SBOX_E2)
- LOAD_AND_SBOX( 3, SBOX_E1)
-
- LOAD_AND_SBOX( 4, SBOX_E8)
- LOAD_AND_SBOX( 5, SBOX_E7)
- LOAD_AND_SBOX( 6, SBOX_E6)
- LOAD_AND_SBOX( 7, SBOX_E5)
- LOAD_AND_SBOX( 8, SBOX_E4)
- LOAD_AND_SBOX( 9, SBOX_E3)
- LOAD_AND_SBOX(10, SBOX_E2)
- LOAD_AND_SBOX(11, SBOX_E1)
-
- LOAD_AND_SBOX(12, SBOX_E8)
- LOAD_AND_SBOX(13, SBOX_E7)
- LOAD_AND_SBOX(14, SBOX_E6)
- LOAD_AND_SBOX(15, SBOX_E5)
- LOAD_AND_SBOX(16, SBOX_E4)
- LOAD_AND_SBOX(17, SBOX_E3)
- LOAD_AND_SBOX(18, SBOX_E2)
- LOAD_AND_SBOX(19, SBOX_E1)
-
- LOAD_AND_SBOX(20, SBOX_E8)
- LOAD_AND_SBOX(21, SBOX_E7)
- LOAD_AND_SBOX(22, SBOX_E6)
- LOAD_AND_SBOX(23, SBOX_E5)
- LOAD_AND_SBOX(24, SBOX_E4)
- LOAD_AND_SBOX(25, SBOX_E3)
- LOAD_AND_SBOX(26, SBOX_E2)
- LOAD_AND_SBOX(27, SBOX_E1)
-
- LOAD_AND_SBOX(28, SBOX_E8)
- LOAD_AND_SBOX(29, SBOX_E7)
- LOAD_AND_SBOX(30, SBOX_E6)
- LOAD_AND_SBOX(31, SBOX_E5)
- LOAD_AND_SBOX(32, SBOX_E4)
-
- RESTORE_REGS()
-#undef PUSHED
-END_FUNCTION(botan_serpent_x86_32_key_schedule)
diff --git a/src/lib/hash/md4_x86_32/info.txt b/src/lib/hash/md4_x86_32/info.txt
deleted file mode 100644
index fa7eef6cb..000000000
--- a/src/lib/hash/md4_x86_32/info.txt
+++ /dev/null
@@ -1,12 +0,0 @@
-define MD4_X86_32 20131128
-
-load_on asm_ok
-
-<arch>
-x86_32
-</arch>
-
-<requires>
-asm_x86_32
-md4
-</requires>
diff --git a/src/lib/hash/md4_x86_32/md4_x86_32.cpp b/src/lib/hash/md4_x86_32/md4_x86_32.cpp
deleted file mode 100644
index 28860a369..000000000
--- a/src/lib/hash/md4_x86_32/md4_x86_32.cpp
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
-* MD4 (x86-32)
-* (C) 1999-2007 Jack Lloyd
-*
-* Botan is released under the Simplified BSD License (see license.txt)
-*/
-
-#include <botan/internal/hash_utils.h>
-#include <botan/md4_x86_32.h>
-
-namespace Botan {
-
-BOTAN_REGISTER_NAMED_T_NOARGS(HashFunction, MD4_X86_32, "MD4", "x86-32");
-
-/**
-* MD4 compression function in x86-32 asm
-* @param digest the current digest
-* @param input the input block
-* @param M the message buffer
-*/
-extern "C" void botan_md4_x86_32_compress(u32bit digest[4],
- const byte input[64],
- u32bit M[16]);
-
-/*
-* MD4 Compression Function
-*/
-void MD4_X86_32::compress_n(const byte input[], size_t blocks)
- {
- for(size_t i = 0; i != blocks; ++i)
- {
- botan_md4_x86_32_compress(digest.data(), input, M.data());
- input += hash_block_size();
- }
- }
-
-}
diff --git a/src/lib/hash/md4_x86_32/md4_x86_32.h b/src/lib/hash/md4_x86_32/md4_x86_32.h
deleted file mode 100644
index 1cb6c779d..000000000
--- a/src/lib/hash/md4_x86_32/md4_x86_32.h
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
-* MD4 (x86-32)
-* (C) 1999-2007 Jack Lloyd
-*
-* Botan is released under the Simplified BSD License (see license.txt)
-*/
-
-#ifndef BOTAN_MD4_X86_32_H__
-#define BOTAN_MD4_X86_32_H__
-
-#include <botan/md4.h>
-
-namespace Botan {
-
-/**
-* MD4 using x86 assembly
-*/
-class BOTAN_DLL MD4_X86_32 : public MD4
- {
- public:
- HashFunction* clone() const { return new MD4_X86_32; }
- private:
- void compress_n(const byte[], size_t blocks);
- };
-
-}
-
-#endif
diff --git a/src/lib/hash/md4_x86_32/md4_x86_32_imp.S b/src/lib/hash/md4_x86_32/md4_x86_32_imp.S
deleted file mode 100644
index 035b30801..000000000
--- a/src/lib/hash/md4_x86_32/md4_x86_32_imp.S
+++ /dev/null
@@ -1,137 +0,0 @@
-/*
-* MD4 in x86-32 assembler
-* (C) 1999-2007 Jack Lloyd
-*
-* Botan is released under the Simplified BSD License (see license.txt)
-*/
-
-#include <botan/internal/asm_x86_32.h>
-
-START_LISTING(md4_x86_32_imp.S)
-
-START_FUNCTION(botan_md4_x86_32_compress)
- SPILL_REGS()
-
-#define PUSHED 4
-
- ASSIGN(EBP, ARG(2)) /* input block */
- ASSIGN(EDI, ARG(3)) /* expanded words */
-
- ZEROIZE(ESI)
-
-START_LOOP(.LOAD_INPUT)
- ADD_IMM(ESI, 4)
-
- ASSIGN(EAX, ARRAY4(EBP, 0))
- ASSIGN(EBX, ARRAY4(EBP, 1))
- ASSIGN(ECX, ARRAY4(EBP, 2))
- ASSIGN(EDX, ARRAY4(EBP, 3))
-
- ADD_IMM(EBP, 16)
-
- ASSIGN(ARRAY4_INDIRECT(EDI,ESI,-4), EAX)
- ASSIGN(ARRAY4_INDIRECT(EDI,ESI,-3), EBX)
- ASSIGN(ARRAY4_INDIRECT(EDI,ESI,-2), ECX)
- ASSIGN(ARRAY4_INDIRECT(EDI,ESI,-1), EDX)
-LOOP_UNTIL_EQ(ESI, 16, .LOAD_INPUT)
-
- ASSIGN(EBP, ARG(1))
- ASSIGN(EAX, ARRAY4(EBP, 0))
- ASSIGN(EBX, ARRAY4(EBP, 1))
- ASSIGN(ECX, ARRAY4(EBP, 2))
- ASSIGN(EDX, ARRAY4(EBP, 3))
-
-#define MSG EDI
-#define T1 ESI
-#define T2 EBP
-
-#define FF(A, B, C, D, N, S) \
- ASSIGN(T1, ARRAY4(MSG, N)) ; \
- ASSIGN(T2, C) ; \
- XOR(T2, D) ; \
- AND(T2, B) ; \
- XOR(T2, D) ; \
- ADD(A, T1) ; \
- ADD(A, T2) ; \
- ROTL_IMM(A, S) ;
-
-#define GG(A, B, C, D, N, S) \
- ASSIGN(T1, ARRAY4(MSG, N)) ; \
- ASSIGN(T2, B) ; \
- OR(T2, C) ; \
- AND(T2, D) ; \
- ADD3_IMM(A, T1, 0x5A827999) ; \
- ASSIGN(T1, B) ; \
- AND(T1, C) ; \
- OR(T2, T1) ; \
- ADD(A, T2) ; \
- ROTL_IMM(A, S) ;
-
-#define HH(A, B, C, D, N, S) \
- ASSIGN(T1, ARRAY4(MSG, N)) ; \
- ASSIGN(T2, B) ; \
- XOR(T2, C) ; \
- XOR(T2, D) ; \
- ADD3_IMM(A, T1, 0x6ED9EBA1) ; \
- ADD(A, T2) ; \
- ROTL_IMM(A, S) ;
-
- FF(EAX,EBX,ECX,EDX, 0, 3);
- FF(EDX,EAX,EBX,ECX, 1, 7);
- FF(ECX,EDX,EAX,EBX, 2,11);
- FF(EBX,ECX,EDX,EAX, 3,19);
- FF(EAX,EBX,ECX,EDX, 4, 3);
- FF(EDX,EAX,EBX,ECX, 5, 7);
- FF(ECX,EDX,EAX,EBX, 6,11);
- FF(EBX,ECX,EDX,EAX, 7,19);
- FF(EAX,EBX,ECX,EDX, 8, 3);
- FF(EDX,EAX,EBX,ECX, 9, 7);
- FF(ECX,EDX,EAX,EBX,10,11);
- FF(EBX,ECX,EDX,EAX,11,19);
- FF(EAX,EBX,ECX,EDX,12, 3);
- FF(EDX,EAX,EBX,ECX,13, 7);
- FF(ECX,EDX,EAX,EBX,14,11);
- FF(EBX,ECX,EDX,EAX,15,19);
-
- GG(EAX,EBX,ECX,EDX, 0, 3);
- GG(EDX,EAX,EBX,ECX, 4, 5);
- GG(ECX,EDX,EAX,EBX, 8, 9);
- GG(EBX,ECX,EDX,EAX,12,13);
- GG(EAX,EBX,ECX,EDX, 1, 3);
- GG(EDX,EAX,EBX,ECX, 5, 5);
- GG(ECX,EDX,EAX,EBX, 9, 9);
- GG(EBX,ECX,EDX,EAX,13,13);
- GG(EAX,EBX,ECX,EDX, 2, 3);
- GG(EDX,EAX,EBX,ECX, 6, 5);
- GG(ECX,EDX,EAX,EBX,10, 9);
- GG(EBX,ECX,EDX,EAX,14,13);
- GG(EAX,EBX,ECX,EDX, 3, 3);
- GG(EDX,EAX,EBX,ECX, 7, 5);
- GG(ECX,EDX,EAX,EBX,11, 9);
- GG(EBX,ECX,EDX,EAX,15,13);
-
- HH(EAX,EBX,ECX,EDX, 0, 3);
- HH(EDX,EAX,EBX,ECX, 8, 9);
- HH(ECX,EDX,EAX,EBX, 4,11);
- HH(EBX,ECX,EDX,EAX,12,15);
- HH(EAX,EBX,ECX,EDX, 2, 3);
- HH(EDX,EAX,EBX,ECX,10, 9);
- HH(ECX,EDX,EAX,EBX, 6,11);
- HH(EBX,ECX,EDX,EAX,14,15);
- HH(EAX,EBX,ECX,EDX, 1, 3);
- HH(EDX,EAX,EBX,ECX, 9, 9);
- HH(ECX,EDX,EAX,EBX, 5,11);
- HH(EBX,ECX,EDX,EAX,13,15);
- HH(EAX,EBX,ECX,EDX, 3, 3);
- HH(EDX,EAX,EBX,ECX,11, 9);
- HH(ECX,EDX,EAX,EBX, 7,11);
- HH(EBX,ECX,EDX,EAX,15,15);
-
- ASSIGN(EBP, ARG(1))
- ADD(ARRAY4(EBP, 0), EAX)
- ADD(ARRAY4(EBP, 1), EBX)
- ADD(ARRAY4(EBP, 2), ECX)
- ADD(ARRAY4(EBP, 3), EDX)
-
- RESTORE_REGS()
-END_FUNCTION(botan_md4_x86_32_compress)
diff --git a/src/lib/hash/md5_x86_32/info.txt b/src/lib/hash/md5_x86_32/info.txt
deleted file mode 100644
index 769ee8389..000000000
--- a/src/lib/hash/md5_x86_32/info.txt
+++ /dev/null
@@ -1,12 +0,0 @@
-define MD5_X86_32 20131128
-
-load_on asm_ok
-
-<arch>
-x86_32
-</arch>
-
-<requires>
-asm_x86_32
-md5
-</requires>
diff --git a/src/lib/hash/md5_x86_32/md5_x86_32.cpp b/src/lib/hash/md5_x86_32/md5_x86_32.cpp
deleted file mode 100644
index 083e90900..000000000
--- a/src/lib/hash/md5_x86_32/md5_x86_32.cpp
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
-* MD5 (x86-32)
-* (C) 1999-2007 Jack Lloyd
-*
-* Botan is released under the Simplified BSD License (see license.txt)
-*/
-
-#include <botan/internal/hash_utils.h>
-#include <botan/md5_x86_32.h>
-
-namespace Botan {
-
-BOTAN_REGISTER_NAMED_T_NOARGS(HashFunction, MD5_X86_32, "MD5", "x86-32");
-
-namespace {
-
-extern "C"
-void botan_md5_x86_32_compress(u32bit[4], const byte[64], u32bit[16]);
-
-}
-
-/*
-* MD5 Compression Function
-*/
-void MD5_X86_32::compress_n(const byte input[], size_t blocks)
- {
- for(size_t i = 0; i != blocks; ++i)
- {
- botan_md5_x86_32_compress(digest.data(), input, M.data());
- input += hash_block_size();
- }
- }
-
-}
diff --git a/src/lib/hash/md5_x86_32/md5_x86_32.h b/src/lib/hash/md5_x86_32/md5_x86_32.h
deleted file mode 100644
index 2f8873a2a..000000000
--- a/src/lib/hash/md5_x86_32/md5_x86_32.h
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
-* MD5 (x86-32)
-* (C) 1999-2007 Jack Lloyd
-*
-* Botan is released under the Simplified BSD License (see license.txt)
-*/
-
-#ifndef BOTAN_MD5_X86_32_H__
-#define BOTAN_MD5_X86_32_H__
-
-#include <botan/md5.h>
-
-namespace Botan {
-
-/**
-* MD5 in x86 assembly
-*/
-class BOTAN_DLL MD5_X86_32 : public MD5
- {
- public:
- HashFunction* clone() const { return new MD5_X86_32; }
- private:
- void compress_n(const byte[], size_t blocks);
- };
-
-}
-
-#endif
diff --git a/src/lib/hash/md5_x86_32/md5_x86_32_imp.S b/src/lib/hash/md5_x86_32/md5_x86_32_imp.S
deleted file mode 100644
index 23606e93a..000000000
--- a/src/lib/hash/md5_x86_32/md5_x86_32_imp.S
+++ /dev/null
@@ -1,166 +0,0 @@
-/*
-* MD5 in x86-32 assembler
-* (C) 1999-2007 Jack Lloyd
-*
-* Botan is released under the Simplified BSD License (see license.txt)
-*/
-
-#include <botan/internal/asm_x86_32.h>
-
-START_LISTING(md5_x86_32.S)
-
-START_FUNCTION(botan_md5_x86_32_compress)
- SPILL_REGS()
-
-#define PUSHED 4
-
- ASSIGN(EBP, ARG(2)) /* input block */
- ASSIGN(EDI, ARG(3)) /* expanded words */
-
- ZEROIZE(ESI)
-
-START_LOOP(.LOAD_INPUT)
- ADD_IMM(ESI, 4)
-
- ASSIGN(EAX, ARRAY4(EBP, 0))
- ASSIGN(EBX, ARRAY4(EBP, 1))
- ASSIGN(ECX, ARRAY4(EBP, 2))
- ASSIGN(EDX, ARRAY4(EBP, 3))
-
- ADD_IMM(EBP, 16)
-
- ASSIGN(ARRAY4_INDIRECT(EDI,ESI,-4), EAX)
- ASSIGN(ARRAY4_INDIRECT(EDI,ESI,-3), EBX)
- ASSIGN(ARRAY4_INDIRECT(EDI,ESI,-2), ECX)
- ASSIGN(ARRAY4_INDIRECT(EDI,ESI,-1), EDX)
-LOOP_UNTIL_EQ(ESI, 16, .LOAD_INPUT)
-
- ASSIGN(EBP, ARG(1))
- ASSIGN(EAX, ARRAY4(EBP, 0))
- ASSIGN(EBX, ARRAY4(EBP, 1))
- ASSIGN(ECX, ARRAY4(EBP, 2))
- ASSIGN(EDX, ARRAY4(EBP, 3))
-
-#define MSG EDI
-#define T1 ESI
-#define T2 EBP
-
-#define FF(A, B, C, D, N, S, MAGIC) \
- ASSIGN(T1, ARRAY4(MSG, N)) ; \
- ASSIGN(T2, C) ; \
- XOR(T2, D) ; \
- AND(T2, B) ; \
- XOR(T2, D) ; \
- ADD3_IMM(A, T1, MAGIC) ; \
- ADD(A, T2) ; \
- ROTL_IMM(A, S) ; \
- ADD(A, B) ;
-
-#define GG(A, B, C, D, N, S, MAGIC) \
- ASSIGN(T1, ARRAY4(MSG, N)) ; \
- ASSIGN(T2, B) ; \
- XOR(T2, C) ; \
- AND(T2, D) ; \
- XOR(T2, C) ; \
- ADD3_IMM(A, T1, MAGIC) ; \
- ADD(A, T2) ; \
- ROTL_IMM(A, S) ; \
- ADD(A, B) ;
-
-#define HH(A, B, C, D, N, S, MAGIC) \
- ASSIGN(T1, ARRAY4(MSG, N)) ; \
- ASSIGN(T2, B) ; \
- XOR(T2, C) ; \
- XOR(T2, D) ; \
- ADD3_IMM(A, T1, MAGIC) ; \
- ADD(A, T2) ; \
- ROTL_IMM(A, S) ; \
- ADD(A, B) ;
-
-#define II(A, B, C, D, N, S, MAGIC) \
- ASSIGN(T1, ARRAY4(MSG, N)) ; \
- ASSIGN(T2, D) ; \
- NOT(T2) ; \
- OR(T2, B) ; \
- XOR(T2, C) ; \
- ADD3_IMM(A, T1, MAGIC) ; \
- ADD(A, T2) ; \
- ROTL_IMM(A, S) ; \
- ADD(A, B) ;
-
- FF(EAX,EBX,ECX,EDX, 0, 7,0xD76AA478);
- FF(EDX,EAX,EBX,ECX, 1,12,0xE8C7B756);
- FF(ECX,EDX,EAX,EBX, 2,17,0x242070DB);
- FF(EBX,ECX,EDX,EAX, 3,22,0xC1BDCEEE);
- FF(EAX,EBX,ECX,EDX, 4, 7,0xF57C0FAF);
- FF(EDX,EAX,EBX,ECX, 5,12,0x4787C62A);
- FF(ECX,EDX,EAX,EBX, 6,17,0xA8304613);
- FF(EBX,ECX,EDX,EAX, 7,22,0xFD469501);
- FF(EAX,EBX,ECX,EDX, 8, 7,0x698098D8);
- FF(EDX,EAX,EBX,ECX, 9,12,0x8B44F7AF);
- FF(ECX,EDX,EAX,EBX,10,17,0xFFFF5BB1);
- FF(EBX,ECX,EDX,EAX,11,22,0x895CD7BE);
- FF(EAX,EBX,ECX,EDX,12, 7,0x6B901122);
- FF(EDX,EAX,EBX,ECX,13,12,0xFD987193);
- FF(ECX,EDX,EAX,EBX,14,17,0xA679438E);
- FF(EBX,ECX,EDX,EAX,15,22,0x49B40821);
-
- GG(EAX,EBX,ECX,EDX, 1, 5,0xF61E2562);
- GG(EDX,EAX,EBX,ECX, 6, 9,0xC040B340);
- GG(ECX,EDX,EAX,EBX,11,14,0x265E5A51);
- GG(EBX,ECX,EDX,EAX, 0,20,0xE9B6C7AA);
- GG(EAX,EBX,ECX,EDX, 5, 5,0xD62F105D);
- GG(EDX,EAX,EBX,ECX,10, 9,0x02441453);
- GG(ECX,EDX,EAX,EBX,15,14,0xD8A1E681);
- GG(EBX,ECX,EDX,EAX, 4,20,0xE7D3FBC8);
- GG(EAX,EBX,ECX,EDX, 9, 5,0x21E1CDE6);
- GG(EDX,EAX,EBX,ECX,14, 9,0xC33707D6);
- GG(ECX,EDX,EAX,EBX, 3,14,0xF4D50D87);
- GG(EBX,ECX,EDX,EAX, 8,20,0x455A14ED);
- GG(EAX,EBX,ECX,EDX,13, 5,0xA9E3E905);
- GG(EDX,EAX,EBX,ECX, 2, 9,0xFCEFA3F8);
- GG(ECX,EDX,EAX,EBX, 7,14,0x676F02D9);
- GG(EBX,ECX,EDX,EAX,12,20,0x8D2A4C8A);
-
- HH(EAX,EBX,ECX,EDX, 5, 4,0xFFFA3942);
- HH(EDX,EAX,EBX,ECX, 8,11,0x8771F681);
- HH(ECX,EDX,EAX,EBX,11,16,0x6D9D6122);
- HH(EBX,ECX,EDX,EAX,14,23,0xFDE5380C);
- HH(EAX,EBX,ECX,EDX, 1, 4,0xA4BEEA44);
- HH(EDX,EAX,EBX,ECX, 4,11,0x4BDECFA9);
- HH(ECX,EDX,EAX,EBX, 7,16,0xF6BB4B60);
- HH(EBX,ECX,EDX,EAX,10,23,0xBEBFBC70);
- HH(EAX,EBX,ECX,EDX,13, 4,0x289B7EC6);
- HH(EDX,EAX,EBX,ECX, 0,11,0xEAA127FA);
- HH(ECX,EDX,EAX,EBX, 3,16,0xD4EF3085);
- HH(EBX,ECX,EDX,EAX, 6,23,0x04881D05);
- HH(EAX,EBX,ECX,EDX, 9, 4,0xD9D4D039);
- HH(EDX,EAX,EBX,ECX,12,11,0xE6DB99E5);
- HH(ECX,EDX,EAX,EBX,15,16,0x1FA27CF8);
- HH(EBX,ECX,EDX,EAX, 2,23,0xC4AC5665);
-
- II(EAX,EBX,ECX,EDX, 0, 6,0xF4292244);
- II(EDX,EAX,EBX,ECX, 7,10,0x432AFF97);
- II(ECX,EDX,EAX,EBX,14,15,0xAB9423A7);
- II(EBX,ECX,EDX,EAX, 5,21,0xFC93A039);
- II(EAX,EBX,ECX,EDX,12, 6,0x655B59C3);
- II(EDX,EAX,EBX,ECX, 3,10,0x8F0CCC92);
- II(ECX,EDX,EAX,EBX,10,15,0xFFEFF47D);
- II(EBX,ECX,EDX,EAX, 1,21,0x85845DD1);
- II(EAX,EBX,ECX,EDX, 8, 6,0x6FA87E4F);
- II(EDX,EAX,EBX,ECX,15,10,0xFE2CE6E0);
- II(ECX,EDX,EAX,EBX, 6,15,0xA3014314);
- II(EBX,ECX,EDX,EAX,13,21,0x4E0811A1);
- II(EAX,EBX,ECX,EDX, 4, 6,0xF7537E82);
- II(EDX,EAX,EBX,ECX,11,10,0xBD3AF235);
- II(ECX,EDX,EAX,EBX, 2,15,0x2AD7D2BB);
- II(EBX,ECX,EDX,EAX, 9,21,0xEB86D391);
-
- ASSIGN(EBP, ARG(1))
- ADD(ARRAY4(EBP, 0), EAX)
- ADD(ARRAY4(EBP, 1), EBX)
- ADD(ARRAY4(EBP, 2), ECX)
- ADD(ARRAY4(EBP, 3), EDX)
-
- RESTORE_REGS()
-END_FUNCTION(botan_md5_x86_32_compress)
diff --git a/src/lib/hash/sha1_x86_32/info.txt b/src/lib/hash/sha1_x86_32/info.txt
deleted file mode 100644
index 51e3f6587..000000000
--- a/src/lib/hash/sha1_x86_32/info.txt
+++ /dev/null
@@ -1,12 +0,0 @@
-define SHA1_X86_32 20131128
-
-load_on asm_ok
-
-<arch>
-x86_32
-</arch>
-
-<requires>
-asm_x86_32
-sha1
-</requires>
diff --git a/src/lib/hash/sha1_x86_32/sha1_x86_32.cpp b/src/lib/hash/sha1_x86_32/sha1_x86_32.cpp
deleted file mode 100644
index c5986221e..000000000
--- a/src/lib/hash/sha1_x86_32/sha1_x86_32.cpp
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
-* SHA-160 in x86-32
-* (C) 1999-2007 Jack Lloyd
-*
-* Botan is released under the Simplified BSD License (see license.txt)
-*/
-
-#include <botan/internal/hash_utils.h>
-#include <botan/sha1_x86_32.h>
-
-namespace Botan {
-
-BOTAN_REGISTER_NAMED_T_NOARGS(HashFunction, SHA_160_X86_32, "SHA-160", "x86-32");
-
-namespace {
-
-extern "C"
-void botan_sha160_x86_32_compress(u32bit[5], const byte[64], u32bit[81]);
-
-}
-
-/*
-* SHA-160 Compression Function
-*/
-void SHA_160_X86_32::compress_n(const byte input[], size_t blocks)
- {
- for(size_t i = 0; i != blocks; ++i)
- {
- botan_sha160_x86_32_compress(digest.data(), input, W.data());
- input += hash_block_size();
- }
- }
-
-}
diff --git a/src/lib/hash/sha1_x86_32/sha1_x86_32.h b/src/lib/hash/sha1_x86_32/sha1_x86_32.h
deleted file mode 100644
index 738000744..000000000
--- a/src/lib/hash/sha1_x86_32/sha1_x86_32.h
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
-* SHA-160 in x86-32 asm
-* (C) 1999-2007 Jack Lloyd
-*
-* Botan is released under the Simplified BSD License (see license.txt)
-*/
-
-#ifndef BOTAN_SHA_160_X86_32_H__
-#define BOTAN_SHA_160_X86_32_H__
-
-#include <botan/sha160.h>
-
-namespace Botan {
-
-/**
-* SHA-160 in x86 assembly
-*/
-class BOTAN_DLL SHA_160_X86_32 : public SHA_160
- {
- public:
- HashFunction* clone() const { return new SHA_160_X86_32; }
-
- // Note 81 instead of normal 80: x86-32 asm needs an extra temp
- SHA_160_X86_32() : SHA_160(81) {}
- private:
- void compress_n(const byte[], size_t blocks);
- };
-
-}
-
-#endif
diff --git a/src/lib/hash/sha1_x86_32/sha1_x86_32_imp.S b/src/lib/hash/sha1_x86_32/sha1_x86_32_imp.S
deleted file mode 100644
index 6ab5ed78d..000000000
--- a/src/lib/hash/sha1_x86_32/sha1_x86_32_imp.S
+++ /dev/null
@@ -1,244 +0,0 @@
-/*
-* SHA-1 in x86-32 asm
-* (C) 1999-2007 Jack Lloyd
-*
-* Botan is released under the Simplified BSD License (see license.txt)
-*/
-
-#include <botan/internal/asm_x86_32.h>
-
-START_LISTING(sha1_x86_32_imp.S)
-
-START_FUNCTION(botan_sha160_x86_32_compress)
- SPILL_REGS()
-
-#define PUSHED 4
-
- ASSIGN(EDI, ARG(2))
- ASSIGN(EBP, ARG(3))
-
- ZEROIZE(ESI)
-
-START_LOOP(.LOAD_INPUT)
- ADD_IMM(ESI, 4)
-
- ASSIGN(EAX, ARRAY4(EDI, 0))
- ASSIGN(EBX, ARRAY4(EDI, 1))
- ASSIGN(ECX, ARRAY4(EDI, 2))
- ASSIGN(EDX, ARRAY4(EDI, 3))
-
- ADD_IMM(EDI, 16)
-
- BSWAP(EAX)
- BSWAP(EBX)
- BSWAP(ECX)
- BSWAP(EDX)
-
- ASSIGN(ARRAY4_INDIRECT(EBP,ESI,-4), EAX)
- ASSIGN(ARRAY4_INDIRECT(EBP,ESI,-3), EBX)
- ASSIGN(ARRAY4_INDIRECT(EBP,ESI,-2), ECX)
- ASSIGN(ARRAY4_INDIRECT(EBP,ESI,-1), EDX)
-LOOP_UNTIL_EQ(ESI, 16, .LOAD_INPUT)
-
- ADD2_IMM(EDI, EBP, 64)
-
-START_LOOP(.L_SHA_EXPANSION)
- ADD_IMM(ESI, 4)
-
- ZEROIZE(EAX)
- ASSIGN(EBX, ARRAY4(EDI, -1))
- ASSIGN(ECX, ARRAY4(EDI, -2))
- ASSIGN(EDX, ARRAY4(EDI, -3))
-
- XOR(EAX, ARRAY4(EDI, -5))
- XOR(EBX, ARRAY4(EDI, -6))
- XOR(ECX, ARRAY4(EDI, -7))
- XOR(EDX, ARRAY4(EDI, -8))
-
- XOR(EAX, ARRAY4(EDI, -11))
- XOR(EBX, ARRAY4(EDI, -12))
- XOR(ECX, ARRAY4(EDI, -13))
- XOR(EDX, ARRAY4(EDI, -14))
-
- XOR(EAX, ARRAY4(EDI, -13))
- XOR(EBX, ARRAY4(EDI, -14))
- XOR(ECX, ARRAY4(EDI, -15))
- XOR(EDX, ARRAY4(EDI, -16))
-
- ROTL_IMM(EDX, 1)
- ROTL_IMM(ECX, 1)
- ROTL_IMM(EBX, 1)
- XOR(EAX, EDX)
- ROTL_IMM(EAX, 1)
-
- ASSIGN(ARRAY4(EDI, 0), EDX)
- ASSIGN(ARRAY4(EDI, 1), ECX)
- ASSIGN(ARRAY4(EDI, 2), EBX)
- ASSIGN(ARRAY4(EDI, 3), EAX)
-
- ADD_IMM(EDI, 16)
-LOOP_UNTIL_EQ(ESI, 80, .L_SHA_EXPANSION)
-
-#define MAGIC1 0x5A827999
-#define MAGIC2 0x6ED9EBA1
-#define MAGIC3 0x8F1BBCDC
-#define MAGIC4 0xCA62C1D6
-
-#define MSG ESP
-#define T2 EBP
-
-#define F1(A, B, C, D, E, F, N) \
- ASSIGN(T2, ARRAY4(MSG, N)) ; \
- ASSIGN(A, F) ; \
- ROTL_IMM(F, 5) ; \
- ADD(F, E) ; \
- ASSIGN(E, C) ; \
- XOR(E, D) ; \
- ADD3_IMM(F, T2, MAGIC1) ; \
- AND(E, B) ; \
- XOR(E, D) ; \
- ROTR_IMM(B, 2) ; \
- ADD(E, F) ;
-
-#define F2_4(A, B, C, D, E, F, N, MAGIC) \
- ASSIGN(T2, ARRAY4(MSG, N)) ; \
- ASSIGN(A, F) ; \
- ROTL_IMM(F, 5) ; \
- ADD(F, E) ; \
- ASSIGN(E, B) ; \
- XOR(E, C) ; \
- ADD3_IMM(F, T2, MAGIC) ; \
- XOR(E, D) ; \
- ROTR_IMM(B, 2) ; \
- ADD(E, F) ;
-
-#define F3(A, B, C, D, E, F, N) \
- ASSIGN(T2, ARRAY4(MSG, N)) ; \
- ASSIGN(A, F) ; \
- ROTL_IMM(F, 5) ; \
- ADD(F, E) ; \
- ASSIGN(E, B) ; \
- OR(E, C) ; \
- AND(E, D) ; \
- ADD3_IMM(F, T2, MAGIC3) ; \
- ASSIGN(T2, B) ; \
- AND(T2, C) ; \
- OR(E, T2) ; \
- ROTR_IMM(B, 2) ; \
- ADD(E, F) ;
-
-#define F2(A, B, C, D, E, F, MSG) \
- F2_4(A, B, C, D, E, F, MSG, MAGIC2)
-
-#define F4(A, B, C, D, E, F, MSG) \
- F2_4(A, B, C, D, E, F, MSG, MAGIC4)
-
- ASSIGN(EAX, ARG(1))
- ASSIGN(EDI, ARRAY4(EAX, 0))
- ASSIGN(EBX, ARRAY4(EAX, 1))
- ASSIGN(ECX, ARRAY4(EAX, 2))
- ASSIGN(EDX, ARRAY4(EAX, 3))
- ASSIGN(ESI, ARRAY4(EAX, 4))
-
- ASSIGN(ARRAY4(EBP, 80), ESP)
- ASSIGN(ESP, EBP)
-
- /* First Round */
- F1(EAX, EBX, ECX, EDX, ESI, EDI, 0)
- F1(EDI, EAX, EBX, ECX, EDX, ESI, 1)
- F1(ESI, EDI, EAX, EBX, ECX, EDX, 2)
- F1(EDX, ESI, EDI, EAX, EBX, ECX, 3)
- F1(ECX, EDX, ESI, EDI, EAX, EBX, 4)
- F1(EBX, ECX, EDX, ESI, EDI, EAX, 5)
- F1(EAX, EBX, ECX, EDX, ESI, EDI, 6)
- F1(EDI, EAX, EBX, ECX, EDX, ESI, 7)
- F1(ESI, EDI, EAX, EBX, ECX, EDX, 8)
- F1(EDX, ESI, EDI, EAX, EBX, ECX, 9)
- F1(ECX, EDX, ESI, EDI, EAX, EBX, 10)
- F1(EBX, ECX, EDX, ESI, EDI, EAX, 11)
- F1(EAX, EBX, ECX, EDX, ESI, EDI, 12)
- F1(EDI, EAX, EBX, ECX, EDX, ESI, 13)
- F1(ESI, EDI, EAX, EBX, ECX, EDX, 14)
- F1(EDX, ESI, EDI, EAX, EBX, ECX, 15)
- F1(ECX, EDX, ESI, EDI, EAX, EBX, 16)
- F1(EBX, ECX, EDX, ESI, EDI, EAX, 17)
- F1(EAX, EBX, ECX, EDX, ESI, EDI, 18)
- F1(EDI, EAX, EBX, ECX, EDX, ESI, 19)
-
- /* Second Round */
- F2(ESI, EDI, EAX, EBX, ECX, EDX, 20)
- F2(EDX, ESI, EDI, EAX, EBX, ECX, 21)
- F2(ECX, EDX, ESI, EDI, EAX, EBX, 22)
- F2(EBX, ECX, EDX, ESI, EDI, EAX, 23)
- F2(EAX, EBX, ECX, EDX, ESI, EDI, 24)
- F2(EDI, EAX, EBX, ECX, EDX, ESI, 25)
- F2(ESI, EDI, EAX, EBX, ECX, EDX, 26)
- F2(EDX, ESI, EDI, EAX, EBX, ECX, 27)
- F2(ECX, EDX, ESI, EDI, EAX, EBX, 28)
- F2(EBX, ECX, EDX, ESI, EDI, EAX, 29)
- F2(EAX, EBX, ECX, EDX, ESI, EDI, 30)
- F2(EDI, EAX, EBX, ECX, EDX, ESI, 31)
- F2(ESI, EDI, EAX, EBX, ECX, EDX, 32)
- F2(EDX, ESI, EDI, EAX, EBX, ECX, 33)
- F2(ECX, EDX, ESI, EDI, EAX, EBX, 34)
- F2(EBX, ECX, EDX, ESI, EDI, EAX, 35)
- F2(EAX, EBX, ECX, EDX, ESI, EDI, 36)
- F2(EDI, EAX, EBX, ECX, EDX, ESI, 37)
- F2(ESI, EDI, EAX, EBX, ECX, EDX, 38)
- F2(EDX, ESI, EDI, EAX, EBX, ECX, 39)
-
- /* Third Round */
- F3(ECX, EDX, ESI, EDI, EAX, EBX, 40)
- F3(EBX, ECX, EDX, ESI, EDI, EAX, 41)
- F3(EAX, EBX, ECX, EDX, ESI, EDI, 42)
- F3(EDI, EAX, EBX, ECX, EDX, ESI, 43)
- F3(ESI, EDI, EAX, EBX, ECX, EDX, 44)
- F3(EDX, ESI, EDI, EAX, EBX, ECX, 45)
- F3(ECX, EDX, ESI, EDI, EAX, EBX, 46)
- F3(EBX, ECX, EDX, ESI, EDI, EAX, 47)
- F3(EAX, EBX, ECX, EDX, ESI, EDI, 48)
- F3(EDI, EAX, EBX, ECX, EDX, ESI, 49)
- F3(ESI, EDI, EAX, EBX, ECX, EDX, 50)
- F3(EDX, ESI, EDI, EAX, EBX, ECX, 51)
- F3(ECX, EDX, ESI, EDI, EAX, EBX, 52)
- F3(EBX, ECX, EDX, ESI, EDI, EAX, 53)
- F3(EAX, EBX, ECX, EDX, ESI, EDI, 54)
- F3(EDI, EAX, EBX, ECX, EDX, ESI, 55)
- F3(ESI, EDI, EAX, EBX, ECX, EDX, 56)
- F3(EDX, ESI, EDI, EAX, EBX, ECX, 57)
- F3(ECX, EDX, ESI, EDI, EAX, EBX, 58)
- F3(EBX, ECX, EDX, ESI, EDI, EAX, 59)
-
- /* Fourth Round */
- F4(EAX, EBX, ECX, EDX, ESI, EDI, 60)
- F4(EDI, EAX, EBX, ECX, EDX, ESI, 61)
- F4(ESI, EDI, EAX, EBX, ECX, EDX, 62)
- F4(EDX, ESI, EDI, EAX, EBX, ECX, 63)
- F4(ECX, EDX, ESI, EDI, EAX, EBX, 64)
- F4(EBX, ECX, EDX, ESI, EDI, EAX, 65)
- F4(EAX, EBX, ECX, EDX, ESI, EDI, 66)
- F4(EDI, EAX, EBX, ECX, EDX, ESI, 67)
- F4(ESI, EDI, EAX, EBX, ECX, EDX, 68)
- F4(EDX, ESI, EDI, EAX, EBX, ECX, 69)
- F4(ECX, EDX, ESI, EDI, EAX, EBX, 70)
- F4(EBX, ECX, EDX, ESI, EDI, EAX, 71)
- F4(EAX, EBX, ECX, EDX, ESI, EDI, 72)
- F4(EDI, EAX, EBX, ECX, EDX, ESI, 73)
- F4(ESI, EDI, EAX, EBX, ECX, EDX, 74)
- F4(EDX, ESI, EDI, EAX, EBX, ECX, 75)
- F4(ECX, EDX, ESI, EDI, EAX, EBX, 76)
- F4(EBX, ECX, EDX, ESI, EDI, EAX, 77)
- F4(EAX, EBX, ECX, EDX, ESI, EDI, 78)
- F4(EDI, EAX, EBX, ECX, EDX, ESI, 79)
-
- ASSIGN(ESP, ARRAY4(ESP, 80))
-
- ASSIGN(EBP, ARG(1))
- ADD(ARRAY4(EBP, 0), EDX)
- ADD(ARRAY4(EBP, 1), EDI)
- ADD(ARRAY4(EBP, 2), EAX)
- ADD(ARRAY4(EBP, 3), EBX)
- ADD(ARRAY4(EBP, 4), ECX)
-
- RESTORE_REGS()
-END_FUNCTION(botan_sha160_x86_32_compress)
diff --git a/src/lib/hash/sha1_x86_64/info.txt b/src/lib/hash/sha1_x86_64/info.txt
deleted file mode 100644
index db7cdcb92..000000000
--- a/src/lib/hash/sha1_x86_64/info.txt
+++ /dev/null
@@ -1,12 +0,0 @@
-define SHA1_X86_64 20131128
-
-load_on asm_ok
-
-<arch>
-x86_64
-</arch>
-
-<requires>
-asm_x86_64
-sha1
-</requires>
diff --git a/src/lib/hash/sha1_x86_64/sha1_x86_64.cpp b/src/lib/hash/sha1_x86_64/sha1_x86_64.cpp
deleted file mode 100644
index f2fbff1a6..000000000
--- a/src/lib/hash/sha1_x86_64/sha1_x86_64.cpp
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
-* SHA-160
-* (C) 1999-2007 Jack Lloyd
-*
-* Botan is released under the Simplified BSD License (see license.txt)
-*/
-
-#include <botan/internal/hash_utils.h>
-#include <botan/sha1_x86_64.h>
-
-namespace Botan {
-
-BOTAN_REGISTER_NAMED_T_NOARGS(HashFunction, SHA_160_X86_64, "SHA-160", "x86-64");
-
-namespace {
-
-extern "C"
-void botan_sha160_x86_64_compress(u32bit[5], const byte[64], u32bit[80]);
-
-}
-
-/*
-* SHA-160 Compression Function
-*/
-void SHA_160_X86_64::compress_n(const byte input[], size_t blocks)
- {
- for(size_t i = 0; i != blocks; ++i)
- {
- botan_sha160_x86_64_compress(digest.data(), input, W.data());
- input += hash_block_size();
- }
- }
-
-}
diff --git a/src/lib/hash/sha1_x86_64/sha1_x86_64.h b/src/lib/hash/sha1_x86_64/sha1_x86_64.h
deleted file mode 100644
index 10bb8bd16..000000000
--- a/src/lib/hash/sha1_x86_64/sha1_x86_64.h
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
-* SHA-160 (x86-64)
-* (C) 1999-2007 Jack Lloyd
-*
-* Botan is released under the Simplified BSD License (see license.txt)
-*/
-
-#ifndef BOTAN_SHA_160_X86_64_H__
-#define BOTAN_SHA_160_X86_64_H__
-
-#include <botan/sha160.h>
-
-namespace Botan {
-
-/**
-* SHA-160 in x86-64 assembly
-*/
-class BOTAN_DLL SHA_160_X86_64 : public SHA_160
- {
- public:
- HashFunction* clone() const { return new SHA_160_X86_64; }
- private:
- void compress_n(const byte[], size_t blocks);
- };
-
-}
-
-#endif
diff --git a/src/lib/hash/sha1_x86_64/sha1_x86_64_imp.S b/src/lib/hash/sha1_x86_64/sha1_x86_64_imp.S
deleted file mode 100644
index dd46a9e56..000000000
--- a/src/lib/hash/sha1_x86_64/sha1_x86_64_imp.S
+++ /dev/null
@@ -1,266 +0,0 @@
-/*
-* SHA-1 in x86-64 assembler
-* (C) 1999-2007 Jack Lloyd
-*
-* Botan is released under the Simplified BSD License (see license.txt)
-*/
-
-#include <botan/internal/asm_x86_64.h>
-
-START_LISTING(sha1_x86_64_imp.S)
-
-START_FUNCTION(botan_sha160_x86_64_compress)
-
-#define DIGEST_ARR %rdi
-#define INPUT %rsi
-#define W %rdx
-#define LOOP_CTR %eax
-
-#define A %r8d
-#define B %r9d
-#define C %r10d
-#define D %r11d
-#define E %ecx
-
- ZEROIZE(LOOP_CTR)
-
-ALIGN;
-.LOOP_LOAD_INPUT:
- addl $8, %eax
-
- movq ARRAY8(INPUT, 0), %r8
- movq ARRAY8(INPUT, 1), %r9
- movq ARRAY8(INPUT, 2), %r10
- movq ARRAY8(INPUT, 3), %r11
-
- bswap %r8
- bswap %r9
- bswap %r10
- bswap %r11
-
- rolq $32, %r8
- rolq $32, %r9
- rolq $32, %r10
- rolq $32, %r11
-
- movq %r8, ARRAY8(W, 0)
- movq %r9, ARRAY8(W, 1)
- movq %r10, ARRAY8(W, 2)
- movq %r11, ARRAY8(W, 3)
-
- addq $32, W
- addq $32, INPUT
-
- cmp IMM(16), LOOP_CTR
- jne .LOOP_LOAD_INPUT
-
-/*
-#define A %r8d
-#define B %r9d
-#define C %r10d
-#define D %r11d
-#define E %ecx
-*/
-
-ALIGN;
-.LOOP_EXPANSION:
- addl $4, LOOP_CTR
-
- ZEROIZE(A)
- ASSIGN(B, ARRAY4(W, -1))
- ASSIGN(C, ARRAY4(W, -2))
- ASSIGN(D, ARRAY4(W, -3))
-
- XOR(A, ARRAY4(W, -5))
- XOR(B, ARRAY4(W, -6))
- XOR(C, ARRAY4(W, -7))
- XOR(D, ARRAY4(W, -8))
-
- XOR(A, ARRAY4(W, -11))
- XOR(B, ARRAY4(W, -12))
- XOR(C, ARRAY4(W, -13))
- XOR(D, ARRAY4(W, -14))
-
- XOR(A, ARRAY4(W, -13))
- XOR(B, ARRAY4(W, -14))
- XOR(C, ARRAY4(W, -15))
- XOR(D, ARRAY4(W, -16))
-
- ROTL_IMM(D, 1)
- ROTL_IMM(C, 1)
- ROTL_IMM(B, 1)
- XOR(A, D)
- ROTL_IMM(A, 1)
-
- ASSIGN(ARRAY4(W, 0), D)
- ASSIGN(ARRAY4(W, 1), C)
- ASSIGN(ARRAY4(W, 2), B)
- ASSIGN(ARRAY4(W, 3), A)
-
- addq $16, W
- cmp IMM(80), LOOP_CTR
- jne .LOOP_EXPANSION
-
- subq $320, W
-
-/*
-* Using negative values for SHA-1 constants > 2^31 to work around
-* a bug in binutils not accepting large lea displacements.
-* -0x70E44324 == 0x8F1BBCDC
-* -0x359D3E2A == 0xCA62C1D6
-*/
-#define MAGIC1 0x5A827999
-#define MAGIC2 0x6ED9EBA1
-#define MAGIC3 -0x70E44324
-#define MAGIC4 -0x359D3E2A
-
-#define T %esi
-#define T2 %eax
-
-#define F1(A, B, C, D, E, F, N) \
- ASSIGN(T2, ARRAY4(W, N)) ; \
- ASSIGN(A, F) ; \
- ROTL_IMM(F, 5) ; \
- ADD(F, E) ; \
- ASSIGN(E, C) ; \
- XOR(E, D) ; \
- ADD3_IMM(F, T2, MAGIC1) ; \
- AND(E, B) ; \
- XOR(E, D) ; \
- ROTR_IMM(B, 2) ; \
- ADD(E, F) ;
-
-#define F2_4(A, B, C, D, E, F, N, MAGIC) \
- ASSIGN(T2, ARRAY4(W, N)) ; \
- ASSIGN(A, F) ; \
- ROTL_IMM(F, 5) ; \
- ADD(F, E) ; \
- ASSIGN(E, B) ; \
- XOR(E, C) ; \
- ADD3_IMM(F, T2, MAGIC) ; \
- XOR(E, D) ; \
- ROTR_IMM(B, 2) ; \
- ADD(E, F) ;
-
-#define F3(A, B, C, D, E, F, N) \
- ASSIGN(T2, ARRAY4(W, N)) ; \
- ASSIGN(A, F) ; \
- ROTL_IMM(F, 5) ; \
- ADD(F, E) ; \
- ASSIGN(E, B) ; \
- OR(E, C) ; \
- AND(E, D) ; \
- ADD3_IMM(F, T2, MAGIC3) ; \
- ASSIGN(T2, B) ; \
- AND(T2, C) ; \
- OR(E, T2) ; \
- ROTR_IMM(B, 2) ; \
- ADD(E, F) ;
-
-#define F2(A, B, C, D, E, F, W) \
- F2_4(A, B, C, D, E, F, W, MAGIC2)
-
-#define F4(A, B, C, D, E, F, W) \
- F2_4(A, B, C, D, E, F, W, MAGIC4)
-
- ASSIGN(T, ARRAY4(DIGEST_ARR, 0))
- ASSIGN(B, ARRAY4(DIGEST_ARR, 1))
- ASSIGN(C, ARRAY4(DIGEST_ARR, 2))
- ASSIGN(D, ARRAY4(DIGEST_ARR, 3))
- ASSIGN(E, ARRAY4(DIGEST_ARR, 4))
-
- /* First Round */
- F1(A, B, C, D, E, T, 0)
- F1(T, A, B, C, D, E, 1)
- F1(E, T, A, B, C, D, 2)
- F1(D, E, T, A, B, C, 3)
- F1(C, D, E, T, A, B, 4)
- F1(B, C, D, E, T, A, 5)
- F1(A, B, C, D, E, T, 6)
- F1(T, A, B, C, D, E, 7)
- F1(E, T, A, B, C, D, 8)
- F1(D, E, T, A, B, C, 9)
- F1(C, D, E, T, A, B, 10)
- F1(B, C, D, E, T, A, 11)
- F1(A, B, C, D, E, T, 12)
- F1(T, A, B, C, D, E, 13)
- F1(E, T, A, B, C, D, 14)
- F1(D, E, T, A, B, C, 15)
- F1(C, D, E, T, A, B, 16)
- F1(B, C, D, E, T, A, 17)
- F1(A, B, C, D, E, T, 18)
- F1(T, A, B, C, D, E, 19)
-
- /* Second Round */
- F2(E, T, A, B, C, D, 20)
- F2(D, E, T, A, B, C, 21)
- F2(C, D, E, T, A, B, 22)
- F2(B, C, D, E, T, A, 23)
- F2(A, B, C, D, E, T, 24)
- F2(T, A, B, C, D, E, 25)
- F2(E, T, A, B, C, D, 26)
- F2(D, E, T, A, B, C, 27)
- F2(C, D, E, T, A, B, 28)
- F2(B, C, D, E, T, A, 29)
- F2(A, B, C, D, E, T, 30)
- F2(T, A, B, C, D, E, 31)
- F2(E, T, A, B, C, D, 32)
- F2(D, E, T, A, B, C, 33)
- F2(C, D, E, T, A, B, 34)
- F2(B, C, D, E, T, A, 35)
- F2(A, B, C, D, E, T, 36)
- F2(T, A, B, C, D, E, 37)
- F2(E, T, A, B, C, D, 38)
- F2(D, E, T, A, B, C, 39)
-
- /* Third Round */
- F3(C, D, E, T, A, B, 40)
- F3(B, C, D, E, T, A, 41)
- F3(A, B, C, D, E, T, 42)
- F3(T, A, B, C, D, E, 43)
- F3(E, T, A, B, C, D, 44)
- F3(D, E, T, A, B, C, 45)
- F3(C, D, E, T, A, B, 46)
- F3(B, C, D, E, T, A, 47)
- F3(A, B, C, D, E, T, 48)
- F3(T, A, B, C, D, E, 49)
- F3(E, T, A, B, C, D, 50)
- F3(D, E, T, A, B, C, 51)
- F3(C, D, E, T, A, B, 52)
- F3(B, C, D, E, T, A, 53)
- F3(A, B, C, D, E, T, 54)
- F3(T, A, B, C, D, E, 55)
- F3(E, T, A, B, C, D, 56)
- F3(D, E, T, A, B, C, 57)
- F3(C, D, E, T, A, B, 58)
- F3(B, C, D, E, T, A, 59)
-
- /* Fourth Round */
- F4(A, B, C, D, E, T, 60)
- F4(T, A, B, C, D, E, 61)
- F4(E, T, A, B, C, D, 62)
- F4(D, E, T, A, B, C, 63)
- F4(C, D, E, T, A, B, 64)
- F4(B, C, D, E, T, A, 65)
- F4(A, B, C, D, E, T, 66)
- F4(T, A, B, C, D, E, 67)
- F4(E, T, A, B, C, D, 68)
- F4(D, E, T, A, B, C, 69)
- F4(C, D, E, T, A, B, 70)
- F4(B, C, D, E, T, A, 71)
- F4(A, B, C, D, E, T, 72)
- F4(T, A, B, C, D, E, 73)
- F4(E, T, A, B, C, D, 74)
- F4(D, E, T, A, B, C, 75)
- F4(C, D, E, T, A, B, 76)
- F4(B, C, D, E, T, A, 77)
- F4(A, B, C, D, E, T, 78)
- F4(T, A, B, C, D, E, 79)
-
- ADD(ARRAY4(DIGEST_ARR, 0), D)
- ADD(ARRAY4(DIGEST_ARR, 1), T)
- ADD(ARRAY4(DIGEST_ARR, 2), A)
- ADD(ARRAY4(DIGEST_ARR, 3), B)
- ADD(ARRAY4(DIGEST_ARR, 4), C)
-
-END_FUNCTION(botan_sha160_x86_64_compress)
diff --git a/src/lib/utils/asm_x86_32/asm_x86_32.h b/src/lib/utils/asm_x86_32/asm_x86_32.h
deleted file mode 100644
index 7149b8db5..000000000
--- a/src/lib/utils/asm_x86_32/asm_x86_32.h
+++ /dev/null
@@ -1,128 +0,0 @@
-/*
-* Assembly Macros for 32-bit x86
-* (C) 1999-2008 Jack Lloyd
-*
-* Botan is released under the Simplified BSD License (see license.txt)
-*/
-
-#ifndef BOTAN_ASM_MACROS_X86_32_H__
-#define BOTAN_ASM_MACROS_X86_32_H__
-
-/*
-* General/Global Macros
-*/
-#define ALIGN .p2align 4,,15
-
-#define START_LISTING(FILENAME) \
- .file #FILENAME; \
- .text; \
- ALIGN;
-
-#if defined(__ELF__)
-.section .note.GNU-stack,"",%progbits
-#endif
-
-/*
-* Function Definitions
-*/
-#define START_FUNCTION(func_name) \
- ALIGN; \
- .global func_name; \
- .type func_name,@function; \
-func_name:
-
-#define END_FUNCTION(func_name) \
- ret
-
-/*
-* Loop Control
-*/
-#define START_LOOP(LABEL) \
- ALIGN; \
- LABEL##_LOOP:
-
-#define LOOP_UNTIL_EQ(REG, NUM, LABEL) \
- cmpl IMM(NUM), REG; \
- jne LABEL##_LOOP
-
-#define LOOP_UNTIL_LT(REG, NUM, LABEL) \
- cmpl IMM(NUM), REG; \
- jge LABEL##_LOOP
-
-/*
- Conditional Jumps
-*/
-#define JUMP_IF_ZERO(REG, LABEL) \
- cmpl IMM(0), REG; \
- jz LABEL
-
-#define JUMP_IF_LT(REG, NUM, LABEL) \
- cmpl IMM(NUM), REG; \
- jl LABEL
-
-/*
-* Register Names
-*/
-#define EAX %eax
-#define EBX %ebx
-#define ECX %ecx
-#define EDX %edx
-#define EBP %ebp
-#define EDI %edi
-#define ESI %esi
-#define ESP %esp
-
-/*
-* Memory Access Operations
-*/
-#define ARRAY1(REG, NUM) (NUM)(REG)
-#define ARRAY4(REG, NUM) 4*(NUM)(REG)
-#define ARRAY4_INDIRECT(BASE, OFFSET, NUM) 4*(NUM)(BASE,OFFSET,4)
-#define ARG(NUM) 4*(PUSHED) + ARRAY4(ESP, NUM)
-
-#define ASSIGN(TO, FROM) movl FROM, TO
-#define ASSIGN_BYTE(TO, FROM) movzbl FROM, TO
-
-#define PUSH(REG) pushl REG
-#define POP(REG) popl REG
-
-#define SPILL_REGS() \
- PUSH(EBP) ; \
- PUSH(EDI) ; \
- PUSH(ESI) ; \
- PUSH(EBX)
-
-#define RESTORE_REGS() \
- POP(EBX) ; \
- POP(ESI) ; \
- POP(EDI) ; \
- POP(EBP)
-
-/*
-* ALU Operations
-*/
-#define IMM(VAL) $VAL
-
-#define ADD(TO, FROM) addl FROM, TO
-#define ADD_IMM(TO, NUM) ADD(TO, IMM(NUM))
-#define ADD_W_CARRY(TO1, TO2, FROM) addl FROM, TO1; adcl IMM(0), TO2;
-#define SUB_IMM(TO, NUM) subl IMM(NUM), TO
-#define ADD2_IMM(TO, FROM, NUM) leal NUM(FROM), TO
-#define ADD3_IMM(TO, FROM, NUM) leal NUM(TO,FROM,1), TO
-#define MUL(REG) mull REG
-
-#define SHL_IMM(REG, SHIFT) shll IMM(SHIFT), REG
-#define SHR_IMM(REG, SHIFT) shrl IMM(SHIFT), REG
-#define SHL2_3(TO, FROM) leal 0(,FROM,8), TO
-
-#define XOR(TO, FROM) xorl FROM, TO
-#define AND(TO, FROM) andl FROM, TO
-#define OR(TO, FROM) orl FROM, TO
-#define NOT(REG) notl REG
-#define ZEROIZE(REG) XOR(REG, REG)
-
-#define ROTL_IMM(REG, NUM) roll IMM(NUM), REG
-#define ROTR_IMM(REG, NUM) rorl IMM(NUM), REG
-#define BSWAP(REG) bswapl REG
-
-#endif
diff --git a/src/lib/utils/asm_x86_32/info.txt b/src/lib/utils/asm_x86_32/info.txt
deleted file mode 100644
index 8eeefe70e..000000000
--- a/src/lib/utils/asm_x86_32/info.txt
+++ /dev/null
@@ -1,26 +0,0 @@
-load_on dep
-
-<header:internal>
-asm_x86_32.h
-</header:internal>
-
-<arch>
-x86_32
-</arch>
-
-# ELF systems
-<os>
-android
-linux
-freebsd
-dragonfly
-netbsd
-openbsd
-solaris
-</os>
-
-<cc>
-gcc
-clang
-icc
-</cc>
diff --git a/src/lib/utils/asm_x86_64/asm_x86_64.h b/src/lib/utils/asm_x86_64/asm_x86_64.h
deleted file mode 100644
index eaf4388de..000000000
--- a/src/lib/utils/asm_x86_64/asm_x86_64.h
+++ /dev/null
@@ -1,127 +0,0 @@
-/*
-* Assembly Macros for 64-bit x86
-* (C) 1999-2008 Jack Lloyd
-*
-* Botan is released under the Simplified BSD License (see license.txt)
-*/
-
-#ifndef BOTAN_ASM_MACROS_X86_64_H__
-#define BOTAN_ASM_MACROS_X86_64_H__
-
-/*
-* General/Global Macros
-*/
-#define ALIGN .p2align 4,,15
-
-#define START_LISTING(FILENAME) \
- .file #FILENAME; \
- .text; \
- ALIGN;
-
-#if defined(__ELF__)
-.section .note.GNU-stack,"",%progbits
-#endif
-
-/*
-* Function Definitions
-*/
-#define START_FUNCTION(func_name) \
- ALIGN; \
- .global func_name; \
- .type func_name,@function; \
-func_name:
-
-#define END_FUNCTION(func_name) \
- ret
-
-/*
-* Conditional Jumps
-*/
-#define JUMP_IF_ZERO(REG, LABEL) \
- cmp IMM(0), REG; \
- jz LABEL
-
-#define JUMP_IF_LT(REG, NUM, LABEL) \
- cmp IMM(NUM), REG; \
- jl LABEL
-
-/*
-* Register Names
-*/
-#define R0 %rax
-#define R1 %rbx
-#define R2 %rcx
-#define R2_32 %ecx
-#define R3 %rdx
-#define R3_32 %edx
-#define R4 %rsp
-#define R5 %rbp
-#define R6 %rsi
-#define R6_32 %esi
-#define R7 %rdi
-#define R8 %r8
-#define R9 %r9
-#define R9_32 %r9d
-#define R10 %r10
-#define R11 %r11
-#define R12 %r12
-#define R13 %r13
-#define R14 %r14
-#define R15 %r15
-#define R16 %r16
-
-#define ARG_1 R7
-#define ARG_2 R6
-#define ARG_2_32 R6_32
-#define ARG_3 R3
-#define ARG_3_32 R3_32
-#define ARG_4 R2
-#define ARG_4_32 R2_32
-#define ARG_5 R8
-#define ARG_6 R9
-#define ARG_6_32 R9_32
-
-#define TEMP_1 R10
-#define TEMP_2 R11
-#define TEMP_3 ARG_6
-#define TEMP_4 ARG_5
-#define TEMP_5 ARG_4
-#define TEMP_5_32 ARG_4_32
-#define TEMP_6 ARG_3
-#define TEMP_7 ARG_2
-#define TEMP_8 ARG_1
-#define TEMP_9 R0
-
-/*
-* Memory Access Operations
-*/
-#define ARRAY8(REG, NUM) 8*(NUM)(REG)
-#define ARRAY4(REG, NUM) 4*(NUM)(REG)
-
-#define ASSIGN(TO, FROM) mov FROM, TO
-
-/*
-* ALU Operations
-*/
-#define IMM(VAL) $VAL
-
-#define ADD(TO, FROM) add FROM, TO
-#define ADD_LAST_CARRY(REG) adc IMM(0), REG
-#define ADD_IMM(TO, NUM) ADD(TO, IMM(NUM))
-#define ADD_W_CARRY(TO1, TO2, FROM) add FROM, TO1; adc IMM(0), TO2;
-#define SUB_IMM(TO, NUM) sub IMM(NUM), TO
-#define MUL(REG) mul REG
-
-#define XOR(TO, FROM) xor FROM, TO
-#define AND(TO, FROM) and FROM, TO
-#define OR(TO, FROM) or FROM, TO
-#define NOT(REG) not REG
-#define ZEROIZE(REG) XOR(REG, REG)
-
-#define RETURN_VALUE_IS(V) ASSIGN(%rax, V)
-
-#define ROTL_IMM(REG, NUM) rol IMM(NUM), REG
-#define ROTR_IMM(REG, NUM) ror IMM(NUM), REG
-#define ADD3_IMM(TO, FROM, NUM) lea NUM(TO,FROM,1), TO
-
-#endif
diff --git a/src/lib/utils/asm_x86_64/info.txt b/src/lib/utils/asm_x86_64/info.txt
deleted file mode 100644
index 8e381486d..000000000
--- a/src/lib/utils/asm_x86_64/info.txt
+++ /dev/null
@@ -1,24 +0,0 @@
-load_on dep
-
-<header:internal>
-asm_x86_64.h
-</header:internal>
-
-<arch>
-x86_64
-</arch>
-
-<cc>
-clang
-gcc
-icc
-</cc>
-
-# ELF systems
-<os>
-android
-linux
-netbsd
-openbsd
-solaris
-</os>