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@niedermayer.cc> Signed-off-by: James Almer <jamrial@gmail.com>
This commit is contained in:
		
							parent
							
								
									a56580b117
								
							
						
					
					
						commit
						aedbf1640c
					
				
							
								
								
									
										6
									
								
								configure
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										6
									
								
								configure
									
									
									
									
										vendored
									
									
								
							@ -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
 | 
			
		||||
 | 
			
		||||
@ -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
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user