OLD | NEW |
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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/merkle_tree_leaf.h" | 5 #include "net/cert/merkle_tree_leaf.h" |
6 | 6 |
7 #include <string.h> | 7 #include <string.h> |
8 | 8 |
9 #include <string> | 9 #include <string> |
10 | 10 |
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
68 scoped_refptr<SignedCertificateTimestamp> x509_sct_; | 68 scoped_refptr<SignedCertificateTimestamp> x509_sct_; |
69 scoped_refptr<SignedCertificateTimestamp> precert_sct_; | 69 scoped_refptr<SignedCertificateTimestamp> precert_sct_; |
70 scoped_refptr<X509Certificate> test_cert_; | 70 scoped_refptr<X509Certificate> test_cert_; |
71 scoped_refptr<X509Certificate> test_precert_; | 71 scoped_refptr<X509Certificate> test_precert_; |
72 }; | 72 }; |
73 | 73 |
74 TEST_F(MerkleTreeLeafTest, CreatesForX509Cert) { | 74 TEST_F(MerkleTreeLeafTest, CreatesForX509Cert) { |
75 MerkleTreeLeaf leaf; | 75 MerkleTreeLeaf leaf; |
76 ASSERT_TRUE(GetMerkleTreeLeaf(test_cert_.get(), x509_sct_.get(), &leaf)); | 76 ASSERT_TRUE(GetMerkleTreeLeaf(test_cert_.get(), x509_sct_.get(), &leaf)); |
77 | 77 |
78 EXPECT_EQ(x509_sct_->log_id, leaf.log_id); | |
79 EXPECT_EQ(LogEntry::LOG_ENTRY_TYPE_X509, leaf.log_entry.type); | 78 EXPECT_EQ(LogEntry::LOG_ENTRY_TYPE_X509, leaf.log_entry.type); |
80 EXPECT_FALSE(leaf.log_entry.leaf_certificate.empty()); | 79 EXPECT_FALSE(leaf.log_entry.leaf_certificate.empty()); |
81 EXPECT_TRUE(leaf.log_entry.tbs_certificate.empty()); | 80 EXPECT_TRUE(leaf.log_entry.tbs_certificate.empty()); |
82 | 81 |
83 EXPECT_EQ(x509_sct_->timestamp, leaf.timestamp); | 82 EXPECT_EQ(x509_sct_->timestamp, leaf.timestamp); |
84 EXPECT_EQ(x509_sct_->extensions, leaf.extensions); | 83 EXPECT_EQ(x509_sct_->extensions, leaf.extensions); |
85 } | 84 } |
86 | 85 |
87 TEST_F(MerkleTreeLeafTest, CreatesForPrecert) { | 86 TEST_F(MerkleTreeLeafTest, CreatesForPrecert) { |
88 MerkleTreeLeaf leaf; | 87 MerkleTreeLeaf leaf; |
89 ASSERT_TRUE( | 88 ASSERT_TRUE( |
90 GetMerkleTreeLeaf(test_precert_.get(), precert_sct_.get(), &leaf)); | 89 GetMerkleTreeLeaf(test_precert_.get(), precert_sct_.get(), &leaf)); |
91 | 90 |
92 EXPECT_EQ(precert_sct_->log_id, leaf.log_id); | |
93 EXPECT_EQ(LogEntry::LOG_ENTRY_TYPE_PRECERT, leaf.log_entry.type); | 91 EXPECT_EQ(LogEntry::LOG_ENTRY_TYPE_PRECERT, leaf.log_entry.type); |
94 EXPECT_FALSE(leaf.log_entry.tbs_certificate.empty()); | 92 EXPECT_FALSE(leaf.log_entry.tbs_certificate.empty()); |
95 EXPECT_TRUE(leaf.log_entry.leaf_certificate.empty()); | 93 EXPECT_TRUE(leaf.log_entry.leaf_certificate.empty()); |
96 | 94 |
97 EXPECT_EQ(precert_sct_->timestamp, leaf.timestamp); | 95 EXPECT_EQ(precert_sct_->timestamp, leaf.timestamp); |
98 EXPECT_EQ(precert_sct_->extensions, leaf.extensions); | 96 EXPECT_EQ(precert_sct_->extensions, leaf.extensions); |
99 } | 97 } |
100 | 98 |
101 TEST_F(MerkleTreeLeafTest, DoesNotCreateForEmbeddedSCTButNotPrecert) { | 99 TEST_F(MerkleTreeLeafTest, DoesNotCreateForEmbeddedSCTButNotPrecert) { |
102 MerkleTreeLeaf leaf; | 100 MerkleTreeLeaf leaf; |
103 ASSERT_FALSE(GetMerkleTreeLeaf(test_cert_.get(), precert_sct_.get(), &leaf)); | 101 ASSERT_FALSE(GetMerkleTreeLeaf(test_cert_.get(), precert_sct_.get(), &leaf)); |
104 } | 102 } |
105 | 103 |
106 // Expected hashes calculated by: | 104 // Expected hashes calculated by: |
107 // 1. Writing the serialized tree leaves from | 105 // 1. Writing the serialized tree leaves from |
108 // CtSerialization::EncodesLogEntryFor{X509Cert,Precert} to files. | 106 // CtSerialization::EncodesLogEntryFor{X509Cert,Precert} to files. |
109 // 2. Prepending a zero byte to both files. | 107 // 2. Prepending a zero byte to both files. |
110 // 3. Passing each file through the sha256sum tool. | 108 // 3. Passing each file through the sha256sum tool. |
111 | 109 |
112 TEST_F(MerkleTreeLeafTest, HashForX509Cert) { | 110 TEST_F(MerkleTreeLeafTest, HashForX509Cert) { |
113 MerkleTreeLeaf leaf; | 111 MerkleTreeLeaf leaf; |
114 ct::GetX509CertTreeLeaf(&leaf); | 112 ct::GetX509CertTreeLeaf(&leaf); |
115 | 113 |
116 std::string hash; | 114 std::string hash; |
117 ASSERT_TRUE(Hash(leaf, &hash)); | 115 ASSERT_TRUE(HashMerkleTreeLeaf(leaf, &hash)); |
118 EXPECT_THAT(hash, HexEq("452da788b3b8d15872ff0bb0777354b2a7f1c1887b5633201e76" | 116 EXPECT_THAT(hash, HexEq("452da788b3b8d15872ff0bb0777354b2a7f1c1887b5633201e76" |
119 "2ba5a4b143fc")); | 117 "2ba5a4b143fc")); |
120 } | 118 } |
121 | 119 |
122 TEST_F(MerkleTreeLeafTest, HashForPrecert) { | 120 TEST_F(MerkleTreeLeafTest, HashForPrecert) { |
123 MerkleTreeLeaf leaf; | 121 MerkleTreeLeaf leaf; |
124 ct::GetPrecertTreeLeaf(&leaf); | 122 ct::GetPrecertTreeLeaf(&leaf); |
125 | 123 |
126 std::string hash; | 124 std::string hash; |
127 ASSERT_TRUE(Hash(leaf, &hash)); | 125 ASSERT_TRUE(HashMerkleTreeLeaf(leaf, &hash)); |
128 EXPECT_THAT(hash, HexEq("257ae85f08810445511e35e33f7aee99ee19407971e35e95822b" | 126 EXPECT_THAT(hash, HexEq("257ae85f08810445511e35e33f7aee99ee19407971e35e95822b" |
129 "bf42a74be223")); | 127 "bf42a74be223")); |
130 } | 128 } |
131 | 129 |
132 } // namespace | 130 } // namespace |
133 | 131 |
134 } // namespace ct | 132 } // namespace ct |
135 | 133 |
136 } // namespace net | 134 } // namespace net |
OLD | NEW |