Skip to content

Commit

Permalink
Refactor der::Input helper methods into new constructors
Browse files Browse the repository at this point in the history
Review URL: https://codereview.chromium.org/1573243011

Cr-Commit-Position: refs/heads/master@{#369311}
  • Loading branch information
nharper authored and Commit bot committed Jan 14, 2016
1 parent 39f391d commit f5c6253
Show file tree
Hide file tree
Showing 12 changed files with 170 additions and 193 deletions.
21 changes: 6 additions & 15 deletions net/cert/asn1_util.cc
Original file line number Diff line number Diff line change
Expand Up @@ -70,26 +70,17 @@ bool SeekToSPKI(der::Input in, der::Parser* tbs_certificate) {
return true;
}

der::Input InputFromStringPiece(base::StringPiece in) {
return der::Input(reinterpret_cast<const uint8_t*>(in.data()), in.length());
}

base::StringPiece StringPieceFromInput(der::Input in) {
return base::StringPiece(reinterpret_cast<const char*>(in.UnsafeData()),
in.Length());
}

} // namespace

bool ExtractSPKIFromDERCert(base::StringPiece cert,
base::StringPiece* spki_out) {
der::Parser parser;
if (!SeekToSPKI(InputFromStringPiece(cert), &parser))
if (!SeekToSPKI(der::Input(cert), &parser))
return false;
der::Input spki;
if (!parser.ReadRawTLV(&spki))
return false;
*spki_out = StringPieceFromInput(spki);
*spki_out = spki.AsStringPiece();
return true;
}

