forked from quic-go/quic-go
move adding of stateless reset tokens to the transport parameter struct
This commit is contained in:
@@ -1,7 +1,6 @@
|
||||
package handshake
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"errors"
|
||||
"fmt"
|
||||
|
||||
@@ -50,11 +49,6 @@ func (h *extensionHandlerServer) Send(hType mint.HandshakeType, el *mint.Extensi
|
||||
return nil
|
||||
}
|
||||
|
||||
transportParams := append(
|
||||
h.ourParams.getTransportParameters(),
|
||||
// TODO(#855): generate a real token
|
||||
transportParameter{statelessResetTokenParameterID, bytes.Repeat([]byte{42}, 16)},
|
||||
)
|
||||
supportedVersions := protocol.GetGreasedVersions(h.supportedVersions)
|
||||
versions := make([]uint32, len(supportedVersions))
|
||||
for i, v := range supportedVersions {
|
||||
@@ -64,7 +58,7 @@ func (h *extensionHandlerServer) Send(hType mint.HandshakeType, el *mint.Extensi
|
||||
data, err := syntax.Marshal(encryptedExtensionsTransportParameters{
|
||||
NegotiatedVersion: uint32(h.version),
|
||||
SupportedVersions: versions,
|
||||
Parameters: transportParams,
|
||||
Parameters: h.ourParams.getTransportParameters(),
|
||||
})
|
||||
if err != nil {
|
||||
return err
|
||||
|
||||
@@ -237,12 +237,13 @@ var _ = Describe("Transport Parameters", func() {
|
||||
MaxBidiStreams: 0x1234,
|
||||
MaxUniStreams: 0x4321,
|
||||
DisableMigration: true,
|
||||
StatelessResetToken: []byte("foobar"),
|
||||
}
|
||||
})
|
||||
|
||||
It("creates the parameters list", func() {
|
||||
values := paramsListToMap(params.getTransportParameters())
|
||||
Expect(values).To(HaveLen(7))
|
||||
Expect(values).To(HaveLen(8))
|
||||
Expect(values).To(HaveKeyWithValue(initialMaxStreamDataParameterID, []byte{0xde, 0xad, 0xbe, 0xef}))
|
||||
Expect(values).To(HaveKeyWithValue(initialMaxDataParameterID, []byte{0xde, 0xca, 0xfb, 0xad}))
|
||||
Expect(values).To(HaveKeyWithValue(initialMaxBidiStreamsParameterID, []byte{0x12, 0x34}))
|
||||
@@ -250,6 +251,7 @@ var _ = Describe("Transport Parameters", func() {
|
||||
Expect(values).To(HaveKeyWithValue(idleTimeoutParameterID, []byte{0xca, 0xfe}))
|
||||
Expect(values).To(HaveKeyWithValue(maxPacketSizeParameterID, []byte{0x5, 0xac})) // 1452 = 0x5ac
|
||||
Expect(values).To(HaveKeyWithValue(disableMigrationParameterID, []byte{}))
|
||||
Expect(values).To(HaveKeyWithValue(statelessResetTokenParameterID, []byte("foobar")))
|
||||
})
|
||||
})
|
||||
})
|
||||
|
||||
@@ -29,7 +29,7 @@ type TransportParameters struct {
|
||||
OmitConnectionID bool // only used for gQUIC
|
||||
IdleTimeout time.Duration
|
||||
DisableMigration bool // only used for IETF QUIC
|
||||
|
||||
StatelessResetToken []byte // only used for IETF QUIC
|
||||
}
|
||||
|
||||
// readHelloMap reads the transport parameters from the tags sent in a gQUIC handshake message
|
||||
@@ -179,6 +179,9 @@ func (p *TransportParameters) getTransportParameters() []transportParameter {
|
||||
if p.DisableMigration {
|
||||
params = append(params, transportParameter{disableMigrationParameterID, nil})
|
||||
}
|
||||
if len(p.StatelessResetToken) > 0 {
|
||||
params = append(params, transportParameter{statelessResetTokenParameterID, p.StatelessResetToken})
|
||||
}
|
||||
return params
|
||||
}
|
||||
|
||||
|
||||
@@ -51,6 +51,8 @@ func newServerTLS(
|
||||
MaxBidiStreams: uint16(config.MaxIncomingStreams),
|
||||
MaxUniStreams: uint16(config.MaxIncomingUniStreams),
|
||||
DisableMigration: true,
|
||||
// TODO(#855): generate a real token
|
||||
StatelessResetToken: bytes.Repeat([]byte{42}, 16),
|
||||
}
|
||||
mconf, err := tlsToMintConfig(tlsConf, protocol.PerspectiveServer)
|
||||
if err != nil {
|
||||
|
||||
Reference in New Issue
Block a user