Skip to content

Commit bd6a9be

Browse files
committed
test: add test for checking tls downgrade canary
1 parent 65ca559 commit bd6a9be

File tree

2 files changed

+57
-1
lines changed

2 files changed

+57
-1
lines changed

handshake_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -477,7 +477,7 @@ func runMain(m *testing.M) int {
477477

478478
func testHandshake(t *testing.T, clientConfig, serverConfig *Config) (serverState, clientState ConnectionState, err error) {
479479
// [uTLS SECTION BEGIN]
480-
return testUtlsHandshake(t, clientConfig, serverConfig, nil)
480+
return testUtlsHandshake(t, clientConfig, serverConfig, spec)
481481
}
482482
func testUtlsHandshake(t *testing.T, clientConfig, serverConfig *Config, spec *ClientHelloSpec) (serverState, clientState ConnectionState, err error) {
483483
// [uTLS SECTION END]

u_conn_test.go

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -851,3 +851,59 @@ func TestUTLSECH(t *testing.T) {
851851
})
852852
}
853853
}
854+
855+
var spec *ClientHelloSpec = nil
856+
857+
func TestDowngradeCanaryUTLS(t *testing.T) {
858+
859+
chromeLatest, err := utlsIdToSpec(HelloChrome_Auto)
860+
if err != nil {
861+
t.Fatal(err)
862+
}
863+
864+
firefoxLatest, err := utlsIdToSpec(HelloFirefox_Auto)
865+
if err != nil {
866+
t.Fatal(err)
867+
}
868+
869+
for _, test := range []struct {
870+
name string
871+
spec *ClientHelloSpec
872+
expectSuccess bool
873+
}{
874+
{
875+
name: "latest chrome",
876+
spec: &chromeLatest,
877+
expectSuccess: true,
878+
},
879+
{
880+
name: "latest firefox",
881+
spec: &firefoxLatest,
882+
expectSuccess: true,
883+
},
884+
} {
885+
t.Run(test.name, func(t *testing.T) {
886+
spec = test.spec
887+
if err := testDowngradeCanary(t, VersionTLS13, VersionTLS12); err == nil {
888+
t.Errorf("downgrade from TLS 1.3 to TLS 1.2 was not detected")
889+
}
890+
if testing.Short() {
891+
t.Skip("skipping the rest of the checks in short mode")
892+
}
893+
if err := testDowngradeCanary(t, VersionTLS13, VersionTLS11); err == nil {
894+
t.Errorf("downgrade from TLS 1.3 to TLS 1.1 was not detected")
895+
}
896+
if err := testDowngradeCanary(t, VersionTLS13, VersionTLS10); err == nil {
897+
t.Errorf("downgrade from TLS 1.3 to TLS 1.0 was not detected")
898+
}
899+
if err := testDowngradeCanary(t, VersionTLS12, VersionTLS11); err == nil {
900+
t.Errorf("downgrade from TLS 1.2 to TLS 1.1 was not detected")
901+
}
902+
if err := testDowngradeCanary(t, VersionTLS12, VersionTLS10); err == nil {
903+
t.Errorf("downgrade from TLS 1.2 to TLS 1.0 was not detected")
904+
}
905+
spec = nil
906+
})
907+
908+
}
909+
}

0 commit comments

Comments
 (0)