Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/boringssl.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/ssl/test
diff options
context:
space:
mode:
authorDavid Benjamin <davidben@chromium.org>2014-12-13 07:44:33 +0300
committerAdam Langley <agl@google.com>2014-12-14 02:00:02 +0300
commitaccb454e4481f02b17b0447d99852b348d105d52 (patch)
treecdd1cba9e01e8494b8e0076fadabd18c994438ab /ssl/test
parent1eb367c03e79ce6596f1526558da17af96187acc (diff)
Add min_version tests.
These tests use both APIs. This also modifies the inline version negotiation's error codes (currently only used for DTLS) to align with SSLv23's error codes. Note: the peer should send a protocol_version alert which is currently untested because it's broken. Upstream would send such an alert if TLS 1.0 was supported but not otherwise, which is somewhat bizarre. We've actually regressed and never send the alert in SSLv23. When version negotiation is unified, we'll get the alerts back. Change-Id: I4c77bcef3a3cd54a039a642f189785cd34387410 Reviewed-on: https://boringssl-review.googlesource.com/2584 Reviewed-by: Adam Langley <agl@google.com>
Diffstat (limited to 'ssl/test')
-rw-r--r--ssl/test/runner/runner.go89
1 files changed, 89 insertions, 0 deletions
diff --git a/ssl/test/runner/runner.go b/ssl/test/runner/runner.go
index 2b91f43a..e3bf338a 100644
--- a/ssl/test/runner/runner.go
+++ b/ssl/test/runner/runner.go
@@ -1703,6 +1703,94 @@ func addVersionNegotiationTests() {
}
}
+func addMinimumVersionTests() {
+ for i, shimVers := range tlsVersions {
+ // Assemble flags to disable all older versions on the shim.
+ var flags []string
+ for _, vers := range tlsVersions[:i] {
+ flags = append(flags, vers.flag)
+ }
+
+ for _, runnerVers := range tlsVersions {
+ protocols := []protocol{tls}
+ if runnerVers.hasDTLS && shimVers.hasDTLS {
+ protocols = append(protocols, dtls)
+ }
+ for _, protocol := range protocols {
+ suffix := shimVers.name + "-" + runnerVers.name
+ if protocol == dtls {
+ suffix += "-DTLS"
+ }
+ shimVersFlag := strconv.Itoa(int(versionToWire(shimVers.version, protocol == dtls)))
+
+ // TODO(davidben): This should also assert on
+ // expectedLocalError to check we send an alert
+ // rather than close the connection, but the TLS
+ // code currently fails this.
+ var expectedVersion uint16
+ var shouldFail bool
+ var expectedError string
+ if runnerVers.version >= shimVers.version {
+ expectedVersion = runnerVers.version
+ } else {
+ shouldFail = true
+ expectedError = ":UNSUPPORTED_PROTOCOL:"
+ }
+
+ testCases = append(testCases, testCase{
+ protocol: protocol,
+ testType: clientTest,
+ name: "MinimumVersion-Client-" + suffix,
+ config: Config{
+ MaxVersion: runnerVers.version,
+ },
+ flags: flags,
+ expectedVersion: expectedVersion,
+ shouldFail: shouldFail,
+ expectedError: expectedError,
+ })
+ testCases = append(testCases, testCase{
+ protocol: protocol,
+ testType: clientTest,
+ name: "MinimumVersion-Client2-" + suffix,
+ config: Config{
+ MaxVersion: runnerVers.version,
+ },
+ flags: []string{"-min-version", shimVersFlag},
+ expectedVersion: expectedVersion,
+ shouldFail: shouldFail,
+ expectedError: expectedError,
+ })
+
+ testCases = append(testCases, testCase{
+ protocol: protocol,
+ testType: serverTest,
+ name: "MinimumVersion-Server-" + suffix,
+ config: Config{
+ MaxVersion: runnerVers.version,
+ },
+ flags: flags,
+ expectedVersion: expectedVersion,
+ shouldFail: shouldFail,
+ expectedError: expectedError,
+ })
+ testCases = append(testCases, testCase{
+ protocol: protocol,
+ testType: serverTest,
+ name: "MinimumVersion-Server2-" + suffix,
+ config: Config{
+ MaxVersion: runnerVers.version,
+ },
+ flags: []string{"-min-version", shimVersFlag},
+ expectedVersion: expectedVersion,
+ shouldFail: shouldFail,
+ expectedError: expectedError,
+ })
+ }
+ }
+ }
+}
+
func addD5BugTests() {
testCases = append(testCases, testCase{
testType: serverTest,
@@ -2398,6 +2486,7 @@ func main() {
addCBCSplittingTests()
addClientAuthTests()
addVersionNegotiationTests()
+ addMinimumVersionTests()
addD5BugTests()
addExtensionTests()
addResumptionVersionTests()