diff options
Diffstat (limited to 'src/lib/libcrypto/des/rand_key.c')
-rw-r--r-- | src/lib/libcrypto/des/rand_key.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/src/lib/libcrypto/des/rand_key.c b/src/lib/libcrypto/des/rand_key.c index 7816a8f25c..ee1a6c274e 100644 --- a/src/lib/libcrypto/des/rand_key.c +++ b/src/lib/libcrypto/des/rand_key.c | |||
@@ -63,7 +63,11 @@ void des_random_seed(des_cblock *key) | |||
63 | 63 | ||
64 | int des_random_key(des_cblock *ret) | 64 | int des_random_key(des_cblock *ret) |
65 | { | 65 | { |
66 | int r = RAND_bytes((unsigned char *)ret, sizeof(des_cblock)); | 66 | do |
67 | { | ||
68 | if (RAND_bytes((unsigned char *)ret, sizeof(des_cblock)) != 1) | ||
69 | return (0); | ||
70 | } while (des_is_weak_key(ret)); | ||
67 | des_set_odd_parity(ret); | 71 | des_set_odd_parity(ret); |
68 | return r; | 72 | return (1); |
69 | } | 73 | } |