proxygen
|
Namespaces | |
detail | |
test | |
Classes | |
class | AeadCookieCipher |
class | AeadTicketCipher |
class | AeadTokenCipher |
class | AllowAllReplayReplayCache |
struct | AppToken |
class | AppTokenValidator |
class | AsyncFizzServerT |
struct | AttemptVersionFallback |
class | CertManager |
struct | ClockSkewTolerance |
class | CookieCipher |
struct | CookieState |
class | DualTicketCipher |
class | FizzServer |
class | FizzServerContext |
struct | HandshakeLogging |
class | ReplayCache |
struct | ReportEarlyHandshakeSuccess |
struct | ReportHandshakeSuccess |
struct | ResumptionState |
class | ServerStateMachine |
struct | ServerTypes |
class | SlidingBloomReplayCache |
class | State |
struct | StatelessHelloRetryRequest |
class | TicketCipher |
struct | TicketCodec |
Typedefs | |
using | MutateState = folly::Function< void(State &)> |
using | Action = boost::variant< DeliverAppData, WriteToSocket, ReportHandshakeSuccess, ReportEarlyHandshakeSuccess, ReportError, MutateState, WaitForData, AttemptVersionFallback > |
using | Actions = folly::small_vector< Action, 4 > |
using | AsyncActions = boost::variant< Actions, folly::Future< Actions >> |
using | AsyncFizzServer = AsyncFizzServerT< ServerStateMachine > |
using | AES128CookieCipher = AeadCookieCipher< OpenSSLEVPCipher< AESGCM128 >, HkdfImpl< Sha256 >> |
using | AES128TicketCipher = AeadTicketCipher< OpenSSLEVPCipher< AESGCM128 >, TicketCodec< CertificateStorage::X509 >, HkdfImpl< Sha256 >> |
using | AES128TicketIdentityOnlyCipher = AeadTicketCipher< OpenSSLEVPCipher< AESGCM128 >, TicketCodec< CertificateStorage::IdentityOnly >, HkdfImpl< Sha256 >> |
Functions | |
static std::string | getKeyFromIdent (const std::string &ident) |
Buf | getStatelessHelloRetryRequest (ProtocolVersion version, CipherSuite cipher, folly::Optional< NamedGroup > group, Buf cookie) |
static folly::Optional< NamedGroup > | getHrrGroup (const std::vector< NamedGroup > &supportedGroups, const ClientHello &chlo) |
CookieState | getCookieState (const Factory &factory, const std::vector< ProtocolVersion > &supportedVersions, const std::vector< std::vector< CipherSuite >> &supportedCiphers, const std::vector< NamedGroup > &supportedGroups, const ClientHello &chlo, Buf appToken) |
bool | looksLikeV2ClientHello (const folly::IOBufQueue &queue) |
template<typename T > | |
folly::Optional< T > | negotiate (const std::vector< std::vector< T >> &serverPref, const std::vector< T > &clientPref) |
template<typename T > | |
folly::Optional< T > | negotiate (const std::vector< T > &serverPref, const std::vector< T > &clientPref) |
std::ostream & | operator<< (std::ostream &os, StateEnum state) |
void | appendClientCertificate (CertificateStorage storage, const std::shared_ptr< const Cert > &cert, folly::io::Appender &appender) |
std::shared_ptr< const Cert > | readClientCertificate (folly::io::Cursor &cursor) |
Variables | |
static const int | kBitsPerByte = 0x8 |
static const unsigned int | kBucketCount = 12 |
static const unsigned int | kHashCount = 4 |
using fizz::server::Action = typedef boost::variant< DeliverAppData, WriteToSocket, ReportHandshakeSuccess, ReportEarlyHandshakeSuccess, ReportError, MutateState, WaitForData, AttemptVersionFallback> |
using fizz::server::Actions = typedef folly::small_vector<Action, 4> |
using fizz::server::AES128CookieCipher = typedef AeadCookieCipher<OpenSSLEVPCipher<AESGCM128>, HkdfImpl<Sha256>> |
Definition at line 17 of file CookieTypes.h.
using fizz::server::AES128TicketCipher = typedef AeadTicketCipher< OpenSSLEVPCipher<AESGCM128>, TicketCodec<CertificateStorage::X509>, HkdfImpl<Sha256>> |
Definition at line 22 of file TicketTypes.h.
using fizz::server::AES128TicketIdentityOnlyCipher = typedef AeadTicketCipher< OpenSSLEVPCipher<AESGCM128>, TicketCodec<CertificateStorage::IdentityOnly>, HkdfImpl<Sha256>> |
Definition at line 26 of file TicketTypes.h.
using fizz::server::AsyncActions = typedef boost::variant<Actions, folly::Future<Actions>> |
using fizz::server::AsyncFizzServer = typedef AsyncFizzServerT<ServerStateMachine> |
Definition at line 136 of file AsyncFizzServer.h.
using fizz::server::MutateState = typedef folly::Function<void(State&)> |
|
strong |
|
strong |
Different modes of operation for client authentication. The names are self- explanatory.
Enumerator | |
---|---|
None | |
Optional | |
Required |
Definition at line 43 of file FizzServerContext.h.
Enumerator | |
---|---|
NotChecked | |
NotReplay | |
MaybeReplay | |
DefinitelyReplay |
Definition at line 17 of file ReplayCache.h.
|
strong |
void fizz::server::appendClientCertificate | ( | CertificateStorage | storage, |
const std::shared_ptr< const Cert > & | cert, | ||
folly::io::Appender & | appender | ||
) |
Definition at line 26 of file TicketCodec.cpp.
References folly::IOBuf::copyBuffer(), folly::IOBuf::create(), folly::ssl::OpenSSLCertUtils::derEncode(), IdentityOnly, None, fizz::detail::write(), and X509.
Referenced by fizz::server::TicketCodec< Storage >::encode().
CookieState fizz::server::getCookieState | ( | const Factory & | factory, |
const std::vector< ProtocolVersion > & | supportedVersions, | ||
const std::vector< std::vector< CipherSuite >> & | supportedCiphers, | ||
const std::vector< NamedGroup > & | supportedGroups, | ||
const ClientHello & | chlo, | ||
Buf | appToken | ||
) |
Negotiate and compute the CookieState to use in response to a ClientHello. This must match the logic inside of the server state machine.
Definition at line 79 of file CookieCipher.cpp.
References fizz::server::CookieState::appToken, fizz::server::CookieState::chloHash, fizz::server::CookieState::cipher, cipher, fizz::ClientHello::cipher_suites, fizz::ClientHello::extensions, getHrrGroup(), fizz::server::CookieState::group, group, fizz::Factory::makeHandshakeContext(), folly::gen::move, negotiate(), fizz::HandshakeStruct< e, t >::originalEncoding, fizz::server::CookieState::version, and version.
Referenced by fizz::sm::getCertificateRequest(), fizz::server::AeadCookieCipher< AeadType, HkdfType >::getStatelessResponse(), and fizz::server::test::TEST_F().
|
static |
Definition at line 47 of file CookieCipher.cpp.
References fizz::ClientHello::extensions, negotiate(), folly::none, and folly::pushmi::operators::share.
Referenced by getCookieState().
|
static |
Definition at line 93 of file CertManager.cpp.
References string, and folly::toLowerAscii().
Referenced by fizz::server::CertManager::addCert(), and fizz::server::CertManager::addCertIdentity().
Buf fizz::server::getStatelessHelloRetryRequest | ( | ProtocolVersion | version, |
CipherSuite | cipher, | ||
folly::Optional< NamedGroup > | group, | ||
Buf | cookie | ||
) |
Build a stateless HelloRetryRequest. This is deterministic and will be used to reconstruct the handshake transcript when receiving the second ClientHello.
Definition at line 18 of file CookieCipher.cpp.
References cipher, fizz::HelloRetryRequest::cipher_suite, fizz::Cookie::cookie, folly::IOBuf::create(), fizz::encodeExtension(), fizz::encodeHandshake(), fizz::HelloRetryRequest::extensions, group, fizz::HelloRetryRequest::legacy_session_id_echo, fizz::HelloRetryRequest::legacy_version, folly::gen::move, fizz::HelloRetryRequestKeyShare::selected_group, fizz::ServerSupportedVersions::selected_version, fizz::tls_1_2, and version.
Referenced by fizz::server::AeadCookieCipher< AeadType, HkdfType >::getStatelessResponse(), fizz::sm::setupSchedulerAndContext(), and fizz::server::test::TEST().
bool fizz::server::looksLikeV2ClientHello | ( | const folly::IOBufQueue & | queue | ) |
Definition at line 14 of file FizzServer.cpp.
References folly::IOBufQueue::empty(), folly::IOBufQueue::front(), and uint8_t.
Referenced by fizz::server::FizzServer< ActionMoveVisitor, SM >::newTransportData().
folly::Optional<T> fizz::server::negotiate | ( | const std::vector< std::vector< T >> & | serverPref, |
const std::vector< T > & | clientPref | ||
) |
Negotiate a parameter given a list of server preference tiers and a list of client preferences. Within a server preference tier the client preference will be respected.
Definition at line 22 of file Negotiator.h.
References folly::none.
Referenced by fizz::sm::getCertificate(), getCookieState(), fizz::extensions::TokenBindingServerExtension::getExtensions(), getHrrGroup(), fizz::sm::getResumptionState(), fizz::server::FizzServerContext::negotiateAlpn(), fizz::sm::negotiateCipher(), fizz::sm::negotiateGroup(), fizz::sm::negotiateVersion(), and fizz::server::test::TEST().
folly::Optional<T> fizz::server::negotiate | ( | const std::vector< T > & | serverPref, |
const std::vector< T > & | clientPref | ||
) |
Negotatiate a parameter given the server's preference. Client preference is ignored.
Definition at line 48 of file Negotiator.h.
References folly::none.
|
inline |
Definition at line 429 of file State.h.
References fizz::toString().
std::shared_ptr< const Cert > fizz::server::readClientCertificate | ( | folly::io::Cursor & | cursor | ) |
Definition at line 47 of file TicketCodec.cpp.
References IdentityOnly, fizz::CertUtils::makePeerCert(), folly::gen::move, None, fizz::detail::read(), and X509.
Referenced by fizz::server::TicketCodec< Storage >::decode().
|
static |
Definition at line 29 of file SlidingBloomReplayCache.cpp.
|
static |
Definition at line 30 of file SlidingBloomReplayCache.cpp.
Referenced by fizz::server::SlidingBloomReplayCache::SlidingBloomReplayCache().
|
static |
Definition at line 31 of file SlidingBloomReplayCache.cpp.
Referenced by fizz::server::SlidingBloomReplayCache::SlidingBloomReplayCache().