[FFmpeg-cvslog] avutil/random_seed: use bcrypt instead of the old wincrypt API
Steve Lhomme
git at videolan.org
Sun Apr 15 01:10:24 EEST 2018
ffmpeg | branch: master | Steve Lhomme <robux4 at ycbcr.xyz> | Tue Apr 3 11:44:25 2018 +0200| [aedbf1640ced8fc09dc980ead2a387a59d8f7f68] | committer: James Almer
avutil/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.
Reviewed-by: Michael Niedermayer <michael at niedermayer.cc>
Signed-off-by: James Almer <jamrial at gmail.com>
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=aedbf1640ced8fc09dc980ead2a387a59d8f7f68
---
configure | 6 +++---
libavutil/random_seed.c | 19 ++++++++++---------
2 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/configure b/configure
index 73857f4511..36e425be62 100755
--- a/configure
+++ b/configure
@@ -2142,10 +2142,10 @@ SYSTEM_FUNCS="
"
SYSTEM_LIBRARIES="
+ bcrypt
vaapi_drm
vaapi_x11
vdpau_x11
- wincrypt
"
TOOLCHAIN_FEATURES="
@@ -3445,7 +3445,7 @@ avformat_deps="avcodec avutil"
avformat_suggest="libm network zlib"
avresample_deps="avutil"
avresample_suggest="libm"
-avutil_suggest="clock_gettime ffnvcodec libm libdrm libmfx opencl user32 vaapi videotoolbox corefoundation corevideo coremedia wincrypt"
+avutil_suggest="clock_gettime ffnvcodec libm libdrm libmfx opencl user32 vaapi videotoolbox corefoundation corevideo coremedia bcrypt"
postproc_deps="avutil gpl"
postproc_suggest="libm"
swresample_deps="avutil"
@@ -5828,9 +5828,9 @@ check_header asm/types.h
check_builtin stdatomic stdatomic.h "atomic_int foo, bar = ATOMIC_VAR_INIT(-1); atomic_store(&foo, 0); foo += bar"
check_lib advapi32 "windows.h" RegCloseKey -ladvapi32
+check_lib bcrypt "windows.h bcrypt.h" BCryptGenRandom -lbcrypt
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_lib android android/native_window.h ANativeWindow_acquire -landroid
diff --git a/libavutil/random_seed.c b/libavutil/random_seed.c
index 881c23c8c8..70dc509d2f 100644
--- a/libavutil/random_seed.c
+++ b/libavutil/random_seed.c
@@ -26,9 +26,9 @@
#if HAVE_IO_H
#include <io.h>
#endif
-#if HAVE_WINCRYPT
+#if HAVE_BCRYPT
#include <windows.h>
-#include <wincrypt.h>
+#include <bcrypt.h>
#endif
#include <fcntl.h>
#include <math.h>
@@ -121,13 +121,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
More information about the ffmpeg-cvslog
mailing list