avutil/sha: reorder Maj arguments
[ffmpeg.git] / libavutil / random_seed.c
index b594e82..c674704 100644 (file)
 #if HAVE_UNISTD_H
 #include <unistd.h>
 #endif
+#if HAVE_CRYPTGENRANDOM
+#include <windows.h>
+#include <wincrypt.h>
+#endif
 #include <fcntl.h>
 #include <math.h>
 #include <time.h>
@@ -61,7 +65,7 @@ static uint32_t get_generic_seed(void)
     clock_t last_t  = 0;
     static uint64_t i = 0;
     static uint32_t buffer[512] = {0};
-    unsigned char digest[32];
+    unsigned char digest[20];
     uint64_t last_i = i;
 
     av_assert0(sizeof(tmp) >= av_sha_size);
@@ -102,6 +106,17 @@ uint32_t av_get_random_seed(void)
 {
     uint32_t seed;
 
+#if HAVE_CRYPTGENRANDOM
+    HCRYPTPROV provider;
+    if (CryptAcquireContext(&provider, NULL, NULL, PROV_RSA_FULL,
+                            CRYPT_VERIFYCONTEXT | CRYPT_SILENT)) {
+        BOOL ret = CryptGenRandom(provider, sizeof(seed), (PBYTE) &seed);
+        CryptReleaseContext(provider, 0);
+        if (ret)
+            return seed;
+    }
+#endif
+
     if (read_random(&seed, "/dev/urandom") == sizeof(seed))
         return seed;
     if (read_random(&seed, "/dev/random")  == sizeof(seed))