diff --git a/certs/test/cert-ext-ndir.cfg b/certs/test/cert-ext-ndir.cfg new file mode 100644 index 000000000..0757874d8 --- /dev/null +++ b/certs/test/cert-ext-ndir.cfg @@ -0,0 +1,23 @@ +[ req ] +distinguished_name = req_distinguished_name +prompt = no +x509_extensions = constraints + +[ req_distinguished_name ] +C = US +ST = Montana +L = Bozeman +O = Sawtooth +OU = Consulting +CN = www.wolfssl.com +emailAddress = info@wolfsssl.com + +[constraints] +subjectKeyIdentifier=hash +authorityKeyIdentifier=keyid:always,issuer:always +basicConstraints=CA:TRUE +nameConstraints=critical,permitted;dirName:dir_name + +[dir_name] +countryName = US + diff --git a/certs/test/cert-ext-ndir.der b/certs/test/cert-ext-ndir.der new file mode 100644 index 000000000..63f566bfc Binary files /dev/null and b/certs/test/cert-ext-ndir.der differ diff --git a/certs/test/gen-ext-certs.sh b/certs/test/gen-ext-certs.sh index 10b887133..65ce2124c 100755 --- a/certs/test/gen-ext-certs.sh +++ b/certs/test/gen-ext-certs.sh @@ -2,8 +2,9 @@ TMP="/tmp/`basename $0`" +KEY=certs/server-key.der gen_cert() { - openssl req -x509 -keyform DER -key certs/server-key.der \ + openssl req -x509 -keyform DER -key $KEY \ -days 1000 -new -outform DER -out $OUT -config $CONFIG \ >$TMP 2>&1 @@ -96,3 +97,34 @@ nsComment = "Testing Netscape Certificate Type" EOF gen_cert +KEY=certs/ca-key.der +OUT=certs/test/cert-ext-ndir.der +KEYFILE=certs/ca-key.der +CONFIG=certs/test/cert-ext-ndir.cfg +tee >$CONFIG <heap, @@ -12717,7 +12722,11 @@ int FlattenAltNames(byte* output, word32 outputSz, const DNS_entry* names) curName = names; do { - output[idx++] = ASN_CONTEXT_SPECIFIC | curName->type; + output[idx] = ASN_CONTEXT_SPECIFIC | curName->type; + if (curName->type == ASN_DIR_TYPE) { + output[idx] |= ASN_CONSTRUCTED; + } + idx++; idx += SetLength(curName->len, output + idx); XMEMCPY(output + idx, curName->name, curName->len); idx += curName->len;