rtmpdh: Do not generate the same private key every time when using libnettle
authorSamuel Pitoiset <samuel.pitoiset@gmail.com>
Thu, 16 Aug 2012 20:27:15 +0000 (22:27 +0200)
committerMartin Storsjö <martin@martin.st>
Fri, 17 Aug 2012 20:51:53 +0000 (23:51 +0300)
Replace mpz_random by mpz_urandomb with a random state initialization in
order to improve the randomness.

Signed-off-by: Martin Storsjö <martin@martin.st>
libavformat/rtmpdh.c

index 92bce7a..38c2f3d 100644 (file)
@@ -28,6 +28,7 @@
 
 #include "config.h"
 #include "rtmpdh.h"
+#include "libavutil/random_seed.h"
 
 #define P1024                                          \
     "FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD1" \
             ret = (mpz_set_str(bn, buf, 16) == 0);  \
     } while (0)
 #define bn_modexp(bn, y, q, p)      mpz_powm(bn, y, q, p)
-#define bn_random(bn, num_bytes)    mpz_random(bn, num_bytes);
+#define bn_random(bn, num_bytes)                    \
+    do {                                            \
+        gmp_randstate_t rs;                         \
+        gmp_randinit_mt(rs);                        \
+        gmp_randseed_ui(rs, av_get_random_seed());  \
+        mpz_urandomb(bn, rs, num_bytes);            \
+        gmp_randclear(rs);                          \
+    } while (0)
 #elif CONFIG_GCRYPT
 #define bn_new(bn)                  bn = gcry_mpi_new(1)
 #define bn_free(bn)                 gcry_mpi_release(bn)