summaryrefslogtreecommitdiff
path: root/src/ssl/test/runner/handshake_messages.go
diff options
context:
space:
mode:
Diffstat (limited to 'src/ssl/test/runner/handshake_messages.go')
-rw-r--r--src/ssl/test/runner/handshake_messages.go25
1 files changed, 24 insertions, 1 deletions
diff --git a/src/ssl/test/runner/handshake_messages.go b/src/ssl/test/runner/handshake_messages.go
index f12ca1ac..ac52eed4 100644
--- a/src/ssl/test/runner/handshake_messages.go
+++ b/src/ssl/test/runner/handshake_messages.go
@@ -298,6 +298,7 @@ type clientHelloMsg struct {
pad int
compressedCertAlgs []uint16
delegatedCredentials bool
+ pqExperimentSignal bool
}
func (m *clientHelloMsg) equal(i interface{}) bool {
@@ -352,7 +353,8 @@ func (m *clientHelloMsg) equal(i interface{}) bool {
m.emptyExtensions == m1.emptyExtensions &&
m.pad == m1.pad &&
eqUint16s(m.compressedCertAlgs, m1.compressedCertAlgs) &&
- m.delegatedCredentials == m1.delegatedCredentials
+ m.delegatedCredentials == m1.delegatedCredentials &&
+ m.pqExperimentSignal == m1.pqExperimentSignal
}
func (m *clientHelloMsg) marshalKeyShares(bb *byteBuilder) {
@@ -598,6 +600,11 @@ func (m *clientHelloMsg) marshal() []byte {
extensions.addU16(extensionDelegatedCredentials)
extensions.addU16(0) // Length is always 0
}
+ if m.pqExperimentSignal {
+ extensions.addU16(extensionPQExperimentSignal)
+ extensions.addU16(0) // Length is always 0
+ }
+
// The PSK extension must be last. See https://tools.ietf.org/html/rfc8446#section-4.2.11
if len(m.pskIdentities) > 0 && !m.pskBinderFirst {
extensions.addU16(extensionPreSharedKey)
@@ -724,6 +731,7 @@ func (m *clientHelloMsg) unmarshal(data []byte) bool {
m.extendedMasterSecret = false
m.customExtension = ""
m.delegatedCredentials = false
+ m.pqExperimentSignal = false
if len(reader) == 0 {
// ClientHello is optionally followed by extension data
@@ -959,6 +967,11 @@ func (m *clientHelloMsg) unmarshal(data []byte) bool {
return false
}
m.delegatedCredentials = true
+ case extensionPQExperimentSignal:
+ if len(body) != 0 {
+ return false
+ }
+ m.pqExperimentSignal = true
}
if isGREASEValue(extension) {
@@ -1226,6 +1239,7 @@ type serverExtensions struct {
supportedCurves []CurveID
quicTransportParams []byte
serverNameAck bool
+ pqExperimentSignal bool
}
func (m *serverExtensions) marshal(extensions *byteBuilder) {
@@ -1360,6 +1374,10 @@ func (m *serverExtensions) marshal(extensions *byteBuilder) {
extensions.addU16(extensionServerName)
extensions.addU16(0) // zero length
}
+ if m.pqExperimentSignal {
+ extensions.addU16(extensionPQExperimentSignal)
+ extensions.addU16(0) // zero length
+ }
}
func (m *serverExtensions) unmarshal(data byteReader, version uint16) bool {
@@ -1468,6 +1486,11 @@ func (m *serverExtensions) unmarshal(data byteReader, version uint16) bool {
return false
}
m.hasEarlyData = true
+ case extensionPQExperimentSignal:
+ if len(body) != 0 {
+ return false
+ }
+ m.pqExperimentSignal = true
default:
// Unknown extensions are illegal from the server.
return false