Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1546)

Side by Side Diff: net/cert/ct_log_verifier_unittest.cc

Issue 2183073002: Improve documentation and readability of CTLogVerifier tests (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
48 }; 48 };
49 49
50 // All test data replicated from 50 // All test data replicated from
51 // https://github.com/google/certificate-transparency/blob/c41b090ecc14ddd6b3531 dc7e5ce36b21e253fdd/cpp/merkletree/merkle_tree_test.cc 51 // https://github.com/google/certificate-transparency/blob/c41b090ecc14ddd6b3531 dc7e5ce36b21e253fdd/cpp/merkletree/merkle_tree_test.cc
52 // A hash of the empty string. 52 // A hash of the empty string.
53 const uint8_t kSHA256EmptyTreeHash[32] = { 53 const uint8_t kSHA256EmptyTreeHash[32] = {
54 0xe3, 0xb0, 0xc4, 0x42, 0x98, 0xfc, 0x1c, 0x14, 0x9a, 0xfb, 0xf4, 54 0xe3, 0xb0, 0xc4, 0x42, 0x98, 0xfc, 0x1c, 0x14, 0x9a, 0xfb, 0xf4,
55 0xc8, 0x99, 0x6f, 0xb9, 0x24, 0x27, 0xae, 0x41, 0xe4, 0x64, 0x9b, 55 0xc8, 0x99, 0x6f, 0xb9, 0x24, 0x27, 0xae, 0x41, 0xe4, 0x64, 0x9b,
56 0x93, 0x4c, 0xa4, 0x95, 0x99, 0x1b, 0x78, 0x52, 0xb8, 0x55}; 56 0x93, 0x4c, 0xa4, 0x95, 0x99, 0x1b, 0x78, 0x52, 0xb8, 0x55};
57 57
58 // Node hashes for a sample tree of size 8 (each element in this array is 58 // Root hashes from building the sample tree of size 8 leaf-by-leaf.
59 // a node hash, not leaf data; order represents order of the nodes in the tree). 59 // The first entry is the root at size 0, the last is the root at size 8.
60 const char* const kSHA256Roots[8] = { 60 const char* const kSHA256Roots[8] = {
61 "6e340b9cffb37a989ca544e6bb780a2c78901d3fb33738768511a30617afa01d", 61 "6e340b9cffb37a989ca544e6bb780a2c78901d3fb33738768511a30617afa01d",
62 "fac54203e7cc696cf0dfcb42c92a1d9dbaf70ad9e621f4bd8d98662f00e3c125", 62 "fac54203e7cc696cf0dfcb42c92a1d9dbaf70ad9e621f4bd8d98662f00e3c125",
63 "aeb6bcfe274b70a14fb067a5e5578264db0fa9b51af5e0ba159158f329e06e77", 63 "aeb6bcfe274b70a14fb067a5e5578264db0fa9b51af5e0ba159158f329e06e77",
64 "d37ee418976dd95753c1c73862b9398fa2a2cf9b4ff0fdfe8b30cd95209614b7", 64 "d37ee418976dd95753c1c73862b9398fa2a2cf9b4ff0fdfe8b30cd95209614b7",
65 "4e3bbb1f7b478dcfe71fb631631519a3bca12c9aefca1612bfce4c13a86264d4", 65 "4e3bbb1f7b478dcfe71fb631631519a3bca12c9aefca1612bfce4c13a86264d4",
66 "76e67dadbcdf1e10e1b74ddc608abd2f98dfb16fbce75277b5232a127f2087ef", 66 "76e67dadbcdf1e10e1b74ddc608abd2f98dfb16fbce75277b5232a127f2087ef",
67 "ddb89be403809e325750d3d263cd78929c2942b7942a34b77e122c9594a74c8c", 67 "ddb89be403809e325750d3d263cd78929c2942b7942a34b77e122c9594a74c8c",
68 "5dc9da79a70659a9ad559cb701ded9a2ab9d823aad2f4960cfe370eff4604328"}; 68 "5dc9da79a70659a9ad559cb701ded9a2ab9d823aad2f4960cfe370eff4604328"};
69 69
(...skipping 292 matching lines...) Expand 10 before | Expand all | Expand 10 after
362 EXPECT_FALSE(VerifyConsistencyProof(log_, 1, empty_tree_hash, 1, 362 EXPECT_FALSE(VerifyConsistencyProof(log_, 1, empty_tree_hash, 1,
363 empty_tree_hash, proof)); 363 empty_tree_hash, proof));
364 } 364 }
365 365
366 TEST_F(CTLogVerifierTest, VerifiesValidConsistencyProofs) { 366 TEST_F(CTLogVerifierTest, VerifiesValidConsistencyProofs) {
367 std::vector<std::string> proof; 367 std::vector<std::string> proof;
368 std::string root1, root2; 368 std::string root1, root2;
369 369
370 // Known good proofs. 370 // Known good proofs.
371 for (size_t i = 0; i < arraysize(kSHA256Proofs); ++i) { 371 for (size_t i = 0; i < arraysize(kSHA256Proofs); ++i) {
372 SCOPED_TRACE(i);
372 proof.clear(); 373 proof.clear();
373 for (size_t j = 0; j < kSHA256Proofs[i].proof_length; ++j) { 374 for (size_t j = 0; j < kSHA256Proofs[i].proof_length; ++j) {
374 const char* const v = kSHA256Proofs[i].proof[j]; 375 const char* const v = kSHA256Proofs[i].proof[j];
375 proof.push_back(HexToBytes(v)); 376 proof.push_back(HexToBytes(v));
376 } 377 }
377 const uint64_t snapshot1 = kSHA256Proofs[i].snapshot1; 378 const uint64_t snapshot1 = kSHA256Proofs[i].snapshot1;
378 const uint64_t snapshot2 = kSHA256Proofs[i].snapshot2; 379 const uint64_t snapshot2 = kSHA256Proofs[i].snapshot2;
379 const char* const old_root = kSHA256Roots[snapshot1 - 1]; 380 const char* const old_root = kSHA256Roots[snapshot1 - 1];
380 const char* const new_root = kSHA256Roots[snapshot2 - 1]; 381 const char* const new_root = kSHA256Roots[snapshot2 - 1];
381 VerifierConsistencyCheck(snapshot1, snapshot2, HexToBytes(old_root), 382 VerifierConsistencyCheck(snapshot1, snapshot2, HexToBytes(old_root),
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
468 } 469 }
469 return proof; 470 return proof;
470 } 471 }
471 472
472 class CTLogVerifierTestUsingReferenceGenerator 473 class CTLogVerifierTestUsingReferenceGenerator
473 : public CTLogVerifierTest, 474 : public CTLogVerifierTest,
474 public ::testing::WithParamInterface<uint64_t> {}; 475 public ::testing::WithParamInterface<uint64_t> {};
475 476
476 const uint64_t kReferenceTreeSize = 256; 477 const uint64_t kReferenceTreeSize = 256;
477 478
479 // Tests that every possible valid consistency proof for a tree of a given size
480 // verifies correctly. Also checks that invalid variations of each proof fail to
481 // verify (see VerifierConsistencyCheck).
478 TEST_P(CTLogVerifierTestUsingReferenceGenerator, 482 TEST_P(CTLogVerifierTestUsingReferenceGenerator,
479 VerifiesValidConsistencyProof) { 483 VerifiesValidConsistencyProof) {
480 std::vector<std::string> data; 484 std::vector<std::string> data;
481 for (uint64_t i = 0; i < kReferenceTreeSize; ++i) 485 for (uint64_t i = 0; i < kReferenceTreeSize; ++i)
482 data.push_back(std::string(1, static_cast<char>(i))); 486 data.push_back(std::string(1, static_cast<char>(i)));
483 487
484 const uint64_t tree_size = GetParam(); 488 const uint64_t tree_size = GetParam();
485 const std::string tree_root = ReferenceMerkleTreeHash(data.data(), tree_size); 489 const std::string tree_root = ReferenceMerkleTreeHash(data.data(), tree_size);
486 490
487 for (uint64_t snapshot = 1; snapshot <= tree_size; ++snapshot) { 491 for (uint64_t snapshot = 1; snapshot <= tree_size; ++snapshot) {
488 SCOPED_TRACE(snapshot); 492 SCOPED_TRACE(snapshot);
489 const std::string snapshot_root = 493 const std::string snapshot_root =
490 ReferenceMerkleTreeHash(data.data(), snapshot); 494 ReferenceMerkleTreeHash(data.data(), snapshot);
491 const std::vector<std::string> proof = 495 const std::vector<std::string> proof =
492 ReferenceSnapshotConsistency(data.data(), tree_size, snapshot, true); 496 ReferenceSnapshotConsistency(data.data(), tree_size, snapshot, true);
493 VerifierConsistencyCheck(snapshot, tree_size, snapshot_root, tree_root, 497 VerifierConsistencyCheck(snapshot, tree_size, snapshot_root, tree_root,
494 proof); 498 proof);
495 } 499 }
496 } 500 }
497 501
498 // Test verification of consistency proofs between all tree sizes from 1 to 128. 502 // Test verification of consistency proofs between all tree sizes from 1 to 128.
499 INSTANTIATE_TEST_CASE_P(RangeOfTreeSizesAndSnapshots, 503 INSTANTIATE_TEST_CASE_P(RangeOfTreeSizesAndSnapshots,
500 CTLogVerifierTestUsingReferenceGenerator, 504 CTLogVerifierTestUsingReferenceGenerator,
501 testing::Range(UINT64_C(1), 505 testing::Range(UINT64_C(1),
502 (kReferenceTreeSize / 2) + 1)); 506 (kReferenceTreeSize / 2) + 1));
503 507
504 } // namespace 508 } // namespace
505 509
506 } // namespace net 510 } // namespace net
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698