Add a test for RSA ServerKeyExchange.
Ensure that the client rejects it with UNEXPECTED_MESSAGE, not by attempting to decode it. Change-Id: Ifc5613cf1152e0f7dcbee73e05df1ef367dfbfd5 Reviewed-on: https://boringssl-review.googlesource.com/2232 Reviewed-by: Adam Langley <agl@google.com>
This commit is contained in:
parent
688d8dfe48
commit
9114fae39e
@ -505,6 +505,10 @@ type ProtocolBugs struct {
|
|||||||
// stress the replay bitmap window by simulating extreme packet loss and
|
// stress the replay bitmap window by simulating extreme packet loss and
|
||||||
// retransmit at the record layer.
|
// retransmit at the record layer.
|
||||||
SequenceNumberIncrement uint64
|
SequenceNumberIncrement uint64
|
||||||
|
|
||||||
|
// RSAServerKeyExchange, if true, causes the server to send a
|
||||||
|
// ServerKeyExchange message in the plain RSA key exchange.
|
||||||
|
RSAServerKeyExchange bool
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *Config) serverInit() {
|
func (c *Config) serverInit() {
|
||||||
|
@ -28,6 +28,11 @@ var errServerKeyExchange = errors.New("tls: invalid ServerKeyExchange message")
|
|||||||
type rsaKeyAgreement struct{}
|
type rsaKeyAgreement struct{}
|
||||||
|
|
||||||
func (ka rsaKeyAgreement) generateServerKeyExchange(config *Config, cert *Certificate, clientHello *clientHelloMsg, hello *serverHelloMsg) (*serverKeyExchangeMsg, error) {
|
func (ka rsaKeyAgreement) generateServerKeyExchange(config *Config, cert *Certificate, clientHello *clientHelloMsg, hello *serverHelloMsg) (*serverKeyExchangeMsg, error) {
|
||||||
|
if config.Bugs.RSAServerKeyExchange {
|
||||||
|
// Send an empty ServerKeyExchange message.
|
||||||
|
return &serverKeyExchangeMsg{}, nil
|
||||||
|
}
|
||||||
|
|
||||||
return nil, nil
|
return nil, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -495,6 +495,17 @@ var testCases = []testCase{
|
|||||||
shouldFail: true,
|
shouldFail: true,
|
||||||
expectedError: ":WRONG_CIPHER_RETURNED:",
|
expectedError: ":WRONG_CIPHER_RETURNED:",
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
name: "RSAServerKeyExchange",
|
||||||
|
config: Config{
|
||||||
|
CipherSuites: []uint16{TLS_RSA_WITH_AES_128_CBC_SHA},
|
||||||
|
Bugs: ProtocolBugs{
|
||||||
|
RSAServerKeyExchange: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
shouldFail: true,
|
||||||
|
expectedError: ":UNEXPECTED_MESSAGE:",
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
func doExchange(test *testCase, config *Config, conn net.Conn, messageLen int, isResume bool) error {
|
func doExchange(test *testCase, config *Config, conn net.Conn, messageLen int, isResume bool) error {
|
||||||
|
Loading…
Reference in New Issue
Block a user