Fix: always store client hello in ConnectionState (#161)

always store CH in ConnectionState

Fixes a bug. On a server side, ConnectionState.ClientHello was filled
only in case server was handling TLSv1.3
Cette révision appartient à :
Henry Case 2019-03-13 12:10:20 +00:00 révisé par GitHub
Parent 600d4dece5
révision af21f3083c
Signature inconnue de Gitea
ID de la clé GPG: 4AEE18F83AFDEB23
3 fichiers modifiés avec 3 ajouts et 6 suppressions

2
13.go
Voir le fichier

@ -234,8 +234,6 @@ func (hs *serverHandshakeState) doTLS13Handshake() error {
c := hs.c
hs.c.cipherSuite, hs.hello.cipherSuite = hs.suite.id, hs.suite.id
hs.c.clientHello = hs.clientHello.marshal()
// When picking the group for the handshake, priority is given to groups
// that the client provided a keyShare for, so to avoid a round-trip.
// After that the order of CurvePreferences is respected.

Voir le fichier

@ -180,7 +180,7 @@ func main() {
for _, ng := range strings.Split(named_groups, ":") {
id, err := getIDByName(namedGroupsToName, ng)
if err != nil {
panic("Wrong TLS version provided")
panic("Wrong group name provided")
}
client.TLS.CurvePreferences = append(client.TLS.CurvePreferences, tls.CurveID(id))
}

Voir le fichier

@ -65,10 +65,9 @@ func (c *Conn) serverHandshake() error {
if err != nil {
return err
}
// For an overview of TLS handshaking, see https://tools.ietf.org/html/rfc5246#section-7.3
// and https://tools.ietf.org/html/draft-ietf-tls-tls13-18#section-2
c.clientHello = hs.clientHello.marshal()
c.buffering = true
if c.vers >= VersionTLS13 {
if err := hs.doTLS13Handshake(); err != nil {
return err