GH367: use random data if seed too short.
authorIsmo Puustinen <ismo.puustinen@intel.com>
Fri, 18 Sep 2015 20:07:23 +0000 (16:07 -0400)
committerRich Salz <rsalz@openssl.org>
Tue, 29 Sep 2015 16:50:14 +0000 (12:50 -0400)
Signed-off-by: Rich Salz <rsalz@openssl.org>
Reviewed-by: Emilia Käsper <emilia@openssl.org>
(cherry picked from commit 6f997dc36504d67d1339ceb6bce4ecba673d8568)

crypto/dsa/dsa_gen.c
doc/crypto/DSA_generate_parameters.pod

index 4f55331b2b6aff32cae269acd0a68d13316e1a02..f6d7bc47952f422efa1b2bef3efec60949d42ee6 100644 (file)
@@ -183,8 +183,9 @@ int dsa_builtin_paramgen(DSA *ret, size_t bits, size_t qbits,
             if (!BN_GENCB_call(cb, 0, m++))
                 goto err;
 
-            if (!seed_len) {
-                RAND_pseudo_bytes(seed, qsize);
+            if (!seed_len || !seed_in) {
+                if (RAND_pseudo_bytes(seed, qsize) < 0)
+                    goto err;
                 seed_is_random = 1;
             } else {
                 seed_is_random = 0;
index be7c924ff8f971eefa18499b275b8df00971a81c..f24c9c7d447d538f91a77a91979705f5dc9bed83 100644 (file)
@@ -23,7 +23,7 @@ maximum of 1024 bits.
 If B<seed> is B<NULL> or B<seed_len> E<lt> 20, the primes will be
 generated at random. Otherwise, the seed is used to generate
 them. If the given seed does not yield a prime q, a new random
-seed is chosen and placed at B<seed>.
+seed is chosen.
 
 DSA_generate_parameters() places the iteration count in
 *B<counter_ret> and a counter used for finding a generator in