Martin Storsjö writes:
> ---
> configure |2 ++
> libavutil/random_seed.c | 14 ++
> 2 files changed, 16 insertions(+)
>
> diff --git a/configure b/configure
> index 17f38ec..67f88eb 100755
> --- a/configure
> +++ b/configure
> @@ -1139,6 +1139,7 @@ HAVE_LIST="
> closesocket
> cmov
> cpunop
> +CryptGenRandom
> dcbzl
> dev_bktr_ioctl_bt848_h
> dev_bktr_ioctl_meteor_h
> @@ -3202,6 +3203,7 @@ check_func sysctl
> check_func usleep
> check_func_headers io.h setmode
> check_lib2 "windows.h shellapi.h" CommandLineToArgvW -lshell32
> +check_lib2 "windows.h wincrypt.h" CryptGenRandom -ladvapi32
> check_lib2 "windows.h psapi.h" GetProcessMemoryInfo -lpsapi
> check_func_headers windows.h GetProcessAffinityMask
> check_func_headers windows.h GetProcessTimes
> diff --git a/libavutil/random_seed.c b/libavutil/random_seed.c
> index 8ee4cb7..e29775e 100644
> --- a/libavutil/random_seed.c
> +++ b/libavutil/random_seed.c
> @@ -23,6 +23,10 @@
> #if HAVE_UNISTD_H
> #include
> #endif
> +#if HAVE_CRYPTGENRANDOM
> +#include
> +#include
> +#endif
> #include
> #include
> #include
> @@ -82,6 +86,16 @@ 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))
> --
Seems reasonable.
--
Måns Rullgård
m...@mansr.com
___
libav-devel mailing list
libav-devel@libav.org
https://lists.libav.org/mailman/listinfo/libav-devel