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

Unified Diff: net/cert/ct_log_verifier_unittest.cc

Issue 2275353002: Removes TestVector from ct_log_verifier_unittest (Closed)
Patch Set: Addresses Ryan Sleevi's comments Created 4 years, 4 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/cert/ct_log_verifier_unittest.cc
diff --git a/net/cert/ct_log_verifier_unittest.cc b/net/cert/ct_log_verifier_unittest.cc
index 599a6c22d42185191f8a0e9269b9d515550c8962..1d9b5706893294a013a18e8c2aa164bced5e72f0 100644
--- a/net/cert/ct_log_verifier_unittest.cc
+++ b/net/cert/ct_log_verifier_unittest.cc
@@ -13,6 +13,7 @@
#include "base/strings/string_number_conversions.h"
#include "base/time/time.h"
#include "crypto/secure_hash.h"
+#include "crypto/sha2.h"
Ryan Sleevi 2016/08/25 20:32:45 Unnecessary
#include "net/base/hash_value.h"
#include "net/cert/ct_log_verifier_util.h"
#include "net/cert/merkle_consistency_proof.h"
@@ -37,15 +38,6 @@ uint64_t CalculateNearestPowerOfTwo(uint64_t n) {
return ret;
}
-// The following structures, TestVector and ProofTestVector are used for
-// definining test proofs later on.
-
-// A single hash node.
-struct TestVector {
- const char* const str;
- size_t length_bytes;
-};
-
// A single consistency proof. Contains the old and new tree sizes
// (snapshot1 and snapshot2), the length of the proof (proof_length) and
// at most 3 proof nodes (all test proofs will be for a tree of size 8).
@@ -53,72 +45,68 @@ struct ProofTestVector {
uint64_t snapshot1;
uint64_t snapshot2;
size_t proof_length;
- TestVector proof[3];
+ const char* const proof[3];
};
// All test data replicated from
// https://github.com/google/certificate-transparency/blob/c41b090ecc14ddd6b3531dc7e5ce36b21e253fdd/cpp/merkletree/merkle_tree_test.cc
// A hash of the empty string.
-const TestVector kSHA256EmptyTreeHash = {
- "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", 32};
+const char* const kSHA256EmptyTreeHash =
Ryan Sleevi 2016/08/25 20:32:45 const char kSHA256EmptyTreeHash[32] = { 0xe3, 0x
+ "\xe3\xb0\xc4\x42\x98\xfc\x1c\x14\x9a\xfb\xf4\xc8\x99\x6f\xb9\x24\x27\xae"
+ "\x41\xe4\x64\x9b\x93\x4c\xa4\x95\x99\x1b\x78\x52\xb8\x55";
// Node hashes for a sample tree of size 8 (each element in this array is
// a node hash, not leaf data; order represents order of the nodes in the tree).
-const TestVector kSHA256Roots[8] = {
- {"6e340b9cffb37a989ca544e6bb780a2c78901d3fb33738768511a30617afa01d", 32},
- {"fac54203e7cc696cf0dfcb42c92a1d9dbaf70ad9e621f4bd8d98662f00e3c125", 32},
- {"aeb6bcfe274b70a14fb067a5e5578264db0fa9b51af5e0ba159158f329e06e77", 32},
- {"d37ee418976dd95753c1c73862b9398fa2a2cf9b4ff0fdfe8b30cd95209614b7", 32},
- {"4e3bbb1f7b478dcfe71fb631631519a3bca12c9aefca1612bfce4c13a86264d4", 32},
- {"76e67dadbcdf1e10e1b74ddc608abd2f98dfb16fbce75277b5232a127f2087ef", 32},
- {"ddb89be403809e325750d3d263cd78929c2942b7942a34b77e122c9594a74c8c", 32},
- {"5dc9da79a70659a9ad559cb701ded9a2ab9d823aad2f4960cfe370eff4604328", 32}};
+const char* const kSHA256Roots[8] = {
+ "6e340b9cffb37a989ca544e6bb780a2c78901d3fb33738768511a30617afa01d",
+ "fac54203e7cc696cf0dfcb42c92a1d9dbaf70ad9e621f4bd8d98662f00e3c125",
+ "aeb6bcfe274b70a14fb067a5e5578264db0fa9b51af5e0ba159158f329e06e77",
+ "d37ee418976dd95753c1c73862b9398fa2a2cf9b4ff0fdfe8b30cd95209614b7",
+ "4e3bbb1f7b478dcfe71fb631631519a3bca12c9aefca1612bfce4c13a86264d4",
+ "76e67dadbcdf1e10e1b74ddc608abd2f98dfb16fbce75277b5232a127f2087ef",
+ "ddb89be403809e325750d3d263cd78929c2942b7942a34b77e122c9594a74c8c",
+ "5dc9da79a70659a9ad559cb701ded9a2ab9d823aad2f4960cfe370eff4604328"};
// A collection of consistency proofs between various sub-trees of the tree
// defined by |kSHA256Roots|.
const ProofTestVector kSHA256Proofs[4] = {
// Empty consistency proof between trees of the same size (1).
- {1, 1, 0, {{"", 0}, {"", 0}, {"", 0}}},
+ {1, 1, 0, {"", "", ""}},
// Consistency proof between tree of size 1 and tree of size 8, with 3
// nodes in the proof.
{1,
8,
3,
- {{"96a296d224f285c67bee93c30f8a309157f0daa35dc5b87e410b78630a09cfc7", 32},
- {"5f083f0a1a33ca076a95279832580db3e0ef4584bdff1f54c8a360f50de3031e", 32},
- {"6b47aaf29ee3c2af9af889bc1fb9254dabd31177f16232dd6aab035ca39bf6e4",
- 32}}},
+ {"96a296d224f285c67bee93c30f8a309157f0daa35dc5b87e410b78630a09cfc7",
+ "5f083f0a1a33ca076a95279832580db3e0ef4584bdff1f54c8a360f50de3031e",
+ "6b47aaf29ee3c2af9af889bc1fb9254dabd31177f16232dd6aab035ca39bf6e4"}},
// Consistency proof between tree of size 6 and tree of size 8, with 3
// nodes in the proof.
{6,
8,
3,
- {{"0ebc5d3437fbe2db158b9f126a1d118e308181031d0a949f8dededebc558ef6a", 32},
- {"ca854ea128ed050b41b35ffc1b87b8eb2bde461e9e3b5596ece6b9d5975a0ae0", 32},
- {"d37ee418976dd95753c1c73862b9398fa2a2cf9b4ff0fdfe8b30cd95209614b7",
- 32}}},
+ {"0ebc5d3437fbe2db158b9f126a1d118e308181031d0a949f8dededebc558ef6a",
+ "ca854ea128ed050b41b35ffc1b87b8eb2bde461e9e3b5596ece6b9d5975a0ae0",
+ "d37ee418976dd95753c1c73862b9398fa2a2cf9b4ff0fdfe8b30cd95209614b7"}},
// Consistency proof between tree of size 2 and tree of size 5, with 2
// nodes in the proof.
{2,
5,
2,
- {{"5f083f0a1a33ca076a95279832580db3e0ef4584bdff1f54c8a360f50de3031e", 32},
- {"bc1a0643b12e4d2d7c77918f44e0f4f79a838b6cf9ec5b5c283e1f4d88599e6b", 32},
- {"", 0}}}};
+ {"5f083f0a1a33ca076a95279832580db3e0ef4584bdff1f54c8a360f50de3031e",
+ "bc1a0643b12e4d2d7c77918f44e0f4f79a838b6cf9ec5b5c283e1f4d88599e6b", ""}}};
// Decodes a hexadecimal string into the binary data it represents.
-std::string HexToBytes(const char* hex_data, size_t hex_data_length) {
+std::string HexToBytes(const std::string& hex_data) {
std::vector<uint8_t> output;
std::string result;
- std::string hex_data_input(hex_data, hex_data_length);
if (base::HexStringToBytes(hex_data, &output))
- result.assign(reinterpret_cast<const char*>(&output[0]), output.size());
+ result.assign(output.begin(), output.end());
return result;
}
std::string GetEmptyTreeHash() {
- return HexToBytes(kSHA256EmptyTreeHash.str,
- kSHA256EmptyTreeHash.length_bytes);
+ return std::string(kSHA256EmptyTreeHash, crypto::kSHA256Length);
Ryan Sleevi 2016/08/25 20:32:45 return std::string(std::begin(kSHA256EmptyTreeHash
}
// Creates a ct::MerkleConsistencyProof and returns the result of
@@ -382,16 +370,15 @@ TEST_F(CTLogVerifierTest, VerifiesValidConsistencyProofs) {
for (size_t i = 0; i < arraysize(kSHA256Proofs); ++i) {
proof.clear();
for (size_t j = 0; j < kSHA256Proofs[i].proof_length; ++j) {
- const TestVector& v = kSHA256Proofs[i].proof[j];
- proof.push_back(HexToBytes(v.str, v.length_bytes));
+ const char* const v = kSHA256Proofs[i].proof[j];
+ proof.push_back(HexToBytes(v));
}
const uint64_t snapshot1 = kSHA256Proofs[i].snapshot1;
const uint64_t snapshot2 = kSHA256Proofs[i].snapshot2;
- const TestVector& old_root = kSHA256Roots[snapshot1 - 1];
- const TestVector& new_root = kSHA256Roots[snapshot2 - 1];
- VerifierConsistencyCheck(
- snapshot1, snapshot2, HexToBytes(old_root.str, old_root.length_bytes),
- HexToBytes(new_root.str, new_root.length_bytes), proof);
+ const char* const old_root = kSHA256Roots[snapshot1 - 1];
+ const char* const new_root = kSHA256Roots[snapshot2 - 1];
+ VerifierConsistencyCheck(snapshot1, snapshot2, HexToBytes(old_root),
+ HexToBytes(new_root), proof);
}
}
@@ -403,11 +390,6 @@ const char kLeafPrefix[] = {'\x00'};
// code.
class TreeHasher {
public:
- static std::string HashEmpty() {
- return HexToBytes(kSHA256EmptyTreeHash.str,
- kSHA256EmptyTreeHash.length_bytes);
- }
-
static std::string HashLeaf(const std::string& leaf) {
SHA256HashValue sha256;
memset(sha256.data, 0, sizeof(sha256.data));
@@ -428,7 +410,7 @@ class TreeHasher {
// specified in |inputs|.
std::string ReferenceMerkleTreeHash(std::string* inputs, uint64_t input_size) {
if (!input_size)
- return TreeHasher::HashEmpty();
+ return GetEmptyTreeHash();
if (input_size == 1)
return TreeHasher::HashLeaf(inputs[0]);
« 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