diff --git a/certs/test/cert-ext-mnc.der b/certs/test/cert-ext-mnc.der new file mode 100644 index 000000000..b7df09abb Binary files /dev/null and b/certs/test/cert-ext-mnc.der differ diff --git a/certs/test/gen-ext-certs.sh b/certs/test/gen-ext-certs.sh index 045942d71..f63e86e84 100755 --- a/certs/test/gen-ext-certs.sh +++ b/certs/test/gen-ext-certs.sh @@ -46,6 +46,35 @@ nsComment = "Testing name constraints" EOF gen_cert + +OUT=certs/test/cert-ext-mnc.der +KEYFILE=certs/test/cert-ext-mnc-key.der +CONFIG=certs/test/cert-ext-mnc.cfg +tee >$CONFIG <name, name->len, @@ -13522,6 +13526,10 @@ static int ConfirmNameConstraints(Signer* signer, DecodedCert* cert) if (name != NULL) needEmail = 1; + /* check if already found a matching permitted subtree */ + if (matchEmail == 1) + break; + while (name != NULL) { matchEmail = MatchBaseName(ASN_DNS_TYPE, name->name, name->len, @@ -13540,6 +13548,11 @@ static int ConfirmNameConstraints(Signer* signer, DecodedCert* cert) { /* allow permitted dirName smaller than actual subject */ needDir = 1; + + /* check if already found a matching permitted subtree */ + if (matchDir == 1) + break; + if (cert->subjectRaw != NULL && cert->subjectRawLen >= base->nameSz && XMEMCMP(cert->subjectRaw, base->name,