Do not call pairwise tests in non-fips mode. Some possible generated keys might be too small to pass. diff -up openssl-fips-0.9.8e/fips/dsa/fips_dsa_key.c.no-pairwise openssl-fips-0.9.8e/fips/dsa/fips_dsa_key.c --- openssl-fips-0.9.8e/fips/dsa/fips_dsa_key.c.no-pairwise 2007-09-12 19:46:04.000000000 +0200 +++ openssl-fips-0.9.8e/fips/dsa/fips_dsa_key.c 2009-04-15 11:21:07.000000000 +0200 @@ -154,7 +154,7 @@ static int dsa_builtin_keygen(DSA *dsa) dsa->pub_key=pub_key; if (fips_dsa_pairwise_fail) BN_add_word(dsa->pub_key, 1); - if(!fips_check_dsa(dsa)) + if(FIPS_mode() && !fips_check_dsa(dsa)) goto err; ok=1; diff -up openssl-fips-0.9.8e/fips/rsa/fips_rsa_gen.c.no-pairwise openssl-fips-0.9.8e/fips/rsa/fips_rsa_gen.c --- openssl-fips-0.9.8e/fips/rsa/fips_rsa_gen.c.no-pairwise 2007-09-12 19:46:07.000000000 +0200 +++ openssl-fips-0.9.8e/fips/rsa/fips_rsa_gen.c 2009-04-15 11:21:31.000000000 +0200 @@ -288,7 +288,7 @@ static int rsa_builtin_keygen(RSA *rsa, if (fips_rsa_pairwise_fail) BN_add_word(rsa->n, 1); - if(!fips_check_rsa(rsa)) + if(FIPS_mode() && !fips_check_rsa(rsa)) goto err; ok=1;