summaryrefslogtreecommitdiffstats
path: root/net
diff options
context:
space:
mode:
authormattm <mattm@chromium.org>2016-02-10 17:31:16 -0800
committerCommit bot <commit-bot@chromium.org>2016-02-11 01:33:10 +0000
commit0cb852e886746830b48c09b426705b23c6845d4c (patch)
tree9a5394bb4a765b89d7836b49a5f087854c0ff39a /net
parentdcaccb9c51299dfdf2cd925fd1a3ea6c480862a7 (diff)
downloadchromium_src-0cb852e886746830b48c09b426705b23c6845d4c.zip
chromium_src-0cb852e886746830b48c09b426705b23c6845d4c.tar.gz
chromium_src-0cb852e886746830b48c09b426705b23c6845d4c.tar.bz2
Fix API mismatch between NameConstraints::IsPermittedCert's subjectAltName param and ParseExtension.
BUG=none Review URL: https://codereview.chromium.org/1685023002 Cr-Commit-Position: refs/heads/master@{#374826}
Diffstat (limited to 'net')
-rw-r--r--net/cert/internal/name_constraints.cc18
-rw-r--r--net/cert/internal/name_constraints.h10
-rw-r--r--net/cert/internal/name_constraints_unittest.cc107
-rwxr-xr-xnet/data/name_constraints_unittest/generate_name_constraints.py2
-rw-r--r--net/data/name_constraints_unittest/san-edipartyname.pem6
-rw-r--r--net/data/name_constraints_unittest/san-excluded-directoryname.pem34
-rw-r--r--net/data/name_constraints_unittest/san-excluded-dnsname.pem21
-rw-r--r--net/data/name_constraints_unittest/san-excluded-ipaddress.pem19
-rw-r--r--net/data/name_constraints_unittest/san-invalid-empty.pem4
-rw-r--r--net/data/name_constraints_unittest/san-invalid-ipaddress.pem5
-rw-r--r--net/data/name_constraints_unittest/san-othername.pem7
-rw-r--r--net/data/name_constraints_unittest/san-permitted.pem18
-rw-r--r--net/data/name_constraints_unittest/san-registeredid.pem5
-rw-r--r--net/data/name_constraints_unittest/san-rfc822name.pem5
-rw-r--r--net/data/name_constraints_unittest/san-uri.pem5
-rw-r--r--net/data/name_constraints_unittest/san-x400address.pem8
16 files changed, 175 insertions, 99 deletions
diff --git a/net/cert/internal/name_constraints.cc b/net/cert/internal/name_constraints.cc
index 2873acab..2ad35dd 100644
--- a/net/cert/internal/name_constraints.cc
+++ b/net/cert/internal/name_constraints.cc
@@ -396,7 +396,8 @@ bool NameConstraints::Parse(const der::Input& extension_value,
bool NameConstraints::IsPermittedCert(
const der::Input& subject_rdn_sequence,
- const der::Input& subject_alt_name_extnvalue_tlv) const {
+ bool has_subject_alt_name,
+ const der::Input& subject_alt_name_tlv) const {
// Subject Alternative Name handling:
//
// RFC 5280 section 4.2.1.6:
@@ -407,12 +408,7 @@ bool NameConstraints::IsPermittedCert(
// GeneralNames ::= SEQUENCE SIZE (1..MAX) OF GeneralName
GeneralNames san_names;
- if (subject_alt_name_extnvalue_tlv.Length()) {
- der::Parser extnvalue_parser(subject_alt_name_extnvalue_tlv);
- der::Input subject_alt_name_tlv;
- if (!extnvalue_parser.ReadTag(der::kOctetString, &subject_alt_name_tlv))
- return false;
-
+ if (has_subject_alt_name) {
der::Parser subject_alt_name_parser(subject_alt_name_tlv);
der::Parser san_sequence_parser;
if (!subject_alt_name_parser.ReadSequence(&san_sequence_parser))
@@ -466,6 +462,8 @@ bool NameConstraints::IsPermittedCert(
if (!IsPermittedIP(ip_address))
return false;
}
+ } else {
+ DCHECK_EQ(0U, subject_alt_name_tlv.Length());
}
// Subject handling:
@@ -477,7 +475,7 @@ bool NameConstraints::IsPermittedCert(
// form, but the certificate does not include a subject alternative name, the
// rfc822Name constraint MUST be applied to the attribute of type emailAddress
// in the subject distinguished name.
- if (!subject_alt_name_extnvalue_tlv.Length() &&
+ if (!has_subject_alt_name &&
(ConstrainedNameTypes() & GENERAL_NAME_RFC822_NAME)) {
bool contained_email_address = false;
if (!NameContainsEmailAddress(subject_rdn_sequence,
@@ -496,10 +494,8 @@ bool NameConstraints::IsPermittedCert(
// This code assumes that criticality condition is checked by the caller, and
// therefore only needs to avoid the IsPermittedDirectoryName check against an
// empty subject in such a case.
- if (subject_alt_name_extnvalue_tlv.Length() &&
- subject_rdn_sequence.Length() == 0) {
+ if (has_subject_alt_name && subject_rdn_sequence.Length() == 0)
return true;
- }
return IsPermittedDirectoryName(subject_rdn_sequence);
}
diff --git a/net/cert/internal/name_constraints.h b/net/cert/internal/name_constraints.h
index 46cb0da..ed05de0 100644
--- a/net/cert/internal/name_constraints.h
+++ b/net/cert/internal/name_constraints.h
@@ -86,13 +86,15 @@ class NET_EXPORT NameConstraints {
// Tests if a certificate is allowed by the name constraints.
// |subject_rdn_sequence| should be the DER-encoded value of the subject's
// RDNSequence (not including Sequence tag), and may be an empty ASN.1
- // sequence. |subject_alt_name_extnvalue_tlv| should be the extnValue of the
- // subjectAltName extension (including the OCTET STRING tag & length), or
- // empty if the cert did not have a subjectAltName extension.
+ // sequence. |subject_alt_name_tlv| should be the extnValue of the
+ // subjectAltName extension (not including the OCTET STRING tag & length). If
+ // the cert did not have a subjectAltName extension, |has_subject_alt_name|
+ // should be false and |subject_alt_name_tlv| should be empty.
// Note that this method does not check hostname or IP address in commonName,
// which is deprecated (crbug.com/308330).
bool IsPermittedCert(const der::Input& subject_rdn_sequence,
- const der::Input& subject_alt_name_extnvalue_tlv) const;
+ bool has_subject_alt_name,
+ const der::Input& subject_alt_name_tlv) const;
// Returns true if the ASCII hostname |name| is permitted.
// |name| may be a wildcard hostname (starts with "*."). Eg, "*.bar.com"
diff --git a/net/cert/internal/name_constraints_unittest.cc b/net/cert/internal/name_constraints_unittest.cc
index cb8facd..2b2b356 100644
--- a/net/cert/internal/name_constraints_unittest.cc
+++ b/net/cert/internal/name_constraints_unittest.cc
@@ -123,19 +123,19 @@ TEST_P(ParseNameConstraints, DNSNames) {
std::string san;
ASSERT_TRUE(LoadTestSubjectAltName("san-permitted.pem", &san));
EXPECT_TRUE(
- name_constraints->IsPermittedCert(der::Input(), der::Input(&san)));
+ name_constraints->IsPermittedCert(der::Input(), true, der::Input(&san)));
ASSERT_TRUE(LoadTestSubjectAltName("san-excluded-dnsname.pem", &san));
EXPECT_FALSE(
- name_constraints->IsPermittedCert(der::Input(), der::Input(&san)));
+ name_constraints->IsPermittedCert(der::Input(), true, der::Input(&san)));
ASSERT_TRUE(LoadTestSubjectAltName("san-excluded-directoryname.pem", &san));
EXPECT_TRUE(
- name_constraints->IsPermittedCert(der::Input(), der::Input(&san)));
+ name_constraints->IsPermittedCert(der::Input(), true, der::Input(&san)));
ASSERT_TRUE(LoadTestSubjectAltName("san-excluded-ipaddress.pem", &san));
EXPECT_TRUE(
- name_constraints->IsPermittedCert(der::Input(), der::Input(&san)));
+ name_constraints->IsPermittedCert(der::Input(), true, der::Input(&san)));
}
TEST_P(ParseNameConstraints,
@@ -307,28 +307,28 @@ TEST_P(ParseNameConstraints, DirectoryNames) {
// Within the permitted C=US subtree.
EXPECT_TRUE(name_constraints->IsPermittedCert(
- SequenceValueFromString(&name_us), der::Input()));
+ SequenceValueFromString(&name_us), false, der::Input()));
// Within the permitted C=US subtree, however the excluded C=US,ST=California
// subtree takes priority.
EXPECT_FALSE(name_constraints->IsPermittedCert(
- SequenceValueFromString(&name_us_ca), der::Input()));
+ SequenceValueFromString(&name_us_ca), false, der::Input()));
std::string san;
ASSERT_TRUE(LoadTestSubjectAltName("san-permitted.pem", &san));
EXPECT_TRUE(
- name_constraints->IsPermittedCert(der::Input(), der::Input(&san)));
+ name_constraints->IsPermittedCert(der::Input(), true, der::Input(&san)));
ASSERT_TRUE(LoadTestSubjectAltName("san-excluded-dnsname.pem", &san));
EXPECT_TRUE(
- name_constraints->IsPermittedCert(der::Input(), der::Input(&san)));
+ name_constraints->IsPermittedCert(der::Input(), true, der::Input(&san)));
ASSERT_TRUE(LoadTestSubjectAltName("san-excluded-directoryname.pem", &san));
EXPECT_FALSE(
- name_constraints->IsPermittedCert(der::Input(), der::Input(&san)));
+ name_constraints->IsPermittedCert(der::Input(), true, der::Input(&san)));
ASSERT_TRUE(LoadTestSubjectAltName("san-excluded-ipaddress.pem", &san));
EXPECT_TRUE(
- name_constraints->IsPermittedCert(der::Input(), der::Input(&san)));
+ name_constraints->IsPermittedCert(der::Input(), true, der::Input(&san)));
}
TEST_P(ParseNameConstraints, DirectoryNamesExcludeOnly) {
@@ -544,19 +544,19 @@ TEST_P(ParseNameConstraints, IPAdresses) {
std::string san;
ASSERT_TRUE(LoadTestSubjectAltName("san-permitted.pem", &san));
EXPECT_TRUE(
- name_constraints->IsPermittedCert(der::Input(), der::Input(&san)));
+ name_constraints->IsPermittedCert(der::Input(), true, der::Input(&san)));
ASSERT_TRUE(LoadTestSubjectAltName("san-excluded-dnsname.pem", &san));
EXPECT_TRUE(
- name_constraints->IsPermittedCert(der::Input(), der::Input(&san)));
+ name_constraints->IsPermittedCert(der::Input(), true, der::Input(&san)));
ASSERT_TRUE(LoadTestSubjectAltName("san-excluded-directoryname.pem", &san));
EXPECT_TRUE(
- name_constraints->IsPermittedCert(der::Input(), der::Input(&san)));
+ name_constraints->IsPermittedCert(der::Input(), true, der::Input(&san)));
ASSERT_TRUE(LoadTestSubjectAltName("san-excluded-ipaddress.pem", &san));
EXPECT_FALSE(
- name_constraints->IsPermittedCert(der::Input(), der::Input(&san)));
+ name_constraints->IsPermittedCert(der::Input(), true, der::Input(&san)));
}
TEST_P(ParseNameConstraints, IPAdressesExcludeOnly) {
@@ -802,8 +802,8 @@ TEST_P(ParseNameConstraints, OtherNamesInPermitted) {
std::string san;
ASSERT_TRUE(LoadTestSubjectAltName("san-othername.pem", &san));
- EXPECT_EQ(!is_critical(),
- name_constraints->IsPermittedCert(der::Input(), der::Input(&san)));
+ EXPECT_EQ(!is_critical(), name_constraints->IsPermittedCert(
+ der::Input(), true, der::Input(&san)));
}
TEST_P(ParseNameConstraints, OtherNamesInExcluded) {
@@ -823,8 +823,8 @@ TEST_P(ParseNameConstraints, OtherNamesInExcluded) {
std::string san;
ASSERT_TRUE(LoadTestSubjectAltName("san-othername.pem", &san));
- EXPECT_EQ(!is_critical(),
- name_constraints->IsPermittedCert(der::Input(), der::Input(&san)));
+ EXPECT_EQ(!is_critical(), name_constraints->IsPermittedCert(
+ der::Input(), true, der::Input(&san)));
}
TEST_P(ParseNameConstraints, Rfc822NamesInPermitted) {
@@ -844,8 +844,8 @@ TEST_P(ParseNameConstraints, Rfc822NamesInPermitted) {
std::string san;
ASSERT_TRUE(LoadTestSubjectAltName("san-rfc822name.pem", &san));
- EXPECT_EQ(!is_critical(),
- name_constraints->IsPermittedCert(der::Input(), der::Input(&san)));
+ EXPECT_EQ(!is_critical(), name_constraints->IsPermittedCert(
+ der::Input(), true, der::Input(&san)));
}
TEST_P(ParseNameConstraints, Rfc822NamesInExcluded) {
@@ -865,8 +865,8 @@ TEST_P(ParseNameConstraints, Rfc822NamesInExcluded) {
std::string san;
ASSERT_TRUE(LoadTestSubjectAltName("san-rfc822name.pem", &san));
- EXPECT_EQ(!is_critical(),
- name_constraints->IsPermittedCert(der::Input(), der::Input(&san)));
+ EXPECT_EQ(!is_critical(), name_constraints->IsPermittedCert(
+ der::Input(), true, der::Input(&san)));
}
TEST_P(ParseNameConstraints, X400AddresssInPermitted) {
@@ -886,8 +886,8 @@ TEST_P(ParseNameConstraints, X400AddresssInPermitted) {
std::string san;
ASSERT_TRUE(LoadTestSubjectAltName("san-x400address.pem", &san));
- EXPECT_EQ(!is_critical(),
- name_constraints->IsPermittedCert(der::Input(), der::Input(&san)));
+ EXPECT_EQ(!is_critical(), name_constraints->IsPermittedCert(
+ der::Input(), true, der::Input(&san)));
}
TEST_P(ParseNameConstraints, X400AddresssInExcluded) {
@@ -907,8 +907,8 @@ TEST_P(ParseNameConstraints, X400AddresssInExcluded) {
std::string san;
ASSERT_TRUE(LoadTestSubjectAltName("san-x400address.pem", &san));
- EXPECT_EQ(!is_critical(),
- name_constraints->IsPermittedCert(der::Input(), der::Input(&san)));
+ EXPECT_EQ(!is_critical(), name_constraints->IsPermittedCert(
+ der::Input(), true, der::Input(&san)));
}
TEST_P(ParseNameConstraints, EdiPartyNamesInPermitted) {
@@ -928,8 +928,8 @@ TEST_P(ParseNameConstraints, EdiPartyNamesInPermitted) {
std::string san;
ASSERT_TRUE(LoadTestSubjectAltName("san-edipartyname.pem", &san));
- EXPECT_EQ(!is_critical(),
- name_constraints->IsPermittedCert(der::Input(), der::Input(&san)));
+ EXPECT_EQ(!is_critical(), name_constraints->IsPermittedCert(
+ der::Input(), true, der::Input(&san)));
}
TEST_P(ParseNameConstraints, EdiPartyNamesInExcluded) {
@@ -949,8 +949,8 @@ TEST_P(ParseNameConstraints, EdiPartyNamesInExcluded) {
std::string san;
ASSERT_TRUE(LoadTestSubjectAltName("san-edipartyname.pem", &san));
- EXPECT_EQ(!is_critical(),
- name_constraints->IsPermittedCert(der::Input(), der::Input(&san)));
+ EXPECT_EQ(!is_critical(), name_constraints->IsPermittedCert(
+ der::Input(), true, der::Input(&san)));
}
TEST_P(ParseNameConstraints, URIsInPermitted) {
@@ -969,8 +969,8 @@ TEST_P(ParseNameConstraints, URIsInPermitted) {
std::string san;
ASSERT_TRUE(LoadTestSubjectAltName("san-uri.pem", &san));
- EXPECT_EQ(!is_critical(),
- name_constraints->IsPermittedCert(der::Input(), der::Input(&san)));
+ EXPECT_EQ(!is_critical(), name_constraints->IsPermittedCert(
+ der::Input(), true, der::Input(&san)));
}
TEST_P(ParseNameConstraints, URIsInExcluded) {
@@ -989,8 +989,8 @@ TEST_P(ParseNameConstraints, URIsInExcluded) {
std::string san;
ASSERT_TRUE(LoadTestSubjectAltName("san-uri.pem", &san));
- EXPECT_EQ(!is_critical(),
- name_constraints->IsPermittedCert(der::Input(), der::Input(&san)));
+ EXPECT_EQ(!is_critical(), name_constraints->IsPermittedCert(
+ der::Input(), true, der::Input(&san)));
}
TEST_P(ParseNameConstraints, RegisteredIDsInPermitted) {
@@ -1010,8 +1010,8 @@ TEST_P(ParseNameConstraints, RegisteredIDsInPermitted) {
std::string san;
ASSERT_TRUE(LoadTestSubjectAltName("san-registeredid.pem", &san));
- EXPECT_EQ(!is_critical(),
- name_constraints->IsPermittedCert(der::Input(), der::Input(&san)));
+ EXPECT_EQ(!is_critical(), name_constraints->IsPermittedCert(
+ der::Input(), true, der::Input(&san)));
}
TEST_P(ParseNameConstraints, RegisteredIDsInExcluded) {
@@ -1031,8 +1031,8 @@ TEST_P(ParseNameConstraints, RegisteredIDsInExcluded) {
std::string san;
ASSERT_TRUE(LoadTestSubjectAltName("san-registeredid.pem", &san));
- EXPECT_EQ(!is_critical(),
- name_constraints->IsPermittedCert(der::Input(), der::Input(&san)));
+ EXPECT_EQ(!is_critical(), name_constraints->IsPermittedCert(
+ der::Input(), true, der::Input(&san)));
}
TEST_P(ParseNameConstraints,
@@ -1123,7 +1123,7 @@ TEST_P(ParseNameConstraints, IsPermittedCertSubjectEmailAddressIsOk) {
// Name constraints don't contain rfc822Name, so emailAddress in subject is
// allowed regardless.
EXPECT_TRUE(name_constraints->IsPermittedCert(
- SequenceValueFromString(&name_us_arizona_email), der::Input()));
+ SequenceValueFromString(&name_us_arizona_email), false, der::Input()));
}
TEST_P(ParseNameConstraints, IsPermittedCertSubjectEmailAddressIsNotOk) {
@@ -1140,9 +1140,9 @@ TEST_P(ParseNameConstraints, IsPermittedCertSubjectEmailAddressIsNotOk) {
// Name constraints contain rfc822Name, so emailAddress in subject is not
// allowed if the constraints were critical.
- EXPECT_EQ(!is_critical(),
- name_constraints->IsPermittedCert(
- SequenceValueFromString(&name_us_arizona_email), der::Input()));
+ EXPECT_EQ(!is_critical(), name_constraints->IsPermittedCert(
+ SequenceValueFromString(&name_us_arizona_email),
+ false, der::Input()));
}
// Hostname in commonName is not allowed (crbug.com/308330), so these are tests
@@ -1162,7 +1162,7 @@ TEST_P(ParseNameConstraints, IsPermittedCertSubjectDnsNames) {
// (The commonName hostname is not within permitted dNSName constraints, so
// this would not be permitted if hostnames in commonName were checked.)
EXPECT_TRUE(name_constraints->IsPermittedCert(
- SequenceValueFromString(&name_us_az_foocom), der::Input()));
+ SequenceValueFromString(&name_us_az_foocom), false, der::Input()));
std::string name_us_az_permitted;
ASSERT_TRUE(LoadTestName("name-us-arizona-permitted.example.com.pem",
@@ -1171,7 +1171,7 @@ TEST_P(ParseNameConstraints, IsPermittedCertSubjectDnsNames) {
// permitted dNSName constraints, so this should be permitted regardless if
// hostnames in commonName are checked or not.
EXPECT_TRUE(name_constraints->IsPermittedCert(
- SequenceValueFromString(&name_us_az_permitted), der::Input()));
+ SequenceValueFromString(&name_us_az_permitted), false, der::Input()));
std::string name_us_ca_permitted;
ASSERT_TRUE(LoadTestName("name-us-california-permitted.example.com.pem",
@@ -1180,7 +1180,7 @@ TEST_P(ParseNameConstraints, IsPermittedCertSubjectDnsNames) {
// this should not be allowed, regardless of checking the
// permitted.example.com in commonName.
EXPECT_FALSE(name_constraints->IsPermittedCert(
- SequenceValueFromString(&name_us_ca_permitted), der::Input()));
+ SequenceValueFromString(&name_us_ca_permitted), false, der::Input()));
}
// IP addresses in commonName are not allowed (crbug.com/308330), so these are
@@ -1200,7 +1200,7 @@ TEST_P(ParseNameConstraints, IsPermittedCertSubjectIpAddresses) {
// (The commonName IP address is not within permitted iPAddresses constraints,
// so this would not be permitted if IP addresses in commonName were checked.)
EXPECT_TRUE(name_constraints->IsPermittedCert(
- SequenceValueFromString(&name_us_az_1_1_1_1), der::Input()));
+ SequenceValueFromString(&name_us_az_1_1_1_1), false, der::Input()));
std::string name_us_az_192_168_1_1;
ASSERT_TRUE(
@@ -1209,7 +1209,7 @@ TEST_P(ParseNameConstraints, IsPermittedCertSubjectIpAddresses) {
// permitted iPAddress constraints, so this should be permitted regardless if
// IP addresses in commonName are checked or not.
EXPECT_TRUE(name_constraints->IsPermittedCert(
- SequenceValueFromString(&name_us_az_192_168_1_1), der::Input()));
+ SequenceValueFromString(&name_us_az_192_168_1_1), false, der::Input()));
std::string name_us_ca_192_168_1_1;
ASSERT_TRUE(LoadTestName("name-us-california-192.168.1.1.pem",
@@ -1218,7 +1218,7 @@ TEST_P(ParseNameConstraints, IsPermittedCertSubjectIpAddresses) {
// this should not be allowed, regardless of checking the
// IP address in commonName.
EXPECT_FALSE(name_constraints->IsPermittedCert(
- SequenceValueFromString(&name_us_ca_192_168_1_1), der::Input()));
+ SequenceValueFromString(&name_us_ca_192_168_1_1), false, der::Input()));
std::string name_us_az_ipv6;
ASSERT_TRUE(LoadTestName("name-us-arizona-ipv6.pem", &name_us_az_ipv6));
@@ -1226,7 +1226,7 @@ TEST_P(ParseNameConstraints, IsPermittedCertSubjectIpAddresses) {
// (The commonName is an ipv6 address which wasn't supported in the past, but
// since commonName checking is ignored entirely, this is permitted.)
EXPECT_TRUE(name_constraints->IsPermittedCert(
- SequenceValueFromString(&name_us_az_ipv6), der::Input()));
+ SequenceValueFromString(&name_us_az_ipv6), false, der::Input()));
}
TEST_P(ParseNameConstraints, IsPermittedCertFailsOnEmptySubjectAltName) {
@@ -1242,13 +1242,13 @@ TEST_P(ParseNameConstraints, IsPermittedCertFailsOnEmptySubjectAltName) {
// No constraints on directoryName type, so name_us_az should be allowed when
// subjectAltName is not present.
EXPECT_TRUE(name_constraints->IsPermittedCert(
- SequenceValueFromString(&name_us_az), der::Input()));
+ SequenceValueFromString(&name_us_az), false, der::Input()));
std::string san;
ASSERT_TRUE(LoadTestSubjectAltName("san-invalid-empty.pem", &san));
// Should fail if subjectAltName is present but empty.
EXPECT_FALSE(name_constraints->IsPermittedCert(
- SequenceValueFromString(&name_us_az), der::Input(&san)));
+ SequenceValueFromString(&name_us_az), true, der::Input(&san)));
}
TEST_P(ParseNameConstraints, IsPermittedCertFailsOnInvalidIpInSubjectAltName) {
@@ -1264,13 +1264,14 @@ TEST_P(ParseNameConstraints, IsPermittedCertFailsOnInvalidIpInSubjectAltName) {
// Without the invalid subjectAltName, it passes.
EXPECT_TRUE(name_constraints->IsPermittedCert(
- SequenceValueFromString(&name_us_az_192_168_1_1), der::Input()));
+ SequenceValueFromString(&name_us_az_192_168_1_1), false, der::Input()));
std::string san;
ASSERT_TRUE(LoadTestSubjectAltName("san-invalid-ipaddress.pem", &san));
// Should fail if subjectAltName contains an invalid ip address.
EXPECT_FALSE(name_constraints->IsPermittedCert(
- SequenceValueFromString(&name_us_az_192_168_1_1), der::Input(&san)));
+ SequenceValueFromString(&name_us_az_192_168_1_1), true,
+ der::Input(&san)));
}
} // namespace net
diff --git a/net/data/name_constraints_unittest/generate_name_constraints.py b/net/data/name_constraints_unittest/generate_name_constraints.py
index 37ed005..cdf5494 100755
--- a/net/data/name_constraints_unittest/generate_name_constraints.py
+++ b/net/data/name_constraints_unittest/generate_name_constraints.py
@@ -47,7 +47,7 @@ class SubjectAltNameGenerator:
self.names.append(general_name)
def __str__(self):
- s = "asn1 = OCTWRAP,SEQUENCE:subjectAltNameSequence\n"
+ s = "asn1 = SEQUENCE:subjectAltNameSequence\n"
s += "[subjectAltNameSequence]\n"
s_suffix = ""
for n, name in enumerate(self.names):
diff --git a/net/data/name_constraints_unittest/san-edipartyname.pem b/net/data/name_constraints_unittest/san-edipartyname.pem
index bf263e5..699aeb5 100644
--- a/net/data/name_constraints_unittest/san-edipartyname.pem
+++ b/net/data/name_constraints_unittest/san-edipartyname.pem
@@ -1,4 +1,6 @@
- 0:d=0 hl=2 l= 9 prim: OCTET STRING [HEX DUMP]:3007A5058103666F6F
+ 0:d=0 hl=2 l= 7 cons: SEQUENCE
+ 2:d=1 hl=2 l= 5 cons: cont [ 5 ]
+ 4:d=2 hl=2 l= 3 prim: cont [ 1 ]
-----BEGIN SUBJECT ALTERNATIVE NAME-----
-BAkwB6UFgQNmb28=
+MAelBYEDZm9v
-----END SUBJECT ALTERNATIVE NAME-----
diff --git a/net/data/name_constraints_unittest/san-excluded-directoryname.pem b/net/data/name_constraints_unittest/san-excluded-directoryname.pem
index 65e6ab9..cc586ff 100644
--- a/net/data/name_constraints_unittest/san-excluded-directoryname.pem
+++ b/net/data/name_constraints_unittest/san-excluded-directoryname.pem
@@ -1,6 +1,32 @@
- 0:d=0 hl=3 l= 128 prim: OCTET STRING [HEX DUMP]:307E82157065726D69747465642E6578616D706C652E636F6D8704C0A80102A421301F310B30090603550406130255533110300E06035504080C074172697A6F6E61A43C303A310B30090603550406130255533113301106035504080C0A43616C69666F726E69613116301406035504070C0D4D6F756E7461696E2056696577
+ 0:d=0 hl=2 l= 126 cons: SEQUENCE
+ 2:d=1 hl=2 l= 21 prim: cont [ 2 ]
+ 25:d=1 hl=2 l= 4 prim: cont [ 7 ]
+ 31:d=1 hl=2 l= 33 cons: cont [ 4 ]
+ 33:d=2 hl=2 l= 31 cons: SEQUENCE
+ 35:d=3 hl=2 l= 11 cons: SET
+ 37:d=4 hl=2 l= 9 cons: SEQUENCE
+ 39:d=5 hl=2 l= 3 prim: OBJECT :countryName
+ 44:d=5 hl=2 l= 2 prim: PRINTABLESTRING :US
+ 48:d=3 hl=2 l= 16 cons: SET
+ 50:d=4 hl=2 l= 14 cons: SEQUENCE
+ 52:d=5 hl=2 l= 3 prim: OBJECT :stateOrProvinceName
+ 57:d=5 hl=2 l= 7 prim: UTF8STRING :Arizona
+ 66:d=1 hl=2 l= 60 cons: cont [ 4 ]
+ 68:d=2 hl=2 l= 58 cons: SEQUENCE
+ 70:d=3 hl=2 l= 11 cons: SET
+ 72:d=4 hl=2 l= 9 cons: SEQUENCE
+ 74:d=5 hl=2 l= 3 prim: OBJECT :countryName
+ 79:d=5 hl=2 l= 2 prim: PRINTABLESTRING :US
+ 83:d=3 hl=2 l= 19 cons: SET
+ 85:d=4 hl=2 l= 17 cons: SEQUENCE
+ 87:d=5 hl=2 l= 3 prim: OBJECT :stateOrProvinceName
+ 92:d=5 hl=2 l= 10 prim: UTF8STRING :California
+ 104:d=3 hl=2 l= 22 cons: SET
+ 106:d=4 hl=2 l= 20 cons: SEQUENCE
+ 108:d=5 hl=2 l= 3 prim: OBJECT :localityName
+ 113:d=5 hl=2 l= 13 prim: UTF8STRING :Mountain View
-----BEGIN SUBJECT ALTERNATIVE NAME-----
-BIGAMH6CFXBlcm1pdHRlZC5leGFtcGxlLmNvbYcEwKgBAqQhMB8xCzAJBgNVBAYTAlVTMRAwDgYD
-VQQIDAdBcml6b25hpDwwOjELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNV
-BAcMDU1vdW50YWluIFZpZXc=
+MH6CFXBlcm1pdHRlZC5leGFtcGxlLmNvbYcEwKgBAqQhMB8xCzAJBgNVBAYTAlVTMRAwDgYDVQQI
+DAdBcml6b25hpDwwOjELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcM
+DU1vdW50YWluIFZpZXc=
-----END SUBJECT ALTERNATIVE NAME-----
diff --git a/net/data/name_constraints_unittest/san-excluded-dnsname.pem b/net/data/name_constraints_unittest/san-excluded-dnsname.pem
index 80ed2b9..4476b9c 100644
--- a/net/data/name_constraints_unittest/san-excluded-dnsname.pem
+++ b/net/data/name_constraints_unittest/san-excluded-dnsname.pem
@@ -1,6 +1,19 @@
- 0:d=0 hl=2 l= 120 prim: OCTET STRING [HEX DUMP]:307682157065726D69747465642E6578616D706C652E636F6D8704C0A80102A421301F310B30090603550406130255533110300E06035504080C074172697A6F6E618234666F6F2E7374696C6C6E6F747065726D69747465642E6578636C756465642E7065726D69747465642E6578616D706C652E636F6D
+ 0:d=0 hl=2 l= 118 cons: SEQUENCE
+ 2:d=1 hl=2 l= 21 prim: cont [ 2 ]
+ 25:d=1 hl=2 l= 4 prim: cont [ 7 ]
+ 31:d=1 hl=2 l= 33 cons: cont [ 4 ]
+ 33:d=2 hl=2 l= 31 cons: SEQUENCE
+ 35:d=3 hl=2 l= 11 cons: SET
+ 37:d=4 hl=2 l= 9 cons: SEQUENCE
+ 39:d=5 hl=2 l= 3 prim: OBJECT :countryName
+ 44:d=5 hl=2 l= 2 prim: PRINTABLESTRING :US
+ 48:d=3 hl=2 l= 16 cons: SET
+ 50:d=4 hl=2 l= 14 cons: SEQUENCE
+ 52:d=5 hl=2 l= 3 prim: OBJECT :stateOrProvinceName
+ 57:d=5 hl=2 l= 7 prim: UTF8STRING :Arizona
+ 66:d=1 hl=2 l= 52 prim: cont [ 2 ]
-----BEGIN SUBJECT ALTERNATIVE NAME-----
-BHgwdoIVcGVybWl0dGVkLmV4YW1wbGUuY29thwTAqAECpCEwHzELMAkGA1UEBhMCVVMxEDAOBgNV
-BAgMB0FyaXpvbmGCNGZvby5zdGlsbG5vdHBlcm1pdHRlZC5leGNsdWRlZC5wZXJtaXR0ZWQuZXhh
-bXBsZS5jb20=
+MHaCFXBlcm1pdHRlZC5leGFtcGxlLmNvbYcEwKgBAqQhMB8xCzAJBgNVBAYTAlVTMRAwDgYDVQQI
+DAdBcml6b25hgjRmb28uc3RpbGxub3RwZXJtaXR0ZWQuZXhjbHVkZWQucGVybWl0dGVkLmV4YW1w
+bGUuY29t
-----END SUBJECT ALTERNATIVE NAME-----
diff --git a/net/data/name_constraints_unittest/san-excluded-ipaddress.pem b/net/data/name_constraints_unittest/san-excluded-ipaddress.pem
index 80d1f3f..3616e7c 100644
--- a/net/data/name_constraints_unittest/san-excluded-ipaddress.pem
+++ b/net/data/name_constraints_unittest/san-excluded-ipaddress.pem
@@ -1,5 +1,18 @@
- 0:d=0 hl=2 l= 72 prim: OCTET STRING [HEX DUMP]:304682157065726D69747465642E6578616D706C652E636F6D8704C0A80102A421301F310B30090603550406130255533110300E06035504080C074172697A6F6E618704C0A80505
+ 0:d=0 hl=2 l= 70 cons: SEQUENCE
+ 2:d=1 hl=2 l= 21 prim: cont [ 2 ]
+ 25:d=1 hl=2 l= 4 prim: cont [ 7 ]
+ 31:d=1 hl=2 l= 33 cons: cont [ 4 ]
+ 33:d=2 hl=2 l= 31 cons: SEQUENCE
+ 35:d=3 hl=2 l= 11 cons: SET
+ 37:d=4 hl=2 l= 9 cons: SEQUENCE
+ 39:d=5 hl=2 l= 3 prim: OBJECT :countryName
+ 44:d=5 hl=2 l= 2 prim: PRINTABLESTRING :US
+ 48:d=3 hl=2 l= 16 cons: SET
+ 50:d=4 hl=2 l= 14 cons: SEQUENCE
+ 52:d=5 hl=2 l= 3 prim: OBJECT :stateOrProvinceName
+ 57:d=5 hl=2 l= 7 prim: UTF8STRING :Arizona
+ 66:d=1 hl=2 l= 4 prim: cont [ 7 ]
-----BEGIN SUBJECT ALTERNATIVE NAME-----
-BEgwRoIVcGVybWl0dGVkLmV4YW1wbGUuY29thwTAqAECpCEwHzELMAkGA1UEBhMCVVMxEDAOBgNV
-BAgMB0FyaXpvbmGHBMCoBQU=
+MEaCFXBlcm1pdHRlZC5leGFtcGxlLmNvbYcEwKgBAqQhMB8xCzAJBgNVBAYTAlVTMRAwDgYDVQQI
+DAdBcml6b25hhwTAqAUF
-----END SUBJECT ALTERNATIVE NAME-----
diff --git a/net/data/name_constraints_unittest/san-invalid-empty.pem b/net/data/name_constraints_unittest/san-invalid-empty.pem
index 684007c..905d9fc 100644
--- a/net/data/name_constraints_unittest/san-invalid-empty.pem
+++ b/net/data/name_constraints_unittest/san-invalid-empty.pem
@@ -1,4 +1,4 @@
- 0:d=0 hl=2 l= 2 prim: OCTET STRING [HEX DUMP]:3000
+ 0:d=0 hl=2 l= 0 cons: SEQUENCE
-----BEGIN SUBJECT ALTERNATIVE NAME-----
-BAIwAA==
+MAA=
-----END SUBJECT ALTERNATIVE NAME-----
diff --git a/net/data/name_constraints_unittest/san-invalid-ipaddress.pem b/net/data/name_constraints_unittest/san-invalid-ipaddress.pem
index 2a45350..02e4e62 100644
--- a/net/data/name_constraints_unittest/san-invalid-ipaddress.pem
+++ b/net/data/name_constraints_unittest/san-invalid-ipaddress.pem
@@ -1,4 +1,5 @@
- 0:d=0 hl=2 l= 9 prim: OCTET STRING [HEX DUMP]:30078705C0A8000500
+ 0:d=0 hl=2 l= 7 cons: SEQUENCE
+ 2:d=1 hl=2 l= 5 prim: cont [ 7 ]
-----BEGIN SUBJECT ALTERNATIVE NAME-----
-BAkwB4cFwKgABQA=
+MAeHBcCoAAUA
-----END SUBJECT ALTERNATIVE NAME-----
diff --git a/net/data/name_constraints_unittest/san-othername.pem b/net/data/name_constraints_unittest/san-othername.pem
index 21edf43..b00dcfe 100644
--- a/net/data/name_constraints_unittest/san-othername.pem
+++ b/net/data/name_constraints_unittest/san-othername.pem
@@ -1,4 +1,7 @@
- 0:d=0 hl=2 l= 16 prim: OCTET STRING [HEX DUMP]:300EA00C06042A0304050404DEADBEEF
+ 0:d=0 hl=2 l= 14 cons: SEQUENCE
+ 2:d=1 hl=2 l= 12 cons: cont [ 0 ]
+ 4:d=2 hl=2 l= 4 prim: OBJECT :1.2.3.4.5
+ 10:d=2 hl=2 l= 4 prim: OCTET STRING [HEX DUMP]:DEADBEEF
-----BEGIN SUBJECT ALTERNATIVE NAME-----
-BBAwDqAMBgQqAwQFBATerb7v
+MA6gDAYEKgMEBQQE3q2+7w==
-----END SUBJECT ALTERNATIVE NAME-----
diff --git a/net/data/name_constraints_unittest/san-permitted.pem b/net/data/name_constraints_unittest/san-permitted.pem
index 1110ef6..098340f 100644
--- a/net/data/name_constraints_unittest/san-permitted.pem
+++ b/net/data/name_constraints_unittest/san-permitted.pem
@@ -1,5 +1,17 @@
- 0:d=0 hl=2 l= 66 prim: OCTET STRING [HEX DUMP]:304082157065726D69747465642E6578616D706C652E636F6D8704C0A80102A421301F310B30090603550406130255533110300E06035504080C074172697A6F6E61
+ 0:d=0 hl=2 l= 64 cons: SEQUENCE
+ 2:d=1 hl=2 l= 21 prim: cont [ 2 ]
+ 25:d=1 hl=2 l= 4 prim: cont [ 7 ]
+ 31:d=1 hl=2 l= 33 cons: cont [ 4 ]
+ 33:d=2 hl=2 l= 31 cons: SEQUENCE
+ 35:d=3 hl=2 l= 11 cons: SET
+ 37:d=4 hl=2 l= 9 cons: SEQUENCE
+ 39:d=5 hl=2 l= 3 prim: OBJECT :countryName
+ 44:d=5 hl=2 l= 2 prim: PRINTABLESTRING :US
+ 48:d=3 hl=2 l= 16 cons: SET
+ 50:d=4 hl=2 l= 14 cons: SEQUENCE
+ 52:d=5 hl=2 l= 3 prim: OBJECT :stateOrProvinceName
+ 57:d=5 hl=2 l= 7 prim: UTF8STRING :Arizona
-----BEGIN SUBJECT ALTERNATIVE NAME-----
-BEIwQIIVcGVybWl0dGVkLmV4YW1wbGUuY29thwTAqAECpCEwHzELMAkGA1UEBhMCVVMxEDAOBgNV
-BAgMB0FyaXpvbmE=
+MECCFXBlcm1pdHRlZC5leGFtcGxlLmNvbYcEwKgBAqQhMB8xCzAJBgNVBAYTAlVTMRAwDgYDVQQI
+DAdBcml6b25h
-----END SUBJECT ALTERNATIVE NAME-----
diff --git a/net/data/name_constraints_unittest/san-registeredid.pem b/net/data/name_constraints_unittest/san-registeredid.pem
index 11870ff..f408fb6 100644
--- a/net/data/name_constraints_unittest/san-registeredid.pem
+++ b/net/data/name_constraints_unittest/san-registeredid.pem
@@ -1,4 +1,5 @@
- 0:d=0 hl=2 l= 7 prim: OCTET STRING [HEX DUMP]:300588032A0304
+ 0:d=0 hl=2 l= 5 cons: SEQUENCE
+ 2:d=1 hl=2 l= 3 prim: cont [ 8 ]
-----BEGIN SUBJECT ALTERNATIVE NAME-----
-BAcwBYgDKgME
+MAWIAyoDBA==
-----END SUBJECT ALTERNATIVE NAME-----
diff --git a/net/data/name_constraints_unittest/san-rfc822name.pem b/net/data/name_constraints_unittest/san-rfc822name.pem
index 5d5f514..d69c035 100644
--- a/net/data/name_constraints_unittest/san-rfc822name.pem
+++ b/net/data/name_constraints_unittest/san-rfc822name.pem
@@ -1,4 +1,5 @@
- 0:d=0 hl=2 l= 19 prim: OCTET STRING [HEX DUMP]:3011810F666F6F406578616D706C652E636F6D
+ 0:d=0 hl=2 l= 17 cons: SEQUENCE
+ 2:d=1 hl=2 l= 15 prim: cont [ 1 ]
-----BEGIN SUBJECT ALTERNATIVE NAME-----
-BBMwEYEPZm9vQGV4YW1wbGUuY29t
+MBGBD2Zvb0BleGFtcGxlLmNvbQ==
-----END SUBJECT ALTERNATIVE NAME-----
diff --git a/net/data/name_constraints_unittest/san-uri.pem b/net/data/name_constraints_unittest/san-uri.pem
index 5bb3119..fdf79bb 100644
--- a/net/data/name_constraints_unittest/san-uri.pem
+++ b/net/data/name_constraints_unittest/san-uri.pem
@@ -1,4 +1,5 @@
- 0:d=0 hl=2 l= 22 prim: OCTET STRING [HEX DUMP]:30148612687474703A2F2F6578616D706C652E636F6D
+ 0:d=0 hl=2 l= 20 cons: SEQUENCE
+ 2:d=1 hl=2 l= 18 prim: cont [ 6 ]
-----BEGIN SUBJECT ALTERNATIVE NAME-----
-BBYwFIYSaHR0cDovL2V4YW1wbGUuY29t
+MBSGEmh0dHA6Ly9leGFtcGxlLmNvbQ==
-----END SUBJECT ALTERNATIVE NAME-----
diff --git a/net/data/name_constraints_unittest/san-x400address.pem b/net/data/name_constraints_unittest/san-x400address.pem
index 8984b4a..26ba77d 100644
--- a/net/data/name_constraints_unittest/san-x400address.pem
+++ b/net/data/name_constraints_unittest/san-x400address.pem
@@ -1,4 +1,8 @@
- 0:d=0 hl=2 l= 12 prim: OCTET STRING [HEX DUMP]:300AA3083006610413025553
+ 0:d=0 hl=2 l= 10 cons: SEQUENCE
+ 2:d=1 hl=2 l= 8 cons: cont [ 3 ]
+ 4:d=2 hl=2 l= 6 cons: SEQUENCE
+ 6:d=3 hl=2 l= 4 cons: appl [ 1 ]
+ 8:d=4 hl=2 l= 2 prim: PRINTABLESTRING :US
-----BEGIN SUBJECT ALTERNATIVE NAME-----
-BAwwCqMIMAZhBBMCVVM=
+MAqjCDAGYQQTAlVT
-----END SUBJECT ALTERNATIVE NAME-----