mirror of
https://github.com/XTLS/REALITY.git
synced 2026-09-27 09:28:06 +03:00
crypto/tls: check FIPS 140-3 compliance of leaf even with InsecureSkipVerify
Fixes #80074 Change-Id: I5c619a090293a7668e26699c29b194a56a6a6964 Reviewed-on: https://go-review.googlesource.com/c/go/+/804200 Reviewed-by: Daniel McCarney <daniel@binaryparadox.net> Auto-Submit: Filippo Valsorda <filippo@golang.org> Reviewed-by: Mark Freeman <markfreeman@google.com> LUCI-TryBot-Result: golang-scoped@luci-project-accounts.iam.gserviceaccount.com <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Reviewed-by: Cherry Mui <cherryyz@google.com>
This commit is contained in:
+6
-1
@@ -1162,9 +1162,14 @@ func (c *Conn) verifyServerCertificate(certificates [][]byte) error {
|
||||
}
|
||||
}
|
||||
|
||||
if fips140tls.Required() && !isCertificateAllowedFIPS(certs[0]) {
|
||||
c.sendAlert(alertBadCertificate)
|
||||
err := errors.New("server's certificate is not allowed in FIPS 140-3 mode")
|
||||
return &CertificateVerificationError{UnverifiedCertificates: certs, Err: err}
|
||||
}
|
||||
|
||||
switch certs[0].PublicKey.(type) {
|
||||
case *rsa.PublicKey, *ecdsa.PublicKey, ed25519.PublicKey:
|
||||
break
|
||||
case *mldsa.PublicKey:
|
||||
if c.vers < VersionTLS13 {
|
||||
c.sendAlert(alertIllegalParameter)
|
||||
|
||||
@@ -994,6 +994,12 @@ func (c *Conn) processCertsFromClient(certificate Certificate) error {
|
||||
c.scts = certificate.SignedCertificateTimestamps
|
||||
|
||||
if len(certs) > 0 {
|
||||
if fips140tls.Required() && !isCertificateAllowedFIPS(certs[0]) {
|
||||
c.sendAlert(alertBadCertificate)
|
||||
err := errors.New("client's certificate is not allowed in FIPS 140-3 mode")
|
||||
return &CertificateVerificationError{UnverifiedCertificates: certs, Err: err}
|
||||
}
|
||||
|
||||
switch certs[0].PublicKey.(type) {
|
||||
case *ecdsa.PublicKey, *rsa.PublicKey, ed25519.PublicKey:
|
||||
case *mldsa.PublicKey:
|
||||
|
||||
Reference in New Issue
Block a user