ispell.
[oweals/openssl.git] / crypto / des / rand_key.c
index a63e8411bb31d76b13a319182a059a91c85f3eb6..ee1a6c274e97f3f246f5e5605f59f0256495537e 100644 (file)
@@ -61,8 +61,13 @@ void des_random_seed(des_cblock *key)
        RAND_seed(key, sizeof(des_cblock));
        }
 
-void des_random_key(des_cblock *ret)
+int des_random_key(des_cblock *ret)
        {
-       RAND_bytes((unsigned char *)ret, sizeof(des_cblock));
+       do
+               {
+               if (RAND_bytes((unsigned char *)ret, sizeof(des_cblock)) != 1)
+                       return (0);
+               } while (des_is_weak_key(ret));
        des_set_odd_parity(ret);
+       return (1);
        }