Expand All @@ -105,7 +96,7 @@ bool ExtractSubjectPublicKeyFromSPKI(base::StringPiece spki,
// parameters ANY DEFINED BY algorithm OPTIONAL }

// Step into SubjectPublicKeyInfo sequence.
der::Parser parser(InputFromStringPiece(spki));
der::Parser parser((der::Input(spki)));
der::Parser spki_parser;
if (!parser.ReadSequence(&spki_parser))
return false;
Expand All @@ -118,7 +109,7 @@ bool ExtractSubjectPublicKeyFromSPKI(base::StringPiece spki,
der::Input spk;
if (!spki_parser.ReadTag(der::kBitString, &spk))
return false;
*spk_out = StringPieceFromInput(spk);
*spk_out = spk.AsStringPiece();
return true;
}

Expand All @@ -130,7 +121,7 @@ bool ExtractCRLURLsFromDERCert(base::StringPiece cert,

bool present;
der::Parser tbs_cert_parser;
if (!SeekToSPKI(InputFromStringPiece(cert), &tbs_cert_parser))
if (!SeekToSPKI(der::Input(cert), &tbs_cert_parser))
return false;

// From RFC 5280, section 4.1
Expand Down Expand Up @@ -281,7 +272,7 @@ bool ExtractCRLURLsFromDERCert(base::StringPiece cert,
}
if (present) {
// This does not validate that |url| is a valid IA5String.
tmp_urls_out.push_back(StringPieceFromInput(url));
tmp_urls_out.push_back(url.AsStringPiece());
} else {
der::Tag unused_tag;
der::Input unused_value;
Expand Down
42 changes: 14 additions & 28 deletions net/cert/internal/certificate_policies_unittest.cc
Original file line number Diff line number Diff line change
Expand Up @@ -32,24 +32,21 @@ TEST(ParseCertificatePoliciesTest, InvalidEmpty) {
std::string der;
ASSERT_TRUE(LoadTestData("invalid-empty.pem", &der));
std::vector<der::Input> policies;
EXPECT_FALSE(
ParseCertificatePoliciesExtension(InputFromString(&der), &policies));
EXPECT_FALSE(ParseCertificatePoliciesExtension(der::Input(&der), &policies));
}

TEST(ParseCertificatePoliciesTest, InvalidIdentifierNotOid) {
std::string der;
ASSERT_TRUE(LoadTestData("invalid-policy_identifier_not_oid.pem", &der));
std::vector<der::Input> policies;
EXPECT_FALSE(
ParseCertificatePoliciesExtension(InputFromString(&der), &policies));
EXPECT_FALSE(ParseCertificatePoliciesExtension(der::Input(&der), &policies));
}

TEST(ParseCertificatePoliciesTest, AnyPolicy) {
std::string der;
ASSERT_TRUE(LoadTestData("anypolicy.pem", &der));
std::vector<der::Input> policies;
EXPECT_TRUE(
ParseCertificatePoliciesExtension(InputFromString(&der), &policies));
EXPECT_TRUE(ParseCertificatePoliciesExtension(der::Input(&der), &policies));
ASSERT_EQ(1U, policies.size());
EXPECT_EQ(AnyPolicy(), policies[0]);
}
Expand All @@ -58,8 +55,7 @@ TEST(ParseCertificatePoliciesTest, AnyPolicyWithQualifier) {
std::string der;
ASSERT_TRUE(LoadTestData("anypolicy_with_qualifier.pem", &der));
std::vector<der::Input> policies;
EXPECT_TRUE(
ParseCertificatePoliciesExtension(InputFromString(&der), &policies));
EXPECT_TRUE(ParseCertificatePoliciesExtension(der::Input(&der), &policies));
ASSERT_EQ(1U, policies.size());
EXPECT_EQ(AnyPolicy(), policies[0]);
}
Expand All @@ -69,16 +65,14 @@ TEST(ParseCertificatePoliciesTest, InvalidAnyPolicyWithCustomQualifier) {
ASSERT_TRUE(
LoadTestData("invalid-anypolicy_with_custom_qualifier.pem", &der));
std::vector<der::Input> policies;
EXPECT_FALSE(
ParseCertificatePoliciesExtension(InputFromString(&der), &policies));
EXPECT_FALSE(ParseCertificatePoliciesExtension(der::Input(&der), &policies));
}

TEST(ParseCertificatePoliciesTest, OnePolicy) {
std::string der;
ASSERT_TRUE(LoadTestData("policy_1_2_3.pem", &der));
std::vector<der::Input> policies;
EXPECT_TRUE(
ParseCertificatePoliciesExtension(InputFromString(&der), &policies));
EXPECT_TRUE(ParseCertificatePoliciesExtension(der::Input(&der), &policies));
ASSERT_EQ(1U, policies.size());
EXPECT_EQ(der::Input(policy_1_2_3_der), policies[0]);
}
Expand All @@ -87,8 +81,7 @@ TEST(ParseCertificatePoliciesTest, OnePolicyWithQualifier) {
std::string der;
ASSERT_TRUE(LoadTestData("policy_1_2_3_with_qualifier.pem", &der));
std::vector<der::Input> policies;
EXPECT_TRUE(
ParseCertificatePoliciesExtension(InputFromString(&der), &policies));
EXPECT_TRUE(ParseCertificatePoliciesExtension(der::Input(&der), &policies));
ASSERT_EQ(1U, policies.size());
EXPECT_EQ(der::Input(policy_1_2_3_der), policies[0]);
}
Expand All @@ -97,8 +90,7 @@ TEST(ParseCertificatePoliciesTest, OnePolicyWithCustomQualifier) {
std::string der;
ASSERT_TRUE(LoadTestData("policy_1_2_3_with_custom_qualifier.pem", &der));
std::vector<der::Input> policies;
EXPECT_TRUE(
ParseCertificatePoliciesExtension(InputFromString(&der), &policies));
EXPECT_TRUE(ParseCertificatePoliciesExtension(der::Input(&der), &policies));
ASSERT_EQ(1U, policies.size());
EXPECT_EQ(der::Input(policy_1_2_3_der), policies[0]);
}
Expand All @@ -107,26 +99,23 @@ TEST(ParseCertificatePoliciesTest, InvalidPolicyWithDuplicatePolicyOid) {
std::string der;
ASSERT_TRUE(LoadTestData("invalid-policy_1_2_3_dupe.pem", &der));
std::vector<der::Input> policies;
EXPECT_FALSE(
ParseCertificatePoliciesExtension(InputFromString(&der), &policies));
EXPECT_FALSE(ParseCertificatePoliciesExtension(der::Input(&der), &policies));
}

TEST(ParseCertificatePoliciesTest, InvalidPolicyWithEmptyQualifiersSequence) {
std::string der;
ASSERT_TRUE(LoadTestData(
"invalid-policy_1_2_3_with_empty_qualifiers_sequence.pem", &der));
std::vector<der::Input> policies;
EXPECT_FALSE(
ParseCertificatePoliciesExtension(InputFromString(&der), &policies));
EXPECT_FALSE(ParseCertificatePoliciesExtension(der::Input(&der), &policies));
}

TEST(ParseCertificatePoliciesTest, InvalidPolicyInformationHasUnconsumedData) {
std::string der;
ASSERT_TRUE(LoadTestData(
"invalid-policy_1_2_3_policyinformation_unconsumed_data.pem", &der));
std::vector<der::Input> policies;
EXPECT_FALSE(
ParseCertificatePoliciesExtension(InputFromString(&der), &policies));
EXPECT_FALSE(ParseCertificatePoliciesExtension(der::Input(&der), &policies));
}

TEST(ParseCertificatePoliciesTest,
Expand All @@ -135,16 +124,14 @@ TEST(ParseCertificatePoliciesTest,
ASSERT_TRUE(LoadTestData(
"invalid-policy_1_2_3_policyqualifierinfo_unconsumed_data.pem", &der));
std::vector<der::Input> policies;
EXPECT_FALSE(
ParseCertificatePoliciesExtension(InputFromString(&der), &policies));
EXPECT_FALSE(ParseCertificatePoliciesExtension(der::Input(&der), &policies));
}

TEST(ParseCertificatePoliciesTest, TwoPolicies) {
std::string der;
ASSERT_TRUE(LoadTestData("policy_1_2_3_and_1_2_4.pem", &der));
std::vector<der::Input> policies;
EXPECT_TRUE(
ParseCertificatePoliciesExtension(InputFromString(&der), &policies));
EXPECT_TRUE(ParseCertificatePoliciesExtension(der::Input(&der), &policies));
ASSERT_EQ(2U, policies.size());
EXPECT_EQ(der::Input(policy_1_2_3_der), policies[0]);
EXPECT_EQ(der::Input(policy_1_2_4_der), policies[1]);
Expand All @@ -154,8 +141,7 @@ TEST(ParseCertificatePoliciesTest, TwoPoliciesWithQualifiers) {
std::string der;
ASSERT_TRUE(LoadTestData("policy_1_2_3_and_1_2_4_with_qualifiers.pem", &der));
std::vector<der::Input> policies;
EXPECT_TRUE(
ParseCertificatePoliciesExtension(InputFromString(&der), &policies));
EXPECT_TRUE(ParseCertificatePoliciesExtension(der::Input(&der), &policies));
ASSERT_EQ(2U, policies.size());
EXPECT_EQ(der::Input(policy_1_2_3_der), policies[0]);
EXPECT_EQ(der::Input(policy_1_2_4_der), policies[1]);
Expand Down
Loading

0 comments on commit f5c6253

Please sign in to comment.