Skip to content

Commit cf3d065

Browse files
crypto/x509: fix broken tests
Convert TestUnknownAuthorityError to use subtests, avoiding continuing the test after an unrecoverable failure. Skip TestIssue51759 on pre-macOS 11 builders, which don't enforce the behavior we were testing for. Updates #58791 Fixes #58812 Change-Id: I4e3e5bc371aa139d38052184c8232f8cb564138f Reviewed-on: https://go-review.googlesource.com/c/go/+/472496 TryBot-Result: Gopher Robot <[email protected]> Run-TryBot: Roland Shoemaker <[email protected]> Reviewed-by: Dmitri Shuralyov <[email protected]> Reviewed-by: Dmitri Shuralyov <[email protected]>
1 parent 61e5ea4 commit cf3d065

File tree

1 file changed

+30
-24
lines changed

1 file changed

+30
-24
lines changed

src/crypto/x509/verify_test.go

Lines changed: 30 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1481,33 +1481,36 @@ ePBQCV1F9sE2q4ZrnsT9TZoNrSe/bMDjzA==
14811481
-----END CERTIFICATE-----`
14821482

14831483
var unknownAuthorityErrorTests = []struct {
1484+
name string
14841485
cert string
14851486
expected string
14861487
}{
1487-
{selfSignedWithCommonName, "x509: certificate signed by unknown authority (possibly because of \"empty\" while trying to verify candidate authority certificate \"test\")"},
1488-
{selfSignedNoCommonNameWithOrgName, "x509: certificate signed by unknown authority (possibly because of \"empty\" while trying to verify candidate authority certificate \"ca\")"},
1489-
{selfSignedNoCommonNameNoOrgName, "x509: certificate signed by unknown authority (possibly because of \"empty\" while trying to verify candidate authority certificate \"serial:0\")"},
1488+
{"self-signed, cn", selfSignedWithCommonName, "x509: certificate signed by unknown authority (possibly because of \"empty\" while trying to verify candidate authority certificate \"test\")"},
1489+
{"self-signed, no cn, org", selfSignedNoCommonNameWithOrgName, "x509: certificate signed by unknown authority (possibly because of \"empty\" while trying to verify candidate authority certificate \"ca\")"},
1490+
{"self-signed, no cn, no org", selfSignedNoCommonNameNoOrgName, "x509: certificate signed by unknown authority (possibly because of \"empty\" while trying to verify candidate authority certificate \"serial:0\")"},
14901491
}
14911492

14921493
func TestUnknownAuthorityError(t *testing.T) {
14931494
for i, tt := range unknownAuthorityErrorTests {
1494-
der, _ := pem.Decode([]byte(tt.cert))
1495-
if der == nil {
1496-
t.Errorf("#%d: Unable to decode PEM block", i)
1497-
}
1498-
c, err := ParseCertificate(der.Bytes)
1499-
if err != nil {
1500-
t.Errorf("#%d: Unable to parse certificate -> %v", i, err)
1501-
}
1502-
uae := &UnknownAuthorityError{
1503-
Cert: c,
1504-
hintErr: fmt.Errorf("empty"),
1505-
hintCert: c,
1506-
}
1507-
actual := uae.Error()
1508-
if actual != tt.expected {
1509-
t.Errorf("#%d: UnknownAuthorityError.Error() response invalid actual: %s expected: %s", i, actual, tt.expected)
1510-
}
1495+
t.Run(tt.name, func(t *testing.T) {
1496+
der, _ := pem.Decode([]byte(tt.cert))
1497+
if der == nil {
1498+
t.Fatalf("#%d: Unable to decode PEM block", i)
1499+
}
1500+
c, err := ParseCertificate(der.Bytes)
1501+
if err != nil {
1502+
t.Fatalf("#%d: Unable to parse certificate -> %v", i, err)
1503+
}
1504+
uae := &UnknownAuthorityError{
1505+
Cert: c,
1506+
hintErr: fmt.Errorf("empty"),
1507+
hintCert: c,
1508+
}
1509+
actual := uae.Error()
1510+
if actual != tt.expected {
1511+
t.Errorf("#%d: UnknownAuthorityError.Error() response invalid actual: %s expected: %s", i, actual, tt.expected)
1512+
}
1513+
})
15111514
}
15121515
}
15131516

@@ -1857,6 +1860,9 @@ func TestIssue51759(t *testing.T) {
18571860
if runtime.GOOS != "darwin" {
18581861
t.Skip("only affects darwin")
18591862
}
1863+
if builder := testenv.Builder(); builder == "darwin-amd64-10_14" || builder == "darwin-amd64-10_15" {
1864+
t.Skip("behavior only enforced in macOS 11 and after")
1865+
}
18601866
// badCertData contains a cert that we parse as valid
18611867
// but that macOS SecCertificateCreateWithData rejects.
18621868
const badCertData = "0\x82\x01U0\x82\x01\a\xa0\x03\x02\x01\x02\x02\x01\x020\x05\x06\x03+ep0R1P0N\x06\x03U\x04\x03\x13Gderpkey8dc58100b2493614ee1692831a461f3f4dd3f9b3b088e244f887f81b4906ac260\x1e\x17\r220112235755Z\x17\r220313235755Z0R1P0N\x06\x03U\x04\x03\x13Gderpkey8dc58100b2493614ee1692831a461f3f4dd3f9b3b088e244f887f81b4906ac260*0\x05\x06\x03+ep\x03!\x00bA\xd8e\xadW\xcb\xefZ\x89\xb5\"\x1eR\x9d\xba\x0e:\x1042Q@\u007f\xbd\xfb{ks\x04\xd1£\x020\x000\x05\x06\x03+ep\x03A\x00[\xa7\x06y\x86(\x94\x97\x9eLwA\x00\x01x\xaa\xbc\xbd Ê]\n(΅!ف0\xf5\x9a%I\x19<\xffo\xf1\xeaaf@\xb1\xa7\xaf\xfd\xe9R\xc7\x0f\x8d&\xd5\xfc\x0f\x82\x84a\xbc\r"
@@ -1867,9 +1873,9 @@ func TestIssue51759(t *testing.T) {
18671873

18681874
t.Run("leaf", func(t *testing.T) {
18691875
opts := VerifyOptions{}
1870-
expectedErr := errors.New("invalid leaf certificate")
1876+
expectedErr := "invalid leaf certificate"
18711877
_, err = badCert.Verify(opts)
1872-
if err.Error() != expectedErr.Error() {
1878+
if err == nil || err.Error() != expectedErr {
18731879
t.Fatalf("unexpected error: want %q, got %q", expectedErr, err)
18741880
}
18751881
})
@@ -1884,9 +1890,9 @@ func TestIssue51759(t *testing.T) {
18841890
Intermediates: NewCertPool(),
18851891
}
18861892
opts.Intermediates.AddCert(badCert)
1887-
expectedErr := errors.New("SecCertificateCreateWithData: invalid certificate")
1893+
expectedErr := "SecCertificateCreateWithData: invalid certificate"
18881894
_, err = goodCert.Verify(opts)
1889-
if err.Error() != expectedErr.Error() {
1895+
if err == nil || err.Error() != expectedErr {
18901896
t.Fatalf("unexpected error: want %q, got %q", expectedErr, err)
18911897
}
18921898
})

0 commit comments

Comments
 (0)