Index: net/cert/signed_tree_head.cc |
diff --git a/net/cert/signed_tree_head.cc b/net/cert/signed_tree_head.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..eca31cfa2ffc143dccf4de82a96b85fe81880e8f |
--- /dev/null |
+++ b/net/cert/signed_tree_head.cc |
@@ -0,0 +1,50 @@ |
+// Copyright 2015 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#include "net/cert/signed_tree_head.h" |
+ |
+#include "base/strings/string_number_conversions.h" |
+ |
+namespace net { |
+namespace ct { |
+ |
+SignedTreeHead::SignedTreeHead() {} |
+ |
+SignedTreeHead::SignedTreeHead(Version version, |
+ const base::Time& timestamp, |
+ uint64_t tree_size, |
+ const char sha256_root_hash[kSthRootHashLength], |
+ const DigitallySigned& signature, |
+ const std::string& log_id) |
+ : version(version), |
+ timestamp(timestamp), |
+ tree_size(tree_size), |
+ signature(signature), |
+ log_id(log_id) { |
+ strncpy(this->sha256_root_hash, sha256_root_hash, kSthRootHashLength); |
Eran Messeri
2016/01/14 12:46:45
You should use memcpy - strncpy breaks if there's
|
+} |
+ |
+SignedTreeHead::~SignedTreeHead() {} |
+ |
+bool operator==(const SignedTreeHead& sth1, const SignedTreeHead& sth2) { |
+ return sth1.log_id == sth2.log_id && sth1.timestamp == sth2.timestamp; |
+} |
+ |
+bool operator!=(const SignedTreeHead& sth1, const SignedTreeHead& sth2) { |
+ return !(sth1 == sth2); |
+} |
+ |
+std::ostream& operator<<(std::ostream& stream, const SignedTreeHead& sth) { |
+ return stream << "{\n" |
+ << "\t\"version\": " << sth.version << ",\n" |
+ << "\t\"timestamp\": " << sth.timestamp << ",\n" |
+ << "\t\"tree_size\": " << sth.tree_size << ",\n" |
+ << "\t\"log_id\": \"" |
+ << base::HexEncode(sth.log_id.data(), sth.log_id.size()) |
+ << "\",\n" |
+ << "}"; |
+} |
+ |
+} // namespace ct |
+} // namespace net |