summaryrefslogtreecommitdiff
path: root/libavutil/random_seed.c
diff options
context:
space:
mode:
authorSteve Lhomme <robux4@ycbcr.xyz>2018-04-03 11:44:25 +0200
committerJames Almer <jamrial@gmail.com>2018-04-14 18:31:25 -0300
commitaedbf1640ced8fc09dc980ead2a387a59d8f7f68 (patch)
treea2ce51e41062160caf829a12b855216f9bcef563 /libavutil/random_seed.c
parenta56580b117362bf1b082cbbd6e3e573380c3aff8 (diff)
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>
Diffstat (limited to 'libavutil/random_seed.c')
-rw-r--r--libavutil/random_seed.c19
1 files changed, 10 insertions, 9 deletions
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