Index: net/cert/merkle_tree_leaf.h |
diff --git a/net/cert/merkle_tree_leaf.h b/net/cert/merkle_tree_leaf.h |
index 8f314f56a70641142300f8c6d556ab349178966b..21217bb6ec5c454e53c12e82cf2ff6e0b8cdf4f4 100644 |
--- a/net/cert/merkle_tree_leaf.h |
+++ b/net/cert/merkle_tree_leaf.h |
@@ -19,15 +19,25 @@ class X509Certificate; |
namespace ct { |
// Represents a MerkleTreeLeaf as defined in RFC6962, section 3.4. |
-// Has all the data as the MerkleTreeLeaf defined in the RFC, arranged |
-// slightly differently. |
+// The goal of this struct is to represent the Merkle tree entry such that |
+// all details are easily accessible and a leaf hash can be easily calculated |
+// for the entry. |
+// |
+// As such, it has all the data as the MerkleTreeLeaf defined in the RFC, |
+// but it is not identical to the structure in the RFC for the following |
+// reasons: |
+// * The version is implicit - it is only used for V1 leaves currently. |
+// * the leaf_type is also implicit: There's exactly one leaf type and no |
+// new types are planned. |
+// * The timestamped_entry's |timestamp| and |extensions| fields are directly |
+// accessible. |
+// * The timestamped_entry's entry_type can be deduced from |log_entry|.type |
struct NET_EXPORT MerkleTreeLeaf { |
MerkleTreeLeaf(); |
+ MerkleTreeLeaf(const MerkleTreeLeaf& other); |
+ MerkleTreeLeaf(MerkleTreeLeaf&&); |
~MerkleTreeLeaf(); |
- // The log id this leaf belongs to. |
- std::string log_id; |
- |
// Certificate / Precertificate and indication of entry type. |
LogEntry log_entry; |
@@ -38,13 +48,19 @@ struct NET_EXPORT MerkleTreeLeaf { |
std::string extensions; |
}; |
+// Given a |cert| and an |sct| for that certificate, constructs the |
+// representation of this entry in the Merkle tree by filling in |
+// |merkle_tree_leaf|. |
+// Returns false if it failed to construct the |merkle_tree_leaf|. |
NET_EXPORT bool GetMerkleTreeLeaf(const X509Certificate* cert, |
const SignedCertificateTimestamp* sct, |
MerkleTreeLeaf* merkle_tree_leaf); |
-// Sets |*out| to the hash of the Merkle |tree_leaf|, as defined in RFC6962. |
-// Returns true if the hash was generated, false if an error occurred. |
-NET_EXPORT bool Hash(const MerkleTreeLeaf& tree_leaf, std::string* out); |
+// Sets |*out| to the hash of the Merkle |tree_leaf|, as defined in RFC6962, |
+// section 3.4. Returns true if the hash was generated, false if an error |
+// occurred. |
+NET_EXPORT bool HashMerkleTreeLeaf(const MerkleTreeLeaf& tree_leaf, |
+ std::string* out); |
} // namespace ct |