mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
random_seed: use bcrypt instead of the old wincrypt API
Remove the wincrypt API calls since we don't support XP anymore and bcrypt is available since Vista, even on Windows Store builds. Signed-off-by: Martin Storsjö <martin@martin.st>
This commit is contained in:
parent
347aa8f723
commit
abf806f7f1
7
configure
vendored
7
configure
vendored
@ -1703,12 +1703,12 @@ SYSTEM_FUNCS="
|
||||
"
|
||||
|
||||
SYSTEM_LIBRARIES="
|
||||
bcrypt
|
||||
sdl
|
||||
vaapi_1
|
||||
vaapi_drm
|
||||
vaapi_x11
|
||||
vdpau_x11
|
||||
wincrypt
|
||||
"
|
||||
|
||||
TOOLCHAIN_FEATURES="
|
||||
@ -2610,7 +2610,7 @@ avdevice_extralibs="libm_extralibs"
|
||||
avformat_extralibs="libm_extralibs"
|
||||
avfilter_extralibs="pthreads_extralibs libm_extralibs"
|
||||
avresample_extralibs="libm_extralibs"
|
||||
avutil_extralibs="clock_gettime_extralibs cuda_extralibs cuvid_extralibs d3d11va_extralibs libm_extralibs libmfx_extralibs nanosleep_extralibs pthreads_extralibs user32_extralibs vaapi_extralibs vaapi_drm_extralibs vaapi_x11_extralibs vdpau_x11_extralibs wincrypt_extralibs"
|
||||
avutil_extralibs="bcrypt_extralibs clock_gettime_extralibs cuda_extralibs cuvid_extralibs d3d11va_extralibs libm_extralibs libmfx_extralibs nanosleep_extralibs pthreads_extralibs user32_extralibs vaapi_extralibs vaapi_drm_extralibs vaapi_x11_extralibs vdpau_x11_extralibs"
|
||||
swscale_extralibs="libm_extralibs"
|
||||
|
||||
# programs
|
||||
@ -4579,9 +4579,10 @@ check_header windows.h
|
||||
# so we also check that atomics actually work here
|
||||
check_builtin stdatomic stdatomic.h "atomic_int foo; atomic_store(&foo, 0)"
|
||||
|
||||
check_lib bcrypt "windows.h bcrypt.h" BCryptGenRandom -lbcrypt &&
|
||||
check_cpp_condition bcrypt bcrypt.h "defined BCRYPT_RNG_ALGORITHM"
|
||||
check_lib ole32 "windows.h" CoTaskMemFree -lole32
|
||||
check_lib shell32 "windows.h shellapi.h" CommandLineToArgvW -lshell32
|
||||
check_lib wincrypt "windows.h wincrypt.h" CryptGenRandom -ladvapi32
|
||||
check_lib psapi "windows.h psapi.h" GetProcessMemoryInfo -lpsapi
|
||||
|
||||
check_struct "sys/time.h sys/resource.h" "struct rusage" ru_maxrss
|
||||
|
@ -23,9 +23,9 @@
|
||||
#if HAVE_UNISTD_H
|
||||
#include <unistd.h>
|
||||
#endif
|
||||
#if HAVE_WINCRYPT
|
||||
#if HAVE_BCRYPT
|
||||
#include <windows.h>
|
||||
#include <wincrypt.h>
|
||||
#include <bcrypt.h>
|
||||
#endif
|
||||
#include <fcntl.h>
|
||||
#include <math.h>
|
||||
@ -96,13 +96,14 @@ uint32_t av_get_random_seed(void)
|
||||
{
|
||||
uint32_t seed;
|
||||
|
||||
#if HAVE_WINCRYPT
|
||||
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
|
||||
|
Loading…
Reference in New Issue
Block a user