Anchor AES and SHA-256/-512 assembler from C.
authorAndy Polyakov <appro@openssl.org>
Sun, 18 Jul 2004 17:26:01 +0000 (17:26 +0000)
committerAndy Polyakov <appro@openssl.org>
Sun, 18 Jul 2004 17:26:01 +0000 (17:26 +0000)
crypto/aes/aes_core.c
crypto/bn/asm/bn-586.pl
crypto/sha/sha256.c
crypto/sha/sha512.c

index 2f41a825f8d95b8864734d8f81fc850ed41a973d..29e41edd10bc3209d19324a60ccb504b341b0d02 100644 (file)
@@ -873,6 +873,7 @@ int AES_set_decrypt_key(const unsigned char *userKey, const int bits,
        return 0;
 }
 
+#ifndef AES_ASM
 /*
  * Encrypt a single block
  * in and out can overlap
@@ -1255,3 +1256,4 @@ void AES_decrypt(const unsigned char *in, unsigned char *out,
        PUTU32(out + 12, s3);
 }
 
+#endif /* AES_ASM */
index 9a7c64c46455dad6cc0754107f456ccb9f886e5b..0415015f65100e2f5079904dad5e597cd7c4f9e7 100644 (file)
@@ -5,7 +5,8 @@ require "x86asm.pl";
 
 &asm_init($ARGV[0],$0);
 
-$sse2=0;       # SSE2 is temporarily disabled...
+$sse2=0;
+for (@ARGV) { $sse2=1 if (/-DOPENSSL_IA32_SSE2/); }
 
 &bn_mul_add_words("bn_mul_add_words");
 &bn_mul_words("bn_mul_words");
index 2f4078f44423ff66e32aa0fffd3133ba47084d65..21aa5d7d0ddb79c7c3d30c8e9d9f5df683dc093c 100644 (file)
@@ -117,6 +117,9 @@ void sha256_block_data_order (SHA256_CTX *ctx, const void *in, size_t num);
 
 #include "md32_common.h"
 
+#ifdef SHA256_ASM
+void sha256_block (SHA256_CTX *ctx, const void *in, size_t num, int host);
+#else
 static const SHA_LONG K256[64] = {
        0x428a2f98UL,0x71374491UL,0xb5c0fbcfUL,0xe9b5dba5UL,
        0x3956c25bUL,0x59f111f1UL,0x923f82a4UL,0xab1c5ed5UL,
@@ -296,6 +299,7 @@ static void sha256_block (SHA256_CTX *ctx, const void *in, size_t num, int host)
        }
 
 #endif
+#endif /* SHA256_ASM */
 
 /*
  * Idea is to trade couple of cycles for some space. On IA-32 we save
index dc1047d59e28784b1b72ed98f2a05ad33abf06a5..5f7a8dee6d43b9a017a8d2923e28552ba3058fc1 100644 (file)
@@ -83,7 +83,10 @@ int SHA512_Init (SHA512_CTX *c)
         return 1;
        }
 
-static void sha512_block (SHA512_CTX *ctx, const void *in, size_t num);
+#ifndef SHA512_ASM
+static
+#endif
+void sha512_block (SHA512_CTX *ctx, const void *in, size_t num);
 
 int SHA512_Final (unsigned char *md, SHA512_CTX *c)
        {
@@ -241,6 +244,7 @@ unsigned char *SHA512(const unsigned char *d, size_t n, unsigned char *md)
        return(md);
        }
 
+#ifndef SHA512_ASM
 static const SHA_LONG64 K512[80] = {
         U64(0x428a2f98d728ae22),U64(0x7137449123ef65cd),
         U64(0xb5c0fbcfec4d3b2f),U64(0xe9b5dba58189dbbc),
@@ -476,3 +480,5 @@ static void sha512_block (SHA512_CTX *ctx, const void *in, size_t num)
        }
 
 #endif
+
+#endif /* SHA512_ASM */