send a reserved version number in the EncryptedExtensions message

This commit is contained in:
Marten Seemann
2017-11-30 12:45:55 +07:00
parent be29963637
commit 1a3852aec6
2 changed files with 12 additions and 6 deletions

View File

@@ -47,13 +47,14 @@ func (h *extensionHandlerServer) Send(hType mint.HandshakeType, el *mint.Extensi
// TODO(#855): generate a real token
transportParameter{statelessResetTokenParameterID, bytes.Repeat([]byte{42}, 16)},
)
supportedVersions := make([]uint32, len(h.supportedVersions))
for i, v := range h.supportedVersions {
supportedVersions[i] = uint32(v)
supportedVersions := protocol.GetGreasedVersions(h.supportedVersions)
versions := make([]uint32, len(supportedVersions))
for i, v := range supportedVersions {
versions[i] = uint32(v)
}
data, err := syntax.Marshal(encryptedExtensionsTransportParameters{
NegotiatedVersion: uint32(h.version),
SupportedVersions: supportedVersions,
SupportedVersions: versions,
Parameters: transportParams,
})
if err != nil {

View File

@@ -45,7 +45,8 @@ var _ = Describe("TLS Extension Handler, for the server", func() {
It("adds TransportParameters to the EncryptedExtensions message", func() {
handler.version = 666
handler.supportedVersions = []protocol.VersionNumber{13, 37, 42}
versions := []protocol.VersionNumber{13, 37, 42}
handler.supportedVersions = versions
err := handler.Send(mint.HandshakeTypeEncryptedExtensions, &el)
Expect(err).ToNot(HaveOccurred())
Expect(el).To(HaveLen(1))
@@ -55,8 +56,12 @@ var _ = Describe("TLS Extension Handler, for the server", func() {
eetp := &encryptedExtensionsTransportParameters{}
_, err = syntax.Unmarshal(ext.data, eetp)
Expect(err).ToNot(HaveOccurred())
Expect(eetp.SupportedVersions).To(Equal([]uint32{13, 37, 42}))
Expect(eetp.NegotiatedVersion).To(BeEquivalentTo(666))
// the SupportedVersions will contain one reserved version number
Expect(eetp.SupportedVersions).To(HaveLen(len(versions) + 1))
for _, version := range versions {
Expect(eetp.SupportedVersions).To(ContainElement(uint32(version)))
}
})
})