From: Watson Ladd Date: Fri, 20 Aug 2021 22:52:08 +0000 (-0700) Subject: [dev.boringcrypto] crypto/tls: permit P-521 in FIPS mode X-Git-Tag: go1.19beta1~484^2~41 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=5ae200d526;p=gostls13.git [dev.boringcrypto] crypto/tls: permit P-521 in FIPS mode While BoringCrypto has a certification for P-521, the go code disallows certificates with it. This change permits those certificates to be used. Change-Id: I451c91a845f22ff0e4c3e922eaf8bf82466e80ae Reviewed-on: https://go-review.googlesource.com/c/go/+/343880 Reviewed-by: Filippo Valsorda Run-TryBot: Filippo Valsorda TryBot-Result: Go Bot Trust: Dmitri Shuralyov --- diff --git a/src/crypto/tls/boring.go b/src/crypto/tls/boring.go index 09f71c1691..dabc67423d 100644 --- a/src/crypto/tls/boring.go +++ b/src/crypto/tls/boring.go @@ -6,6 +6,7 @@ package tls import ( "crypto/ecdsa" + "crypto/elliptic" "crypto/internal/boring/fipstls" "crypto/rsa" "crypto/x509" @@ -85,7 +86,7 @@ func isBoringCertificate(c *x509.Certificate) bool { return true } - // Otherwise the key must be RSA 2048, RSA 3072, or ECDSA P-256. + // Otherwise the key must be RSA 2048, RSA 3072, or ECDSA P-256, P-384, or P-521. switch k := c.PublicKey.(type) { default: return false @@ -94,7 +95,7 @@ func isBoringCertificate(c *x509.Certificate) bool { return false } case *ecdsa.PublicKey: - if name := k.Curve.Params().Name; name != "P-256" && name != "P-384" { + if k.Curve != elliptic.P256() && k.Curve != elliptic.P384() && k.Curve != elliptic.P521() { return false } }