Skip to content

Commit 27280d8

Browse files
tpaschalisFiloSottile
authored andcommitted
crypto/x509: return errors instead of panicking
Eliminate a panic in x509.CreateCertificate when passing templates with unknown ExtKeyUsage; return an error instead. Fixes #41169 Change-Id: Ia229d3b0d4a1bdeef05928439d97dab228687b3c Reviewed-on: https://go-review.googlesource.com/c/go/+/252557 Reviewed-by: Roland Shoemaker <[email protected]> Reviewed-by: Filippo Valsorda <[email protected]> Run-TryBot: Roland Shoemaker <[email protected]> TryBot-Result: Go Bot <[email protected]>
1 parent 54a112d commit 27280d8

File tree

2 files changed

+21
-1
lines changed

2 files changed

+21
-1
lines changed

src/crypto/x509/x509.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1689,7 +1689,8 @@ func buildExtensions(template *Certificate, subjectIsEmpty bool, authorityKeyId
16891689
if oid, ok := oidFromExtKeyUsage(u); ok {
16901690
oids = append(oids, oid)
16911691
} else {
1692-
panic("internal error")
1692+
err = errors.New("x509: unknown extended key usage")
1693+
return
16931694
}
16941695
}
16951696

src/crypto/x509/x509_test.go

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2754,3 +2754,22 @@ func TestRSAPSAParameters(t *testing.T) {
27542754
}
27552755
}
27562756
}
2757+
2758+
func TestUnknownExtKey(t *testing.T) {
2759+
const errorContains = "unknown extended key usage"
2760+
2761+
template := &Certificate{
2762+
SerialNumber: big.NewInt(10),
2763+
DNSNames: []string{"foo"},
2764+
ExtKeyUsage: []ExtKeyUsage{ExtKeyUsage(-1)},
2765+
}
2766+
signer, err := rsa.GenerateKey(rand.Reader, 1024)
2767+
if err != nil {
2768+
t.Errorf("failed to generate key for TestUnknownExtKey")
2769+
}
2770+
2771+
_, err = CreateCertificate(rand.Reader, template, template, signer.Public(), signer)
2772+
if !strings.Contains(err.Error(), errorContains) {
2773+
t.Errorf("expected error containing %q, got %s", errorContains, err)
2774+
}
2775+
}

0 commit comments

Comments
 (0)