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

Reply via email to