mirror of
https://github.com/XTLS/REALITY.git
synced 2026-09-22 23:08:01 +03:00
Sync upstream Go 1.27+; Add "[REALITY] SECTION" comments (#30)
https://github.com/XTLS/REALITY/pull/30#issuecomment-5579024460 https://github.com/XTLS/REALITY/pull/30#issuecomment-5594872257 https://github.com/XTLS/REALITY/pull/38#discussion_r4058349112
This commit is contained in:
+28
-37
@@ -12,18 +12,35 @@ import (
|
||||
// Defaults are collected in this file to allow distributions to more easily patch
|
||||
// them to apply local policies.
|
||||
|
||||
// tlsmlkem=0 restores the pre-Go 1.24 default key exchanges.
|
||||
//var tlsmlkem = godebug.New("tlsmlkem")
|
||||
|
||||
// defaultCurvePreferences is the default set of supported key exchanges, as
|
||||
// well as the preference order.
|
||||
func defaultCurvePreferences() []CurveID {
|
||||
if false {
|
||||
return []CurveID{X25519, CurveP256, CurveP384, CurveP521}
|
||||
// tlssecpmlkem=0 restores the pre-Go 1.26 default key exchanges.
|
||||
//var tlssecpmlkem = godebug.New("tlssecpmlkem")
|
||||
|
||||
// defaultCurveEnabled returns whether the key exchange c is enabled by default.
|
||||
func defaultCurveEnabled(c CurveID) bool {
|
||||
switch c {
|
||||
case X25519, CurveP256, CurveP384, CurveP521:
|
||||
return true
|
||||
case X25519MLKEM768:
|
||||
return true//tlsmlkem.Value() != "0"
|
||||
case SecP256r1MLKEM768, SecP384r1MLKEM1024:
|
||||
return true//tlsmlkem.Value() != "0" && tlssecpmlkem.Value() != "0"
|
||||
|
||||
default:
|
||||
return false
|
||||
}
|
||||
return []CurveID{X25519MLKEM768, X25519, CurveP256, CurveP384, CurveP521}
|
||||
}
|
||||
|
||||
//var tlssha1 = godebug.New("tlssha1")
|
||||
// curvePreferenceOrder is the fixed preference order of key exchanges. It must
|
||||
// include every supported key exchange.
|
||||
func curvePreferenceOrder() []CurveID {
|
||||
return []CurveID{
|
||||
X25519MLKEM768, SecP256r1MLKEM768, SecP384r1MLKEM1024, MLKEM1024,
|
||||
X25519, CurveP256, CurveP384, CurveP521,
|
||||
}
|
||||
}
|
||||
|
||||
// defaultSupportedSignatureAlgorithms returns the signature and hash algorithms that
|
||||
// the code advertises and supports in a TLS 1.2+ ClientHello and in a TLS 1.2+
|
||||
@@ -31,30 +48,9 @@ func defaultCurvePreferences() []CurveID {
|
||||
// Note that in TLS 1.2, the ECDSA algorithms are not constrained to P-256, etc.
|
||||
func defaultSupportedSignatureAlgorithms() []SignatureScheme {
|
||||
return []SignatureScheme{
|
||||
PSSWithSHA256,
|
||||
ECDSAWithP256AndSHA256,
|
||||
Ed25519,
|
||||
PSSWithSHA384,
|
||||
PSSWithSHA512,
|
||||
PKCS1WithSHA256,
|
||||
PKCS1WithSHA384,
|
||||
PKCS1WithSHA512,
|
||||
ECDSAWithP384AndSHA384,
|
||||
ECDSAWithP521AndSHA512,
|
||||
}
|
||||
}
|
||||
|
||||
// defaultSupportedSignatureAlgorithmsCert returns the signature algorithms that
|
||||
// the code advertises as supported for signatures in certificates.
|
||||
//
|
||||
// We include all algorithms, including SHA-1 and PKCS#1 v1.5, because it's more
|
||||
// likely that something on our side will be willing to accept a *-with-SHA1
|
||||
// certificate (e.g. with a custom VerifyConnection or by a direct match with
|
||||
// the CertPool), than that the peer would have a better certificate but is just
|
||||
// choosing not to send it. crypto/x509 will refuse to verify important SHA-1
|
||||
// signatures anyway.
|
||||
func defaultSupportedSignatureAlgorithmsCert() []SignatureScheme {
|
||||
return []SignatureScheme{
|
||||
MLDSA44,
|
||||
MLDSA65,
|
||||
MLDSA87,
|
||||
PSSWithSHA256,
|
||||
ECDSAWithP256AndSHA256,
|
||||
Ed25519,
|
||||
@@ -70,9 +66,6 @@ func defaultSupportedSignatureAlgorithmsCert() []SignatureScheme {
|
||||
}
|
||||
}
|
||||
|
||||
//var tlsrsakex = godebug.New("tlsrsakex")
|
||||
//var tls3des = godebug.New("tls3des")
|
||||
|
||||
func supportedCipherSuites(aesGCMPreferred bool) []uint16 {
|
||||
if aesGCMPreferred {
|
||||
return slices.Clone(cipherSuitesPreferenceOrder)
|
||||
@@ -84,9 +77,7 @@ func supportedCipherSuites(aesGCMPreferred bool) []uint16 {
|
||||
func defaultCipherSuites(aesGCMPreferred bool) []uint16 {
|
||||
cipherSuites := supportedCipherSuites(aesGCMPreferred)
|
||||
return slices.DeleteFunc(cipherSuites, func(c uint16) bool {
|
||||
return disabledCipherSuites[c] ||
|
||||
rsaKexCiphers[c] ||
|
||||
tdesCiphers[c]
|
||||
return disabledCipherSuites[c]
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user