Test the client rejects invalid compression methods from the server.
Change-Id: I90286da596d5822d4cfedf40995d80cf76adaf97
Reviewed-on: https://boringssl-review.googlesource.com/17536
Reviewed-by: David Benjamin <davidben@google.com>
Commit-Queue: David Benjamin <davidben@google.com>
diff --git a/ssl/test/runner/common.go b/ssl/test/runner/common.go
index b6b4ef2..9e7b204 100644
--- a/ssl/test/runner/common.go
+++ b/ssl/test/runner/common.go
@@ -1279,6 +1279,10 @@
// send in the ClientHello.
SendCompressionMethods []byte
+ // SendCompressionMethod is the compression method to send in the
+ // ServerHello.
+ SendCompressionMethod byte
+
// AlwaysSendPreSharedKeyIdentityHint, if true, causes the server to
// always send a ServerKeyExchange for PSK ciphers, even if the identity
// hint is empty.
diff --git a/ssl/test/runner/handshake_server.go b/ssl/test/runner/handshake_server.go
index 3ad57cb..f70f4697 100644
--- a/ssl/test/runner/handshake_server.go
+++ b/ssl/test/runner/handshake_server.go
@@ -1044,7 +1044,7 @@
isDTLS: c.isDTLS,
vers: c.wireVersion,
versOverride: config.Bugs.SendServerHelloVersion,
- compressionMethod: compressionNone,
+ compressionMethod: config.Bugs.SendCompressionMethod,
}
hs.hello.random = make([]byte, 32)
diff --git a/ssl/test/runner/runner.go b/ssl/test/runner/runner.go
index 7c01757..64d0f87 100644
--- a/ssl/test/runner/runner.go
+++ b/ssl/test/runner/runner.go
@@ -2508,6 +2508,21 @@
expectedError: ":INVALID_COMPRESSION_LIST:",
expectedLocalError: "remote error: illegal parameter",
},
+ // Test that the client rejects invalid compression methods
+ // from the server.
+ {
+ testType: clientTest,
+ name: "InvalidCompressionMethod",
+ config: Config{
+ MaxVersion: VersionTLS12,
+ Bugs: ProtocolBugs{
+ SendCompressionMethod: 1,
+ },
+ },
+ shouldFail: true,
+ expectedError: ":UNSUPPORTED_COMPRESSION_ALGORITHM:",
+ expectedLocalError: "remote error: illegal parameter",
+ },
{
name: "GREASE-Client-TLS12",
config: Config{