Sfoglia il codice sorgente

crypto/tls: simplify supported points handling to match BoringSSL

BoGo: PointFormat-Server-*
v1.2.3
Filippo Valsorda 7 anni fa
committed by Peter Wu
parent
commit
bbb712bfd8
1 ha cambiato i file con 14 aggiunte e 10 eliminazioni
  1. +14
    -10
      handshake_server.go

+ 14
- 10
handshake_server.go Vedi File

@@ -185,28 +185,32 @@ func (hs *serverHandshakeState) readClientHello() (isResume bool, err error) {
}
c.haveVers = true

supportedCurve := false
preferredCurves := c.config.curvePreferences()
Curves:
for _, curve := range hs.clientHello.supportedCurves {
for _, supported := range preferredCurves {
if supported == curve {
supportedCurve = true
hs.ellipticOk = true
break Curves
}
}
}

supportedPointFormat := false
for _, pointFormat := range hs.clientHello.supportedPoints {
if pointFormat == pointFormatUncompressed {
supportedPointFormat = true
break
// If present, the supported points extension must include uncompressed.
// Can be absent. This behavior mirrors BoringSSL.
if hs.clientHello.supportedPoints != nil {
supportedPointFormat := false
for _, pointFormat := range hs.clientHello.supportedPoints {
if pointFormat == pointFormatUncompressed {
supportedPointFormat = true
break
}
}
if !supportedPointFormat {
c.sendAlert(alertHandshakeFailure)
return false, errors.New("tls: client does not support uncompressed points")
}
}
// TLS 1.3 has removed point format negotiation.
supportedPointFormat = supportedPointFormat || c.vers >= VersionTLS13
hs.ellipticOk = supportedCurve && supportedPointFormat

foundCompression := false
// We only support null compression, so check that the client offered it.


Caricamento…
Annulla
Salva