blob: 8c799a0e75aaa0cb5f432cb1fc297be4181fb5fc [file] [log] [blame]
// Copyright 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_QUIC_TEST_TOOLS_QUIC_CRYPTO_SERVER_CONFIG_PEER_H_
#define NET_QUIC_TEST_TOOLS_QUIC_CRYPTO_SERVER_CONFIG_PEER_H_
#include "net/quic/core/crypto/quic_crypto_server_config.h"
namespace net {
namespace test {
// Peer for accessing otherwise private members of a QuicCryptoServerConfig.
class QuicCryptoServerConfigPeer {
public:
explicit QuicCryptoServerConfigPeer(
const QuicCryptoServerConfig* server_config)
: server_config_(server_config) {}
// Returns the proof source.
ProofSource* GetProofSource();
// Returns the primary config.
scoped_refptr<QuicCryptoServerConfig::Config> GetPrimaryConfig();
// Returns the config associated with |config_id|.
scoped_refptr<QuicCryptoServerConfig::Config> GetConfig(
std::string config_id);
// Returns a pointer to the ProofSource object.
ProofSource* GetProofSource() const;
// Generates a new valid source address token.
std::string NewSourceAddressToken(
std::string config_id,
SourceAddressTokens previous_tokens,
const QuicIpAddress& ip,
QuicRandom* rand,
QuicWallTime now,
CachedNetworkParameters* cached_network_params);
// Attempts to validate the tokens in |tokens|.
HandshakeFailureReason ValidateSourceAddressTokens(
std::string config_id,
base::StringPiece tokens,
const QuicIpAddress& ip,
QuicWallTime now,
CachedNetworkParameters* cached_network_params);
// Attempts to validate the single source address token in |token|.
HandshakeFailureReason ValidateSingleSourceAddressToken(
base::StringPiece token,
const QuicIpAddress& ip,
QuicWallTime now);
// Returns a new server nonce.
std::string NewServerNonce(QuicRandom* rand, QuicWallTime now) const;
// CheckConfigs compares the state of the Configs in |server_config_| to the
// description given as arguments. The arguments are given as
// nullptr-terminated std:pairs. The first of each std:pair is the server
// config ID of
// a Config. The second is a boolean describing whether the config is the
// primary. For example:
// CheckConfigs(nullptr); // checks that no Configs are loaded.
//
// // Checks that exactly three Configs are loaded with the given IDs and
// // status.
// CheckConfigs(
// "id1", false,
// "id2", true,
// "id3", false,
// nullptr);
void CheckConfigs(const char* server_config_id1, ...);
// ConfigsDebug returns a std::string that contains debugging information
// about
// the set of Configs loaded in |server_config_| and their status.
std::string ConfigsDebug();
void SelectNewPrimaryConfig(int seconds);
static std::string CompressChain(
QuicCompressedCertsCache* compressed_certs_cache,
const scoped_refptr<ProofSource::Chain>& chain,
const std::string& client_common_set_hashes,
const std::string& client_cached_cert_hashes,
const CommonCertSets* common_sets);
uint32_t source_address_token_future_secs();
uint32_t source_address_token_lifetime_secs();
private:
const QuicCryptoServerConfig* server_config_;
};
} // namespace test
} // namespace net
#endif // NET_QUIC_TEST_TOOLS_QUIC_CRYPTO_SERVER_CONFIG_PEER_H_