Blob Blame Raw
diff -up openssl-1.0.0/crypto/engine/eng_aesni.c.fips-aesni openssl-1.0.0/crypto/engine/eng_aesni.c
--- openssl-1.0.0/crypto/engine/eng_aesni.c.fips-aesni	2011-05-24 15:20:29.000000000 +0200
+++ openssl-1.0.0/crypto/engine/eng_aesni.c	2011-06-08 14:19:22.000000000 +0200
@@ -323,7 +323,7 @@ static const EVP_CIPHER aesni_##ksize##_
 	EVP_CIPHER_block_size_##umode,			\
 	ksize / 8,					\
 	AES_BLOCK_SIZE,					\
-	0 | EVP_CIPH_##umode##_MODE,			\
+	EVP_CIPH_FLAG_FIPS | EVP_CIPH_##umode##_MODE,			\
 	aesni_init_key,				\
 	aesni_cipher_##lmode,				\
 	NULL,						\
diff -up openssl-1.0.0/crypto/fips/fips.c.fips-aesni openssl-1.0.0/crypto/fips/fips.c
--- openssl-1.0.0/crypto/fips/fips.c.fips-aesni	2011-05-24 15:20:29.000000000 +0200
+++ openssl-1.0.0/crypto/fips/fips.c	2011-06-08 17:31:35.000000000 +0200
@@ -55,6 +55,7 @@
 #include <openssl/bio.h>
 #include <openssl/hmac.h>
 #include <openssl/rsa.h>
+#include <openssl/engine.h>
 #include <string.h>
 #include <limits.h>
 #include <dlfcn.h>
@@ -444,14 +445,17 @@ int FIPS_mode_set(int onoff)
 	    }
 
 	if(FIPS_selftest())
-	    fips_set_mode(1);
-	else
 	    {
-	    fips_selftest_fail = 1;
-	    ret = 0;
-	    goto end;
+	    ENGINE_load_aesni();
+	    if (FIPS_selftest_aes())
+		{
+		fips_set_mode(1);
+		ret = 1;
+		goto end;
+		}
 	    }
-	ret = 1;
+	fips_selftest_fail = 1;
+	ret = 0;
 	goto end;
 	}
     fips_set_mode(0);