Chromium Code Reviews| Index: net/cert/cert_policy_enforcer_unittest.cc |
| diff --git a/net/cert/cert_policy_enforcer_unittest.cc b/net/cert/cert_policy_enforcer_unittest.cc |
| index f920963f6aa37216be9d12ca9279938dd5ea953e..bda27c2fa458bc3658606367414cc8a6c92ffaa1 100644 |
| --- a/net/cert/cert_policy_enforcer_unittest.cc |
| +++ b/net/cert/cert_policy_enforcer_unittest.cc |
| @@ -67,6 +67,29 @@ class CertPolicyEnforcerTest : public ::testing::Test { |
| } |
| } |
| + void CheckCertificateCompliesWithExactNumberOfEmbeddedSCTs( |
| + const base::Time& start, |
| + const base::Time& end, |
| + size_t required_scts) { |
| + scoped_refptr<X509Certificate> cert( |
| + new X509Certificate("subject", "issuer", start, end)); |
| + ct::CTVerifyResult result; |
| + for (size_t i = 0; i < required_scts - 1; ++i) { |
| + FillResultWithSCTsOfOrigin(ct::SignedCertificateTimestamp::SCT_EMBEDDED, |
| + 1, &result); |
| + EXPECT_FALSE(policy_enforcer_->DoesConformToCTEVPolicy( |
| + cert.get(), nullptr, result, BoundNetLog())) |
| + << " for: " << (end - start).InDays() << " and " << required_scts |
| + << " scts=" << result.verified_scts.size() << " i=" << i; |
| + } |
| + FillResultWithSCTsOfOrigin(ct::SignedCertificateTimestamp::SCT_EMBEDDED, 1, |
| + &result); |
| + EXPECT_TRUE(policy_enforcer_->DoesConformToCTEVPolicy( |
| + cert.get(), nullptr, result, BoundNetLog())) |
| + << " for: " << (end - start).InDays() << " and " << required_scts |
| + << " scts=" << result.verified_scts.size(); |
| + } |
| + |
| protected: |
| scoped_ptr<CertPolicyEnforcer> policy_enforcer_; |
| scoped_refptr<X509Certificate> chain_; |
| @@ -140,31 +163,48 @@ TEST_F(CertPolicyEnforcerTest, DoesNotConformToPolicyInvalidDates) { |
| TEST_F(CertPolicyEnforcerTest, |
| ConformsToPolicyExactNumberOfSCTsForValidityPeriod) { |
| - // Test multiple validity periods: Over 27 months, Over 15 months (but less |
| - // than 27 months), |
| - // Less than 15 months. |
| - const size_t validity_period[] = {12, 19, 30, 50}; |
| - const size_t needed_scts[] = {2, 3, 4, 5}; |
| - |
| - for (int i = 0; i < 3; ++i) { |
| - size_t curr_validity = validity_period[i]; |
| - scoped_refptr<X509Certificate> cert(new X509Certificate( |
| - "subject", "issuer", base::Time::Now(), |
| - base::Time::Now() + base::TimeDelta::FromDays(31 * curr_validity))); |
| - size_t curr_required_scts = needed_scts[i]; |
| - ct::CTVerifyResult result; |
| - for (size_t j = 0; j < curr_required_scts - 1; ++j) { |
| - FillResultWithSCTsOfOrigin(ct::SignedCertificateTimestamp::SCT_EMBEDDED, |
| - 1, &result); |
| - EXPECT_FALSE(policy_enforcer_->DoesConformToCTEVPolicy( |
| - cert.get(), nullptr, result, BoundNetLog())) |
| - << " for: " << curr_validity << " and " << curr_required_scts |
| - << " scts=" << result.verified_scts.size() << " j=" << j; |
| - } |
| - FillResultWithSCTsOfOrigin(ct::SignedCertificateTimestamp::SCT_EMBEDDED, 1, |
| - &result); |
| - EXPECT_TRUE(policy_enforcer_->DoesConformToCTEVPolicy( |
| - cert.get(), nullptr, result, BoundNetLog())); |
| + // Test multiple validity periods: |
| + // Under 15 months |
| + // Over 15 months, less than 27 months |
| + // Over 27 months, less than 39 months |
| + // Over 39 months |
|
davidben
2015/03/25 19:10:11
This list in the comment seems to be slightly out
Eran Messeri
2015/03/26 10:47:17
Done.
|
| + const struct TestData { |
| + base::Time validity_start; |
| + base::Time validity_end; |
| + size_t scts_required; |
| + } kTestData[] = {{// 14 months, need 2 |
|
davidben
2015/03/25 19:10:11
Oh clang-format. :-/ I don't know how to convince
Eran Messeri
2015/03/26 10:47:17
Yes, clang-format. While I don't like it either my
|
| + base::Time::FromUTCExploded({2015, 3, 0, 25, 11, 25, 0, 0}), |
| + base::Time::FromUTCExploded({2016, 6, 0, 6, 11, 25, 0, 0}), |
| + 2}, |
| + {// exactly 15 months, need 3 |
|
davidben
2015/03/25 19:10:11
Nit: They're not really complete sentences, but be
Eran Messeri
2015/03/26 10:47:18
Done.
|
| + base::Time::FromUTCExploded({2015, 3, 0, 25, 11, 25, 0, 0}), |
| + base::Time::FromUTCExploded({2016, 6, 0, 25, 11, 25, 0, 0}), |
| + 3}, |
| + {// over 15 months by a few days, need 3 |
| + base::Time::FromUTCExploded({2015, 3, 0, 25, 11, 25, 0, 0}), |
| + base::Time::FromUTCExploded({2016, 6, 0, 27, 11, 25, 0, 0}), |
| + 3}, |
| + {// exactly 27 months, need 3 |
| + base::Time::FromUTCExploded({2015, 3, 0, 25, 11, 25, 0, 0}), |
| + base::Time::FromUTCExploded({2017, 6, 0, 25, 11, 25, 0, 0}), |
| + 3}, |
| + {// over 27 months by a few days, need 4 |
| + base::Time::FromUTCExploded({2015, 3, 0, 25, 11, 25, 0, 0}), |
| + base::Time::FromUTCExploded({2017, 6, 0, 28, 11, 25, 0, 0}), |
| + 4}, |
| + {// exactly 39 months, need 4 |
| + base::Time::FromUTCExploded({2015, 3, 0, 25, 11, 25, 0, 0}), |
| + base::Time::FromUTCExploded({2018, 6, 0, 25, 11, 25, 0, 0}), |
| + 4}, |
| + {// over 39 months by a few days, need 5 |
| + base::Time::FromUTCExploded({2015, 3, 0, 25, 11, 25, 0, 0}), |
| + base::Time::FromUTCExploded({2018, 6, 0, 27, 11, 25, 0, 0}), |
| + 5}}; |
| + |
| + for (size_t i = 0; i < arraysize(kTestData); ++i) { |
|
davidben
2015/03/25 19:10:11
Still would prefer adding the SCOPED_TRACE. It's i
Eran Messeri
2015/03/26 10:47:17
Done.
|
| + CheckCertificateCompliesWithExactNumberOfEmbeddedSCTs( |
| + kTestData[i].validity_start, kTestData[i].validity_end, |
| + kTestData[i].scts_required); |
| } |
| } |