зеркало из https://github.com/mozilla/gecko-dev.git
47 строки
1.6 KiB
C++
47 строки
1.6 KiB
C++
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
#include "tls_server_config.h"
|
|
|
|
const uint64_t CONFIG_ENABLE_EXTENDED_MS = 0x01;
|
|
const uint64_t CONFIG_REQUEST_CERTIFICATE = 0x02;
|
|
const uint64_t CONFIG_REQUIRE_CERTIFICATE = 0x04;
|
|
const uint64_t CONFIG_ENABLE_DEFLATE = 0x08;
|
|
const uint64_t CONFIG_ENABLE_CBC_RANDOM_IV = 0x10;
|
|
const uint64_t CONFIG_REQUIRE_SAFE_NEGOTIATION = 0x20;
|
|
const uint64_t CONFIG_ENABLE_CACHE = 0x40;
|
|
|
|
// XOR 64-bit chunks of data to build a bitmap of config options derived from
|
|
// the fuzzing input. This seems the only way to fuzz various options while
|
|
// still maintaining compatibility with BoringSSL or OpenSSL fuzzers.
|
|
ServerConfig::ServerConfig(const uint8_t* data, size_t len) {
|
|
for (size_t i = 0; i < len; i++) {
|
|
config_ ^= static_cast<uint64_t>(data[i]) << (8 * (i % 8));
|
|
}
|
|
}
|
|
|
|
bool ServerConfig::EnableExtendedMasterSecret() {
|
|
return config_ & CONFIG_ENABLE_EXTENDED_MS;
|
|
}
|
|
|
|
bool ServerConfig::RequestCertificate() {
|
|
return config_ & CONFIG_REQUEST_CERTIFICATE;
|
|
}
|
|
|
|
bool ServerConfig::RequireCertificate() {
|
|
return config_ & CONFIG_REQUIRE_CERTIFICATE;
|
|
}
|
|
|
|
bool ServerConfig::EnableDeflate() { return config_ & CONFIG_ENABLE_DEFLATE; }
|
|
|
|
bool ServerConfig::EnableCbcRandomIv() {
|
|
return config_ & CONFIG_ENABLE_CBC_RANDOM_IV;
|
|
}
|
|
|
|
bool ServerConfig::RequireSafeNegotiation() {
|
|
return config_ & CONFIG_REQUIRE_SAFE_NEGOTIATION;
|
|
}
|
|
|
|
bool ServerConfig::EnableCache() { return config_ & CONFIG_ENABLE_CACHE; }
|