blob: 815777aba65b39f9d6dce67be084104e97f609fa [file] [log] [blame]
// Copyright (c) 2016 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.
#ifndef NET_TOOLS_TRANSPORT_SECURITY_STATE_GENERATOR_PRELOADED_STATE_GENERATOR_H_
#define NET_TOOLS_TRANSPORT_SECURITY_STATE_GENERATOR_PRELOADED_STATE_GENERATOR_H_
#include <stdint.h>
#include <memory>
#include <string>
#include "net/tools/huffman_trie/trie/trie_writer.h"
#include "net/tools/transport_security_state_generator/pinset.h"
#include "net/tools/transport_security_state_generator/pinsets.h"
#include "net/tools/transport_security_state_generator/transport_security_state_entry.h"
namespace net {
namespace transport_security_state {
// PreloadedStateGenerator generates C++ code that contains the preloaded
// entries in a way the Chromium code understands. The code that reads the
// output can be found in net/http/transport_security_state.cc. The output gets
// compiled into the binary.
class PreloadedStateGenerator {
public:
PreloadedStateGenerator();
~PreloadedStateGenerator();
// Returns the generated C++ code on success and the empty string on failure.
std::string Generate(const std::string& preload_template,
const TransportSecurityStateEntries& entries,
const Pinsets& pinsets);
private:
void ProcessSPKIHashes(const Pinsets& pinset, std::string* tpl);
void ProcessExpectCTURIs(const TransportSecurityStateEntries& entries,
NameIDMap* expect_ct_report_uri_map,
std::string* tpl);
void ProcessPinsets(const Pinsets& pinset,
NameIDMap* pinset_map,
std::string* tpl);
};
} // namespace transport_security_state
} // namespace net
#endif // NET_TOOLS_TRANSPORT_SECURITY_STATE_GENERATOR_PRELOADED_STATE_GENERATOR_H_