| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "net/cert/ct_log_verifier.h" | 5 #include "net/cert/ct_log_verifier.h" |
| 6 | 6 |
| 7 #include <stdint.h> | 7 #include <stdint.h> |
| 8 | 8 |
| 9 #include <memory> | 9 #include <memory> |
| 10 #include <string> | 10 #include <string> |
| (...skipping 371 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 382 new_tree_size, new_root, wrong_proof)) | 382 new_tree_size, new_root, wrong_proof)) |
| 383 << "proof passed verification with empty node prepended"; | 383 << "proof passed verification with empty node prepended"; |
| 384 | 384 |
| 385 wrong_proof[0] = proof[0]; | 385 wrong_proof[0] = proof[0]; |
| 386 EXPECT_FALSE(VerifyConsistencyProof(log, old_tree_size, old_root, | 386 EXPECT_FALSE(VerifyConsistencyProof(log, old_tree_size, old_root, |
| 387 new_tree_size, new_root, wrong_proof)) | 387 new_tree_size, new_root, wrong_proof)) |
| 388 << "proof passed verification with first node duplicated"; | 388 << "proof passed verification with first node duplicated"; |
| 389 } | 389 } |
| 390 | 390 |
| 391 TEST_F(CTLogVerifierTest, VerifiesCertSCT) { | 391 TEST_F(CTLogVerifierTest, VerifiesCertSCT) { |
| 392 ct::LogEntry cert_entry; | 392 ct::SignedEntryData cert_entry; |
| 393 ct::GetX509CertLogEntry(&cert_entry); | 393 ct::GetX509CertSignedEntry(&cert_entry); |
| 394 | 394 |
| 395 scoped_refptr<ct::SignedCertificateTimestamp> cert_sct; | 395 scoped_refptr<ct::SignedCertificateTimestamp> cert_sct; |
| 396 ct::GetX509CertSCT(&cert_sct); | 396 ct::GetX509CertSCT(&cert_sct); |
| 397 | 397 |
| 398 EXPECT_TRUE(log_->Verify(cert_entry, *cert_sct.get())); | 398 EXPECT_TRUE(log_->Verify(cert_entry, *cert_sct.get())); |
| 399 } | 399 } |
| 400 | 400 |
| 401 TEST_F(CTLogVerifierTest, VerifiesPrecertSCT) { | 401 TEST_F(CTLogVerifierTest, VerifiesPrecertSCT) { |
| 402 ct::LogEntry precert_entry; | 402 ct::SignedEntryData precert_entry; |
| 403 ct::GetPrecertLogEntry(&precert_entry); | 403 ct::GetPrecertSignedEntry(&precert_entry); |
| 404 | 404 |
| 405 scoped_refptr<ct::SignedCertificateTimestamp> precert_sct; | 405 scoped_refptr<ct::SignedCertificateTimestamp> precert_sct; |
| 406 ct::GetPrecertSCT(&precert_sct); | 406 ct::GetPrecertSCT(&precert_sct); |
| 407 | 407 |
| 408 EXPECT_TRUE(log_->Verify(precert_entry, *precert_sct.get())); | 408 EXPECT_TRUE(log_->Verify(precert_entry, *precert_sct.get())); |
| 409 } | 409 } |
| 410 | 410 |
| 411 TEST_F(CTLogVerifierTest, FailsInvalidTimestamp) { | 411 TEST_F(CTLogVerifierTest, FailsInvalidTimestamp) { |
| 412 ct::LogEntry cert_entry; | 412 ct::SignedEntryData cert_entry; |
| 413 ct::GetX509CertLogEntry(&cert_entry); | 413 ct::GetX509CertSignedEntry(&cert_entry); |
| 414 | 414 |
| 415 scoped_refptr<ct::SignedCertificateTimestamp> cert_sct; | 415 scoped_refptr<ct::SignedCertificateTimestamp> cert_sct; |
| 416 ct::GetX509CertSCT(&cert_sct); | 416 ct::GetX509CertSCT(&cert_sct); |
| 417 | 417 |
| 418 // Mangle the timestamp, so that it should fail signature validation. | 418 // Mangle the timestamp, so that it should fail signature validation. |
| 419 cert_sct->timestamp = base::Time::Now(); | 419 cert_sct->timestamp = base::Time::Now(); |
| 420 | 420 |
| 421 EXPECT_FALSE(log_->Verify(cert_entry, *cert_sct.get())); | 421 EXPECT_FALSE(log_->Verify(cert_entry, *cert_sct.get())); |
| 422 } | 422 } |
| 423 | 423 |
| 424 TEST_F(CTLogVerifierTest, FailsInvalidLogID) { | 424 TEST_F(CTLogVerifierTest, FailsInvalidLogID) { |
| 425 ct::LogEntry cert_entry; | 425 ct::SignedEntryData cert_entry; |
| 426 ct::GetX509CertLogEntry(&cert_entry); | 426 ct::GetX509CertSignedEntry(&cert_entry); |
| 427 | 427 |
| 428 scoped_refptr<ct::SignedCertificateTimestamp> cert_sct; | 428 scoped_refptr<ct::SignedCertificateTimestamp> cert_sct; |
| 429 ct::GetX509CertSCT(&cert_sct); | 429 ct::GetX509CertSCT(&cert_sct); |
| 430 | 430 |
| 431 // Mangle the log ID, which should cause it to match a different log before | 431 // Mangle the log ID, which should cause it to match a different log before |
| 432 // attempting signature validation. | 432 // attempting signature validation. |
| 433 cert_sct->log_id.assign(cert_sct->log_id.size(), '\0'); | 433 cert_sct->log_id.assign(cert_sct->log_id.size(), '\0'); |
| 434 | 434 |
| 435 EXPECT_FALSE(log_->Verify(cert_entry, *cert_sct.get())); | 435 EXPECT_FALSE(log_->Verify(cert_entry, *cert_sct.get())); |
| 436 } | 436 } |
| (...skipping 315 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 752 | 752 |
| 753 // Test verification of consistency proofs and audit proofs for all tree sizes | 753 // Test verification of consistency proofs and audit proofs for all tree sizes |
| 754 // from 0 to 128. | 754 // from 0 to 128. |
| 755 INSTANTIATE_TEST_CASE_P(RangeOfTreeSizes, | 755 INSTANTIATE_TEST_CASE_P(RangeOfTreeSizes, |
| 756 CTLogVerifierTestUsingGenerator, | 756 CTLogVerifierTestUsingGenerator, |
| 757 testing::Range(size_t(0), size_t(129))); | 757 testing::Range(size_t(0), size_t(129))); |
| 758 | 758 |
| 759 } // namespace | 759 } // namespace |
| 760 | 760 |
| 761 } // namespace net | 761 } // namespace net |
| OLD | NEW |