34 fizz::detail::writeBuf<uint16_t>(state.
chloHash, appender);
35 fizz::detail::writeBuf<uint16_t>(state.
appToken, appender);
55 fizz::detail::readBuf<uint16_t>(state.chloHash, cursor);
56 fizz::detail::readBuf<uint16_t>(state.appToken, cursor);
62 template <
typename AeadType,
typename HkdfType>
63 boost::variant<AppToken, StatelessHelloRetryRequest>
71 throw std::runtime_error(
"no TLS message in initial");
76 auto cookie = getExtension<Cookie>(
chlo.extensions);
80 throw std::runtime_error(
"cookie could not be decrypted");
92 template <
typename AeadType,
typename HkdfType>
95 auto plaintext = tokenCipher_.decrypt(
std::move(cookie));
103 template <
typename AeadType,
typename HkdfType>
106 Buf appToken)
const {
108 *context_->getFactory(),
109 context_->getSupportedVersions(),
110 context_->getSupportedCiphers(),
111 context_->getSupportedGroups(),
118 throw std::runtime_error(
"could not encrypt cookie");
Buf getStatelessHelloRetryRequest(ProtocolVersion version, CipherSuite cipher, folly::Optional< NamedGroup > group, Buf cookie)
TLSContent writeHandshake(Buf &&encodedHandshakeMsg, Args &&...args) const
boost::variant< AppToken, StatelessHelloRetryRequest > getTokenOrRetry(Buf clientHello, Buf appToken) const
CookieState decodeCookie(Buf cookie)
void write(const T &in, folly::io::Appender &appender)
static const std::string chlo
static std::unique_ptr< IOBuf > create(std::size_t capacity)
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)
constexpr detail::Map< Move > move
static Options cacheChainLength()
virtual folly::Optional< Param > readEvent(folly::IOBufQueue &socketBuf)
size_t read(T &out, folly::io::Cursor &cursor)
Optional< NamedGroup > group
std::unique_ptr< folly::IOBuf > Buf
folly::Optional< NamedGroup > group
folly::Optional< CookieState > decrypt(Buf cookie) const override
Buf getStatelessResponse(const ClientHello &chlo, Buf appToken) const
Buf encodeCookie(const CookieState &state)