On Tue, Jul 08, 2008 at 03:27:08PM +0530, Nilay Tripathi wrote: > Generating 'p' randomly as a safe prime and using 'g' order as 5, the > keys generated are not consistently passing Sec 5.6.2.4 KAT test.
It would be a good idea for you to understand why this is, rather than just iterate until it passes. Setting 'g' to 5 won't always work! The expectation of SP800-56 is that the generator (g) generates the q-ordered multiplicative subgroup of Z_p. Because p is a safe-prime, the only possible value for q is (p-1)/2 (this can be otherwise stated as "q is a Sophie Germain prime and p=2q+1"). Because of this selection for p, the multiplicative group Z_p is very simple: it has a subgroup of size 2q (the whole group) a subgroup of size q, a subgroup of size 2 and a subgroup of size 1. g=5 is going to be either order q or order 2q. To be consistent with SP800-56 you need it to be order q. If you run the required public key validation test on a public key where g is 2q-ordered, then it will fail roughly half the time. This doesn't mean that you need to just keep trying until it works, this means that your selection for g wasn't compliant with SP800-56 in the first place! When generating domain parameters you can test to see if you have an order-q generator by taking g^q mod p and verifying that it equals 1. If it instead equals (p-1) then you have a 2q-ordered generator; you should either choose a different generator or choose a different value for p. Josh ______________________________________________________________________ OpenSSL Project http://www.openssl.org Development Mailing List openssl-dev@openssl.org Automated List Manager [EMAIL PROTECTED]