Skip to content

Commit ffd31ac

Browse files
authored
Merge pull request #2569 from smallstep/mariano/check-eku-size
Validate tcg-kp-AIKCertificate EKU
2 parents bb94179 + 3914b05 commit ffd31ac

2 files changed

Lines changed: 11 additions & 1 deletion

File tree

acme/challenge.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1250,7 +1250,7 @@ func validateAKCertificateExtendedKeyUsage(c *x509.Certificate) error {
12501250
)
12511251
for _, ext := range c.Extensions {
12521252
if ext.Id.Equal(oidExtensionExtendedKeyUsage) {
1253-
if _, err := asn1.Unmarshal(ext.Value, &ekus); err != nil || !ekus[0].Equal(oidTCGKpAIKCertificate) {
1253+
if _, err := asn1.Unmarshal(ext.Value, &ekus); err != nil || len(ekus) == 0 || !ekus[0].Equal(oidTCGKpAIKCertificate) {
12541254
return errors.New("AK certificate is missing Extended Key Usage value tcg-kp-AIKCertificate (2.23.133.8.3)")
12551255
}
12561256
valid = true

acme/challenge_test.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5115,13 +5115,23 @@ func Test_validateAKCertificateExtendedKeyUsage(t *testing.T) {
51155115
require.NoError(t, err)
51165116
wrongEKU, err := ca.Sign(template)
51175117
require.NoError(t, err)
5118+
emptyEKU, err := ca.Sign(&x509.Certificate{
5119+
PublicKey: signer.Public(),
5120+
ExtraExtensions: []pkix.Extension{{
5121+
Id: oidExtensionExtendedKeyUsage,
5122+
Value: []byte{0x30, 0x00}, // DER: empty SEQUENCE
5123+
}},
5124+
})
5125+
require.NoError(t, err)
5126+
51185127
tests := []struct {
51195128
name string
51205129
c *x509.Certificate
51215130
expErr error
51225131
}{
51235132
{"ok", ok, nil},
51245133
{"fail/wrong-eku", wrongEKU, errors.New("AK certificate is missing Extended Key Usage value tcg-kp-AIKCertificate (2.23.133.8.3)")},
5134+
{"fail/empty-eku", emptyEKU, errors.New("AK certificate is missing Extended Key Usage value tcg-kp-AIKCertificate (2.23.133.8.3)")},
51255135
{"fail/missing-eku", missingEKU, errors.New("AK certificate is missing Extended Key Usage extension")},
51265136
}
51275137
for _, tt := range tests {

0 commit comments

Comments
 (0)