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

Side by Side Diff: net/tools/transport_security_state_generator/trie/trie_writer.cc

Issue 2632073002: Rename domain_security_preload_generator. (Closed)
Patch Set: rebase & comment rsleevi Created 3 years, 11 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 | « net/tools/transport_security_state_generator/trie/trie_writer.h ('k') | 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 (c) 2016 The Chromium Authors. All rights reserved. 1 // Copyright (c) 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/tools/domain_security_preload_generator/trie/trie_writer.h" 5 #include "net/tools/transport_security_state_generator/trie/trie_writer.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "base/logging.h" 9 #include "base/logging.h"
10 #include "base/strings/string_piece.h" 10 #include "base/strings/string_piece.h"
11 #include "base/strings/string_split.h" 11 #include "base/strings/string_split.h"
12 #include "base/strings/string_util.h" 12 #include "base/strings/string_util.h"
13 #include "net/tools/domain_security_preload_generator/trie/trie_bit_buffer.h" 13 #include "net/tools/transport_security_state_generator/trie/trie_bit_buffer.h"
14 14
15 namespace net { 15 namespace net {
16 16
17 namespace transport_security_state { 17 namespace transport_security_state {
18 18
19 namespace { 19 namespace {
20 20
21 bool CompareReversedEntries(const std::unique_ptr<ReversedEntry>& lhs, 21 bool CompareReversedEntries(const std::unique_ptr<ReversedEntry>& lhs,
22 const std::unique_ptr<ReversedEntry>& rhs) { 22 const std::unique_ptr<ReversedEntry>& rhs) {
23 return lhs->reversed_name < rhs->reversed_name; 23 return lhs->reversed_name < rhs->reversed_name;
(...skipping 13 matching lines...) Expand all
37 37
38 std::string domain = base::ToUpperASCII(parts[parts.size() - 2].as_string()); 38 std::string domain = base::ToUpperASCII(parts[parts.size() - 2].as_string());
39 base::ReplaceChars(domain, "-", "_", &domain); 39 base::ReplaceChars(domain, "-", "_", &domain);
40 40
41 return base::ToUpperASCII(domain + "_" + gtld); 41 return base::ToUpperASCII(domain + "_" + gtld);
42 } 42 }
43 43
44 } // namespace 44 } // namespace
45 45
46 ReversedEntry::ReversedEntry(std::vector<uint8_t> reversed_name, 46 ReversedEntry::ReversedEntry(std::vector<uint8_t> reversed_name,
47 const DomainSecurityEntry* entry) 47 const TransportSecurityStateEntry* entry)
48 : reversed_name(reversed_name), entry(entry) {} 48 : reversed_name(reversed_name), entry(entry) {}
49 49
50 ReversedEntry::~ReversedEntry() {} 50 ReversedEntry::~ReversedEntry() {}
51 51
52 TrieWriter::TrieWriter(const HuffmanRepresentationTable& huffman_table, 52 TrieWriter::TrieWriter(const HuffmanRepresentationTable& huffman_table,
53 const NameIDMap& domain_ids_map, 53 const NameIDMap& domain_ids_map,
54 const NameIDMap& expect_ct_report_uri_map, 54 const NameIDMap& expect_ct_report_uri_map,
55 const NameIDMap& expect_staple_report_uri_map, 55 const NameIDMap& expect_staple_report_uri_map,
56 const NameIDMap& pinsets_map, 56 const NameIDMap& pinsets_map,
57 HuffmanFrequencyTracker* frequency_tracker) 57 HuffmanBuilder* huffman_builder)
58 : huffman_table_(huffman_table), 58 : huffman_table_(huffman_table),
59 domain_ids_map_(domain_ids_map), 59 domain_ids_map_(domain_ids_map),
60 expect_ct_report_uri_map_(expect_ct_report_uri_map), 60 expect_ct_report_uri_map_(expect_ct_report_uri_map),
61 expect_staple_report_uri_map_(expect_staple_report_uri_map), 61 expect_staple_report_uri_map_(expect_staple_report_uri_map),
62 pinsets_map_(pinsets_map), 62 pinsets_map_(pinsets_map),
63 frequency_tracker_(frequency_tracker) {} 63 huffman_builder_(huffman_builder) {}
64 64
65 TrieWriter::~TrieWriter() {} 65 TrieWriter::~TrieWriter() {}
66 66
67 uint32_t TrieWriter::WriteEntries(const DomainSecurityEntries& entries) { 67 uint32_t TrieWriter::WriteEntries(
68 const TransportSecurityStateEntries& entries) {
68 ReversedEntries reversed_entries; 69 ReversedEntries reversed_entries;
69 70
70 for (auto const& entry : entries) { 71 for (auto const& entry : entries) {
71 std::unique_ptr<ReversedEntry> reversed_entry( 72 std::unique_ptr<ReversedEntry> reversed_entry(
72 new ReversedEntry(ReverseName(entry->hostname), entry.get())); 73 new ReversedEntry(ReverseName(entry->hostname), entry.get()));
73 reversed_entries.push_back(std::move(reversed_entry)); 74 reversed_entries.push_back(std::move(reversed_entry));
74 } 75 }
75 76
76 std::stable_sort(reversed_entries.begin(), reversed_entries.end(), 77 std::stable_sort(reversed_entries.begin(), reversed_entries.end(),
77 CompareReversedEntries); 78 CompareReversedEntries);
78 79
79 return WriteDispatchTables(reversed_entries.begin(), reversed_entries.end()); 80 return WriteDispatchTables(reversed_entries.begin(), reversed_entries.end());
80 } 81 }
81 82
82 uint32_t TrieWriter::WriteDispatchTables(ReversedEntries::iterator start, 83 uint32_t TrieWriter::WriteDispatchTables(ReversedEntries::iterator start,
83 ReversedEntries::iterator end) { 84 ReversedEntries::iterator end) {
84 DCHECK(start != end) << "No entries passed to WriteDispatchTables"; 85 DCHECK(start != end) << "No entries passed to WriteDispatchTables";
85 86
86 TrieBitBuffer writer; 87 TrieBitBuffer writer;
87 88
88 std::vector<uint8_t> prefix = LongestCommonPrefix(start, end); 89 std::vector<uint8_t> prefix = LongestCommonPrefix(start, end);
89 for (size_t i = 0; i < prefix.size(); ++i) { 90 for (size_t i = 0; i < prefix.size(); ++i) {
90 writer.WriteBit(1); 91 writer.WriteBit(1);
91 } 92 }
92 writer.WriteBit(0); 93 writer.WriteBit(0);
93 94
94 if (prefix.size()) { 95 if (prefix.size()) {
95 for (size_t i = 0; i < prefix.size(); ++i) { 96 for (size_t i = 0; i < prefix.size(); ++i) {
96 writer.WriteChar(prefix.at(i), huffman_table_, frequency_tracker_); 97 writer.WriteChar(prefix.at(i), huffman_table_, huffman_builder_);
97 } 98 }
98 } 99 }
99 100
100 RemovePrefix(prefix.size(), start, end); 101 RemovePrefix(prefix.size(), start, end);
101 int32_t last_position = -1; 102 int32_t last_position = -1;
102 103
103 while (start != end) { 104 while (start != end) {
104 uint8_t candidate = (*start)->reversed_name.at(0); 105 uint8_t candidate = (*start)->reversed_name.at(0);
105 ReversedEntries::iterator sub_entries_end = start + 1; 106 ReversedEntries::iterator sub_entries_end = start + 1;
106 107
107 for (; sub_entries_end != end; sub_entries_end++) { 108 for (; sub_entries_end != end; sub_entries_end++) {
108 if ((*sub_entries_end)->reversed_name.at(0) != candidate) { 109 if ((*sub_entries_end)->reversed_name.at(0) != candidate) {
109 break; 110 break;
110 } 111 }
111 } 112 }
112 113
113 writer.WriteChar(candidate, huffman_table_, frequency_tracker_); 114 writer.WriteChar(candidate, huffman_table_, huffman_builder_);
114 115
115 if (candidate == kTerminalValue) { 116 if (candidate == kTerminalValue) {
116 DCHECK((sub_entries_end - start) == 1) 117 DCHECK((sub_entries_end - start) == 1)
117 << "Multiple values with the same name"; 118 << "Multiple values with the same name";
118 WriteSecurityEntry((*start)->entry, &writer); 119 WriteEntry((*start)->entry, &writer);
119 } else { 120 } else {
120 RemovePrefix(1, start, sub_entries_end); 121 RemovePrefix(1, start, sub_entries_end);
121 uint32_t position = WriteDispatchTables(start, sub_entries_end); 122 uint32_t position = WriteDispatchTables(start, sub_entries_end);
122 writer.WritePosition(position, &last_position); 123 writer.WritePosition(position, &last_position);
123 } 124 }
124 125
125 start = sub_entries_end; 126 start = sub_entries_end;
126 } 127 }
127 128
128 writer.WriteChar(kEndOfTableValue, huffman_table_, frequency_tracker_); 129 writer.WriteChar(kEndOfTableValue, huffman_table_, huffman_builder_);
129 130
130 uint32_t position = buffer_.position(); 131 uint32_t position = buffer_.position();
131 writer.Flush(); 132 writer.Flush();
132 writer.WriteToBitWriter(&buffer_); 133 writer.WriteToBitWriter(&buffer_);
133 return position; 134 return position;
134 } 135 }
135 136
136 void TrieWriter::WriteSecurityEntry(const DomainSecurityEntry* entry, 137 void TrieWriter::WriteEntry(const TransportSecurityStateEntry* entry,
137 TrieBitBuffer* writer) { 138 TrieBitBuffer* writer) {
138 uint8_t include_subdomains = 0; 139 uint8_t include_subdomains = 0;
139 if (entry->include_subdomains) { 140 if (entry->include_subdomains) {
140 include_subdomains = 1; 141 include_subdomains = 1;
141 } 142 }
142 writer->WriteBit(include_subdomains); 143 writer->WriteBit(include_subdomains);
143 144
144 uint8_t force_https = 0; 145 uint8_t force_https = 0;
145 if (entry->force_https) { 146 if (entry->force_https) {
146 force_https = 1; 147 force_https = 1;
147 } 148 }
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after
274 return buffer_.position(); 275 return buffer_.position();
275 } 276 }
276 277
277 void TrieWriter::Flush() { 278 void TrieWriter::Flush() {
278 buffer_.Flush(); 279 buffer_.Flush();
279 } 280 }
280 281
281 } // namespace transport_security_state 282 } // namespace transport_security_state
282 283
283 } // namespace net 284 } // namespace net
OLDNEW
« no previous file with comments | « net/tools/transport_security_state_generator/trie/trie_writer.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698