From: Steve Lhomme <[email protected]>
Remove the wincrypt API calls since we don't support XP anymore and
bcrypt is available since Vista, even on Windows Store builds.
---
Now with avutil_extralibs sorted alphabetically, and James' extended
configure check included.
---
configure | 7 ++++---
libavutil/random_seed.c | 19 ++++++++++---------
2 files changed, 14 insertions(+), 12 deletions(-)
diff --git a/configure b/configure
index 3c7b6a0981..465fdcfb6d 100755
--- a/configure
+++ b/configure
@@ -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
diff --git a/libavutil/random_seed.c b/libavutil/random_seed.c
index 089d883916..388cb401ba 100644
--- a/libavutil/random_seed.c
+++ b/libavutil/random_seed.c
@@ -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
--
2.15.1 (Apple Git-101)
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel