mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
crypto/tls: improve error messages for invalid certificates and signatures
Also, fix the alert value sent when a signature by a client certificate is invalid in TLS 1.0-1.2. Fixes #35190 Change-Id: I2ae1d5593dfd5ee2b4d979664aec74aab4a8a704 Reviewed-on: https://go-review.googlesource.com/c/go/+/204157 Reviewed-by: Katie Hockman <katie@golang.org>
This commit is contained in:
parent
a05934639b
commit
cd18da451f
9 changed files with 96 additions and 90 deletions
|
|
@ -581,11 +581,7 @@ func (hs *clientHandshakeState) doFullHandshake() error {
|
|||
if certVerify.hasSignatureAlgorithm {
|
||||
certVerify.signatureAlgorithm = signatureAlgorithm
|
||||
}
|
||||
signed, err := hs.finishedHash.hashForClientCertificate(sigType, hashFunc, hs.masterSecret)
|
||||
if err != nil {
|
||||
c.sendAlert(alertInternalError)
|
||||
return err
|
||||
}
|
||||
signed := hs.finishedHash.hashForClientCertificate(sigType, hashFunc, hs.masterSecret)
|
||||
signOpts := crypto.SignerOpts(hashFunc)
|
||||
if sigType == signatureRSAPSS {
|
||||
signOpts = &rsa.PSSOptions{SaltLength: rsa.PSSSaltLengthEqualsHash, Hash: hashFunc}
|
||||
|
|
@ -878,7 +874,11 @@ func certificateRequestInfoFromMsg(certReq *certificateRequestMsg) *CertificateR
|
|||
// See RFC 5246, Section 7.4.4 (where it calls this "somewhat complicated").
|
||||
cri.SignatureSchemes = make([]SignatureScheme, 0, len(certReq.supportedSignatureAlgorithms))
|
||||
for _, sigScheme := range certReq.supportedSignatureAlgorithms {
|
||||
switch signatureFromSignatureScheme(sigScheme) {
|
||||
sigType, _, err := typeAndHashFromSignatureScheme(sigScheme)
|
||||
if err != nil {
|
||||
continue
|
||||
}
|
||||
switch sigType {
|
||||
case signatureECDSA, signatureEd25519:
|
||||
if ecAvail {
|
||||
cri.SignatureSchemes = append(cri.SignatureSchemes, sigScheme)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue