curl/src
Viktor Szakats 76172511e7
windows: improve random source
- Use the Windows API to seed the fallback random generator.

  This ensures to always have a random seed, even when libcurl is built
  with a vtls backend lacking a random generator API, such as rustls
  (experimental), GSKit and certain mbedTLS builds, or, when libcurl is
  built without a TLS backend. We reuse the Windows-specific random
  function from the Schannel backend.

- Implement support for `BCryptGenRandom()` [1] on Windows, as a
  replacement for the deprecated `CryptGenRandom()` [2] function.

  It is used as the secure random generator for Schannel, and also to
  provide entropy for libcurl's fallback random generator. The new
  function is supported on Vista and newer via its `bcrypt.dll`. It is
  used automatically when building for supported versions. It also works
  in UWP apps (the old function did not).

- Clear entropy buffer before calling the Windows random generator.

  This avoids using arbitrary application memory as entropy (with
  `CryptGenRandom()`) and makes sure to return in a predictable state
  when an API call fails.

[1] https://docs.microsoft.com/windows/win32/api/bcrypt/nf-bcrypt-bcryptgenrandom
[2] https://docs.microsoft.com/windows/win32/api/wincrypt/nf-wincrypt-cryptgenrandom

Closes #9027
2022-07-04 09:38:24 +00:00
..
.gitignore copyright: make repository REUSE compliant 2022-06-13 09:13:00 +02:00
CMakeLists.txt copyright: make repository REUSE compliant 2022-06-13 09:13:00 +02:00
curl.rc copyright: make repository REUSE compliant 2022-06-13 09:13:00 +02:00
Makefile.am copyright: make repository REUSE compliant 2022-06-13 09:13:00 +02:00
makefile.amiga copyright: make repository REUSE compliant 2022-06-13 09:13:00 +02:00
makefile.dj copyright: make repository REUSE compliant 2022-06-13 09:13:00 +02:00
Makefile.inc copyright: make repository REUSE compliant 2022-06-13 09:13:00 +02:00
Makefile.m32 windows: improve random source 2022-07-04 09:38:24 +00:00
mkhelp.pl copyright: make repository REUSE compliant 2022-06-13 09:13:00 +02:00
slist_wc.c copyright: make repository REUSE compliant 2022-06-13 09:13:00 +02:00
slist_wc.h copyright: make repository REUSE compliant 2022-06-13 09:13:00 +02:00
tool_binmode.c copyright: make repository REUSE compliant 2022-06-13 09:13:00 +02:00
tool_binmode.h copyright: make repository REUSE compliant 2022-06-13 09:13:00 +02:00
tool_bname.c copyright: make repository REUSE compliant 2022-06-13 09:13:00 +02:00
tool_bname.h copyright: make repository REUSE compliant 2022-06-13 09:13:00 +02:00
tool_cb_dbg.c copyright: make repository REUSE compliant 2022-06-13 09:13:00 +02:00
tool_cb_dbg.h copyright: make repository REUSE compliant 2022-06-13 09:13:00 +02:00
tool_cb_hdr.c copyright: make repository REUSE compliant 2022-06-13 09:13:00 +02:00
tool_cb_hdr.h copyright: make repository REUSE compliant 2022-06-13 09:13:00 +02:00
tool_cb_prg.c copyright: make repository REUSE compliant 2022-06-13 09:13:00 +02:00
tool_cb_prg.h copyright: make repository REUSE compliant 2022-06-13 09:13:00 +02:00
tool_cb_rea.c copyright: make repository REUSE compliant 2022-06-13 09:13:00 +02:00
tool_cb_rea.h copyright: make repository REUSE compliant 2022-06-13 09:13:00 +02:00
tool_cb_see.c copyright: make repository REUSE compliant 2022-06-13 09:13:00 +02:00
tool_cb_see.h copyright: make repository REUSE compliant 2022-06-13 09:13:00 +02:00
tool_cb_wrt.c copyright: make repository REUSE compliant 2022-06-13 09:13:00 +02:00
tool_cb_wrt.h copyright: make repository REUSE compliant 2022-06-13 09:13:00 +02:00
tool_cfgable.c setopt: add CURLOPT_PROTOCOLS_STR and CURLOPT_REDIR_PROTOCOLS_STR 2022-07-04 08:35:09 +02:00
tool_cfgable.h setopt: add CURLOPT_PROTOCOLS_STR and CURLOPT_REDIR_PROTOCOLS_STR 2022-07-04 08:35:09 +02:00
tool_dirhie.c copyright: make repository REUSE compliant 2022-06-13 09:13:00 +02:00
tool_dirhie.h copyright: make repository REUSE compliant 2022-06-13 09:13:00 +02:00
tool_doswin.c copyright: make repository REUSE compliant 2022-06-13 09:13:00 +02:00
tool_doswin.h copyright: make repository REUSE compliant 2022-06-13 09:13:00 +02:00
tool_easysrc.c copyright: make repository REUSE compliant 2022-06-13 09:13:00 +02:00
tool_easysrc.h copyright: make repository REUSE compliant 2022-06-13 09:13:00 +02:00
tool_filetime.c copyright: make repository REUSE compliant 2022-06-13 09:13:00 +02:00
tool_filetime.h copyright: make repository REUSE compliant 2022-06-13 09:13:00 +02:00
tool_findfile.c copyright: make repository REUSE compliant 2022-06-13 09:13:00 +02:00
tool_findfile.h copyright: make repository REUSE compliant 2022-06-13 09:13:00 +02:00
tool_formparse.c copyright: make repository REUSE compliant 2022-06-13 09:13:00 +02:00
tool_formparse.h copyright: make repository REUSE compliant 2022-06-13 09:13:00 +02:00
tool_getparam.c setopt: add CURLOPT_PROTOCOLS_STR and CURLOPT_REDIR_PROTOCOLS_STR 2022-07-04 08:35:09 +02:00
tool_getparam.h copyright: make repository REUSE compliant 2022-06-13 09:13:00 +02:00
tool_getpass.c copyright: make repository REUSE compliant 2022-06-13 09:13:00 +02:00
tool_getpass.h copyright: make repository REUSE compliant 2022-06-13 09:13:00 +02:00
tool_help.c version: rename threadsafe-init to threadsafe 2022-06-13 18:59:45 +00:00
tool_help.h copyright: make repository REUSE compliant 2022-06-13 09:13:00 +02:00
tool_helpers.c copyright: make repository REUSE compliant 2022-06-13 09:13:00 +02:00
tool_helpers.h copyright: make repository REUSE compliant 2022-06-13 09:13:00 +02:00
tool_hugehelp.c.cvs copyright: make repository REUSE compliant 2022-06-13 09:13:00 +02:00
tool_hugehelp.h copyright: make repository REUSE compliant 2022-06-13 09:13:00 +02:00
tool_libinfo.c copyright: make repository REUSE compliant 2022-06-13 09:13:00 +02:00
tool_libinfo.h copyright: make repository REUSE compliant 2022-06-13 09:13:00 +02:00
tool_listhelp.c copyright: make repository REUSE compliant 2022-06-13 09:13:00 +02:00
tool_main.c copyright: make repository REUSE compliant 2022-06-13 09:13:00 +02:00
tool_main.h copyright: make repository REUSE compliant 2022-06-13 09:13:00 +02:00
tool_msgs.c copyright: make repository REUSE compliant 2022-06-13 09:13:00 +02:00
tool_msgs.h copyright: make repository REUSE compliant 2022-06-13 09:13:00 +02:00
tool_operate.c setopt: add CURLOPT_PROTOCOLS_STR and CURLOPT_REDIR_PROTOCOLS_STR 2022-07-04 08:35:09 +02:00
tool_operate.h copyright: make repository REUSE compliant 2022-06-13 09:13:00 +02:00
tool_operhlp.c copyright: make repository REUSE compliant 2022-06-13 09:13:00 +02:00
tool_operhlp.h copyright: make repository REUSE compliant 2022-06-13 09:13:00 +02:00
tool_panykey.c copyright: make repository REUSE compliant 2022-06-13 09:13:00 +02:00
tool_panykey.h copyright: make repository REUSE compliant 2022-06-13 09:13:00 +02:00
tool_paramhlp.c setopt: add CURLOPT_PROTOCOLS_STR and CURLOPT_REDIR_PROTOCOLS_STR 2022-07-04 08:35:09 +02:00
tool_paramhlp.h setopt: add CURLOPT_PROTOCOLS_STR and CURLOPT_REDIR_PROTOCOLS_STR 2022-07-04 08:35:09 +02:00
tool_parsecfg.c copyright: make repository REUSE compliant 2022-06-13 09:13:00 +02:00
tool_parsecfg.h copyright: make repository REUSE compliant 2022-06-13 09:13:00 +02:00
tool_progress.c tool_progress: avoid division by zero in parallel progress meter 2022-07-02 00:45:58 +02:00
tool_progress.h copyright: make repository REUSE compliant 2022-06-13 09:13:00 +02:00
tool_sdecls.h copyright: make repository REUSE compliant 2022-06-13 09:13:00 +02:00
tool_setopt.c copyright: make repository REUSE compliant 2022-06-13 09:13:00 +02:00
tool_setopt.h copyright: make repository REUSE compliant 2022-06-13 09:13:00 +02:00
tool_setup.h copyright: make repository REUSE compliant 2022-06-13 09:13:00 +02:00
tool_sleep.c copyright: make repository REUSE compliant 2022-06-13 09:13:00 +02:00
tool_sleep.h copyright: make repository REUSE compliant 2022-06-13 09:13:00 +02:00
tool_strdup.c copyright: make repository REUSE compliant 2022-06-13 09:13:00 +02:00
tool_strdup.h copyright: make repository REUSE compliant 2022-06-13 09:13:00 +02:00
tool_urlglob.c copyright: make repository REUSE compliant 2022-06-13 09:13:00 +02:00
tool_urlglob.h copyright: make repository REUSE compliant 2022-06-13 09:13:00 +02:00
tool_util.c copyright: make repository REUSE compliant 2022-06-13 09:13:00 +02:00
tool_util.h copyright: make repository REUSE compliant 2022-06-13 09:13:00 +02:00
tool_version.h copyright: make repository REUSE compliant 2022-06-13 09:13:00 +02:00
tool_vms.c copyright: make repository REUSE compliant 2022-06-13 09:13:00 +02:00
tool_vms.h copyright: make repository REUSE compliant 2022-06-13 09:13:00 +02:00
tool_writeout.c copyright: make repository REUSE compliant 2022-06-13 09:13:00 +02:00
tool_writeout.h copyright: make repository REUSE compliant 2022-06-13 09:13:00 +02:00
tool_writeout_json.c copyright: make repository REUSE compliant 2022-06-13 09:13:00 +02:00
tool_writeout_json.h copyright: make repository REUSE compliant 2022-06-13 09:13:00 +02:00
tool_xattr.c copyright: make repository REUSE compliant 2022-06-13 09:13:00 +02:00
tool_xattr.h copyright: make repository REUSE compliant 2022-06-13 09:13:00 +02:00