mirror of
https://github.com/curl/curl.git
synced 2025-01-18 14:04:30 +08:00
schannel: Support strong crypto option
- Support enabling strong crypto via optional user cipher list when USE_STRONG_CRYPTO or SCH_USE_STRONG_CRYPTO is in the list. MSDN says SCH_USE_STRONG_CRYPTO "Instructs Schannel to disable known weak cryptographic algorithms, cipher suites, and SSL/TLS protocol versions that may be otherwise enabled for better interoperability." Ref: https://curl.se/mail/lib-2021-02/0066.html Ref: https://curl.se/docs/manpage.html#--ciphers Ref: https://curl.se/libcurl/c/CURLOPT_SSL_CIPHER_LIST.html Ref: https://docs.microsoft.com/en-us/windows/win32/api/schannel/ns-schannel-schannel_cred Closes https://github.com/curl/curl/pull/6734
This commit is contained in:
parent
99383194de
commit
67d3afa73f
@ -514,3 +514,9 @@ and the request will fail.
|
||||
`CALG_ECMQV`,
|
||||
`CALG_ECDSA`,
|
||||
`CALG_ECDH_EPHEM`,
|
||||
|
||||
As of curl 7.77.0, you can also pass `SCH_USE_STRONG_CRYPTO` as a cipher name
|
||||
to [constrain the set of available ciphers as specified in the schannel
|
||||
documentation](https://docs.microsoft.com/en-us/windows/win32/secauthn/tls-cipher-suites-in-windows-server-2022).
|
||||
Note that the supported ciphers in this case follows the OS version, so if you
|
||||
are running an outdated OS you might still be supporting weak ciphers.
|
||||
|
@ -117,6 +117,10 @@
|
||||
#define SP_PROT_TLS1_2_CLIENT 0x00000800
|
||||
#endif
|
||||
|
||||
#ifndef SCH_USE_STRONG_CRYPTO
|
||||
#define SCH_USE_STRONG_CRYPTO 0x00400000
|
||||
#endif
|
||||
|
||||
#ifndef SECBUFFER_ALERT
|
||||
#define SECBUFFER_ALERT 17
|
||||
#endif
|
||||
@ -335,6 +339,11 @@ set_ssl_ciphers(SCHANNEL_CRED *schannel_cred, char *ciphers)
|
||||
alg = get_alg_id_by_name(startCur);
|
||||
if(alg)
|
||||
algIds[algCount++] = alg;
|
||||
else if(!strncmp(startCur, "USE_STRONG_CRYPTO",
|
||||
sizeof("USE_STRONG_CRYPTO") - 1) ||
|
||||
!strncmp(startCur, "SCH_USE_STRONG_CRYPTO",
|
||||
sizeof("SCH_USE_STRONG_CRYPTO") - 1))
|
||||
schannel_cred->dwFlags |= SCH_USE_STRONG_CRYPTO;
|
||||
else
|
||||
return CURLE_SSL_CIPHER;
|
||||
startCur = strchr(startCur, ':');
|
||||
|
Loading…
Reference in New Issue
Block a user