Unbreak SSL_total_renegotiations. The logic to update that got removed in https://boringssl-review.googlesource.com/4825. Add tests. Change-Id: Idc550e8fa3ce6f69a76fa65d7651adde281edba6 Reviewed-on: https://boringssl-review.googlesource.com/6220 Reviewed-by: Matt Braithwaite <mab@google.com> Reviewed-by: Adam Langley <alangley@gmail.com> Reviewed-by: Adam Langley <agl@google.com>
diff --git a/ssl/s3_pkt.c b/ssl/s3_pkt.c index 3c2435d..db49601 100644 --- a/ssl/s3_pkt.c +++ b/ssl/s3_pkt.c
@@ -563,6 +563,7 @@ } /* Begin a new handshake. */ + s->s3->total_renegotiations++; s->state = SSL_ST_CONNECT; i = s->handshake_func(s); if (i < 0) {
diff --git a/ssl/test/bssl_shim.cc b/ssl/test/bssl_shim.cc index edae67b..237ebf1 100644 --- a/ssl/test/bssl_shim.cc +++ b/ssl/test/bssl_shim.cc
@@ -1333,6 +1333,14 @@ return false; } + if (SSL_total_renegotiations(ssl.get()) != + config->expect_total_renegotiations) { + fprintf(stderr, "Expected %d renegotiations, got %d\n", + config->expect_total_renegotiations, + SSL_total_renegotiations(ssl.get())); + return false; + } + return true; }
diff --git a/ssl/test/runner/runner.go b/ssl/test/runner/runner.go index 61c8c57..ed37b77 100644 --- a/ssl/test/runner/runner.go +++ b/ssl/test/runner/runner.go
@@ -2711,6 +2711,7 @@ tests = append(tests, testCase{ name: "Renegotiate-Client", renegotiate: true, + flags: []string{"-expect-total-renegotiations", "1"}, }) // NPN on client and server; results in post-handshake message. tests = append(tests, testCase{ @@ -3715,6 +3716,7 @@ }, }, renegotiate: true, + flags: []string{"-expect-total-renegotiations", "1"}, }) testCases = append(testCases, testCase{ name: "Renegotiate-Client-EmptyExt", @@ -3757,6 +3759,7 @@ NoRenegotiationInfo: true, }, }, + flags: []string{"-expect-total-renegotiations", "1"}, }) testCases = append(testCases, testCase{ name: "Renegotiate-Client-SwitchCiphers", @@ -3765,6 +3768,7 @@ CipherSuites: []uint16{TLS_RSA_WITH_RC4_128_SHA}, }, renegotiateCiphers: []uint16{TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256}, + flags: []string{"-expect-total-renegotiations", "1"}, }) testCases = append(testCases, testCase{ name: "Renegotiate-Client-SwitchCiphers2", @@ -3773,6 +3777,7 @@ CipherSuites: []uint16{TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256}, }, renegotiateCiphers: []uint16{TLS_RSA_WITH_RC4_128_SHA}, + flags: []string{"-expect-total-renegotiations", "1"}, }) testCases = append(testCases, testCase{ name: "Renegotiate-Client-Forbidden", @@ -3791,6 +3796,7 @@ RequireSameRenegoClientVersion: true, }, }, + flags: []string{"-expect-total-renegotiations", "1"}, }) testCases = append(testCases, testCase{ name: "Renegotiate-FalseStart", @@ -3802,6 +3808,7 @@ flags: []string{ "-false-start", "-select-next-proto", "foo", + "-expect-total-renegotiations", "1", }, shimWritesFirst: true, })
diff --git a/ssl/test/test_config.cc b/ssl/test/test_config.cc index 1c42b2e..6503494 100644 --- a/ssl/test/test_config.cc +++ b/ssl/test/test_config.cc
@@ -138,6 +138,7 @@ { "-max-version", &TestConfig::max_version }, { "-mtu", &TestConfig::mtu }, { "-export-keying-material", &TestConfig::export_keying_material }, + { "-expect-total-renegotiations", &TestConfig::expect_total_renegotiations }, }; } // namespace
diff --git a/ssl/test/test_config.h b/ssl/test/test_config.h index 9dea8e9..ea05271 100644 --- a/ssl/test/test_config.h +++ b/ssl/test/test_config.h
@@ -97,6 +97,7 @@ bool verify_peer = false; bool expect_verify_result = false; std::string signed_cert_timestamps; + int expect_total_renegotiations = 0; }; bool ParseConfig(int argc, char **argv, TestConfig *out_config);