Commit 10570781 authored by Eric Roman's avatar Eric Roman Committed by Commit Bot

Add some extra certificate parsing errors for policy qualifiers.

Bug: 634443
Change-Id: I415c4d968b29325307401bf1c8b23c24ba977d37
Reviewed-on: https://chromium-review.googlesource.com/597409Reviewed-by: default avatarMatt Mueller <mattm@chromium.org>
Commit-Queue: Eric Roman <eroman@chromium.org>
Cr-Commit-Position: refs/heads/master@{#491478}
parent 2f12bcec
...@@ -31,6 +31,10 @@ DEFINE_CERT_ERROR_ID(kPolicyInformationTrailingData, ...@@ -31,6 +31,10 @@ DEFINE_CERT_ERROR_ID(kPolicyInformationTrailingData,
"PolicyInformation has trailing data"); "PolicyInformation has trailing data");
DEFINE_CERT_ERROR_ID(kFailedParsingPolicyQualifiers, DEFINE_CERT_ERROR_ID(kFailedParsingPolicyQualifiers,
"Failed parsing policy qualifiers"); "Failed parsing policy qualifiers");
DEFINE_CERT_ERROR_ID(kMissingQualifier,
"PolicyQualifierInfo is missing qualifier");
DEFINE_CERT_ERROR_ID(kPolicyQualifierInfoTrailingData,
"PolicyQualifierInfo has trailing data");
// -- policyQualifierIds for Internet policy qualifiers // -- policyQualifierIds for Internet policy qualifiers
// //
...@@ -90,11 +94,15 @@ bool ParsePolicyQualifiers(bool restrict_to_known_qualifiers, ...@@ -90,11 +94,15 @@ bool ParsePolicyQualifiers(bool restrict_to_known_qualifiers,
// qualifier ANY DEFINED BY policyQualifierId } // qualifier ANY DEFINED BY policyQualifierId }
der::Tag tag; der::Tag tag;
der::Input value; der::Input value;
if (!policy_information_parser.ReadTagAndValue(&tag, &value)) if (!policy_information_parser.ReadTagAndValue(&tag, &value)) {
errors->AddError(kMissingQualifier);
return false; return false;
}
// Should not have trailing data after qualifier. // Should not have trailing data after qualifier.
if (policy_information_parser.HasMore()) if (policy_information_parser.HasMore()) {
errors->AddError(kPolicyQualifierInfoTrailingData);
return false; return false;
}
} }
return true; return true;
} }
......
...@@ -141,7 +141,8 @@ TEST(ParsedCertificateTest, BadKeyUsage) { ...@@ -141,7 +141,8 @@ TEST(ParsedCertificateTest, BadKeyUsage) {
ASSERT_FALSE(ParseCertificateFromFile("bad_key_usage.pem", {})); ASSERT_FALSE(ParseCertificateFromFile("bad_key_usage.pem", {}));
} }
// TODO(eroman): What is wrong with policy qualifiers? // Parses a certificate that has a PolicyQualifierInfo that is missing the
// qualifier field.
TEST(ParsedCertificateTest, BadPolicyQualifiers) { TEST(ParsedCertificateTest, BadPolicyQualifiers) {
ASSERT_FALSE(ParseCertificateFromFile("bad_policy_qualifiers.pem", {})); ASSERT_FALSE(ParseCertificateFromFile("bad_policy_qualifiers.pem", {}));
} }
...@@ -151,7 +152,8 @@ TEST(ParsedCertificateTest, BadSignatureAlgorithmOid) { ...@@ -151,7 +152,8 @@ TEST(ParsedCertificateTest, BadSignatureAlgorithmOid) {
ASSERT_FALSE(ParseCertificateFromFile("bad_signature_algorithm_oid.pem", {})); ASSERT_FALSE(ParseCertificateFromFile("bad_signature_algorithm_oid.pem", {}));
} }
// TODO(eroman): What is wrong with the validity? // The validity encodes time as UTCTime but following the BER rules rather than
// DER rules (i.e. YYMMDDHHMMZ instead of YYMMDDHHMMSSZ).
TEST(ParsedCertificateTest, BadValidity) { TEST(ParsedCertificateTest, BadValidity) {
ASSERT_FALSE(ParseCertificateFromFile("bad_validity.pem", {})); ASSERT_FALSE(ParseCertificateFromFile("bad_validity.pem", {}));
} }
......
...@@ -21,9 +21,10 @@ jr/a+66npWEWLdJRS+jYpciCP7Bs4CQ3KqoEmRagV0Q/kk923429y/2YCfLa+E7PWy57z6glaV1 ...@@ -21,9 +21,10 @@ jr/a+66npWEWLdJRS+jYpciCP7Bs4CQ3KqoEmRagV0Q/kk923429y/2YCfLa+E7PWy57z6glaV1
xcGy1rNRBQkfkzAR96isuvSTTV+GpXi/VbYaQFOwhkmyrr0udUT5RuPk7+4ca2ebEJYHZ0= xcGy1rNRBQkfkzAR96isuvSTTV+GpXi/VbYaQFOwhkmyrr0udUT5RuPk7+4ca2ebEJYHZ0=
-----END CERTIFICATE----- -----END CERTIFICATE-----
ERROR: PolicyQualifierInfo is missing qualifier
ERROR: Failed parsing policy qualifiers ERROR: Failed parsing policy qualifiers
ERROR: Failed parsing certificate policies ERROR: Failed parsing certificate policies
-----BEGIN ERRORS----- -----BEGIN ERRORS-----
RVJST1I6IEZhaWxlZCBwYXJzaW5nIHBvbGljeSBxdWFsaWZpZXJzCkVSUk9SOiBGYWlsZWQgcGFyc2luZyBjZXJ0aWZpY2F0ZSBwb2xpY2llcwo= RVJST1I6IFBvbGljeVF1YWxpZmllckluZm8gaXMgbWlzc2luZyBxdWFsaWZpZXIKRVJST1I6IEZhaWxlZCBwYXJzaW5nIHBvbGljeSBxdWFsaWZpZXJzCkVSUk9SOiBGYWlsZWQgcGFyc2luZyBjZXJ0aWZpY2F0ZSBwb2xpY2llcwo=
-----END ERRORS----- -----END ERRORS-----
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment