X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavutil%2Frandom_seed.c;h=70dc509d2fde6ea0b6c30e971fbd8f1a13e15a19;hb=64977ed7ae1e437910ca837ccb282e07d9200249;hp=d1c9a3f7046d7efada2e11194819e113ab0f6bb7;hpb=9194d3d3806f47941109a82ef1ff1f704e8e5b24;p=ffmpeg diff --git a/libavutil/random_seed.c b/libavutil/random_seed.c index d1c9a3f7046..70dc509d2fd 100644 --- a/libavutil/random_seed.c +++ b/libavutil/random_seed.c @@ -26,9 +26,9 @@ #if HAVE_IO_H #include #endif -#if HAVE_CRYPTGENRANDOM +#if HAVE_BCRYPT #include -#include +#include #endif #include #include @@ -121,13 +121,14 @@ 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) +#if HAVE_BCRYPT + BCRYPT_ALG_HANDLE algo_handle; + NTSTATUS ret = BCryptOpenAlgorithmProvider(&algo_handle, BCRYPT_RNG_ALGORITHM, + MS_PRIMITIVE_PROVIDER, 0); + if (BCRYPT_SUCCESS(ret)) { + NTSTATUS ret = BCryptGenRandom(algo_handle, (UCHAR*)&seed, sizeof(seed), 0); + BCryptCloseAlgorithmProvider(algo_handle, 0); + if (BCRYPT_SUCCESS(ret)) return seed; } #endif