On 30/9/2022 5:25, Martin Storsjö wrote:
> + bcrypt = LoadLibraryW(L"bcrypt.dll");
> + if (bcrypt) {
> + NTSTATUS (WINAPI *pBCryptOpenAlgorithmProvider)(BCRYPT_ALG_HANDLE *,
> LPCWSTR, LPCWSTR, ULONG);
> + NTSTATUS (WINAPI *pBCryptGenRandom)(BCRYPT_ALG_HANDLE, PUCHAR, ULONG,
> ULONG);
> + NTSTATUS (WINAPI *pBCryptCloseAlgorithmProvider)(BCRYPT_ALG_HANDLE,
> ULONG);
> + pBCryptOpenAlgorithmProvider = (void*)GetProcAddress(bcrypt,
> "BCryptOpenAlgorithmProvider");
> + pBCryptGenRandom = (void*)GetProcAddress(bcrypt, "BCryptGenRandom");
> + pBCryptCloseAlgorithmProvider = (void*)GetProcAddress(bcrypt,
> "BCryptCloseAlgorithmProvider");
> +
> + if (pBCryptOpenAlgorithmProvider && pBCryptGenRandom &&
> pBCryptCloseAlgorithmProvider) {
> + BCRYPT_ALG_HANDLE alg;
> + if (BCRYPT_SUCCESS(pBCryptOpenAlgorithmProvider(&alg,
> BCRYPT_RNG_ALGORITHM, MS_PRIMITIVE_PROVIDER, 0))) {
> + pBCryptGenRandom(alg, (void*)&__stack_chk_guard,
> sizeof(__stack_chk_guard), 0);
Should this also check the status result of pBCryptGenRandom(...)?
> + pBCryptCloseAlgorithmProvider(alg, 0);
> + FreeLibrary(bcrypt);
> + return;
> + }
> + }
> + FreeLibrary(bcrypt);
> + }
>
_______________________________________________
Mingw-w64-public mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mingw-w64-public