proxygen
fizz::test::HandshakeTest Class Reference
Inheritance diagram for fizz::test::HandshakeTest:
testing::Test fizz::test::SigSchemeTest

Public Member Functions

void SetUp () override
 
void resetTransports ()
 
void resetTransportsAndStartCookieHandshake ()
 
void resetTransportsAndDoCookieHandshake ()
 
void doHandshake ()
 
void doClientHandshake ()
 
void doServerHandshake ()
 
void expectClientSuccess ()
 
void expectServerSuccess ()
 
void expectSuccess ()
 
void expectError (const std::string &clientStr, const std::string &serverStr)
 
void expectServerError (const std::string &clientError, const std::string &serverError)
 
void clientWrite (StringPiece write)
 
void serverWrite (StringPiece write)
 
void expectClientRead (StringPiece read)
 
void expectServerRead (StringPiece read)
 
void expectEarlyDataRejectError ()
 
void expectReplaySafety ()
 
void sendAppData ()
 
void verifyEarlyParameters ()
 
void verifyParameters ()
 
void setupResume ()
 
void setupResumeWithHRR ()
 
- Public Member Functions inherited from testing::Test
virtual ~Test ()
 
virtual ~Test ()
 
virtual ~Test ()
 

Static Public Member Functions

static bool certsMatch (const std::shared_ptr< const Cert > &a, const std::shared_ptr< const Cert > &b)
 
- Static Public Member Functions inherited from testing::Test
static void SetUpTestCase ()
 
static void TearDownTestCase ()
 
static bool HasFatalFailure ()
 
static bool HasNonfatalFailure ()
 
static bool HasFailure ()
 
static void RecordProperty (const std::string &key, const std::string &value)
 
static void RecordProperty (const std::string &key, int value)
 
static void SetUpTestCase ()
 
static void TearDownTestCase ()
 
static bool HasFatalFailure ()
 
static bool HasNonfatalFailure ()
 
static bool HasFailure ()
 
static void RecordProperty (const std::string &key, const std::string &value)
 
static void RecordProperty (const std::string &key, int value)
 
static void SetUpTestCase ()
 
static void TearDownTestCase ()
 
static bool HasFatalFailure ()
 
static bool HasNonfatalFailure ()
 
static bool HasFailure ()
 
static void RecordProperty (const std::string &key, const std::string &value)
 
static void RecordProperty (const std::string &key, int value)
 

Protected Attributes

EventBase evb_
 
std::shared_ptr< FizzClientContextclientContext_
 
std::shared_ptr< FizzServerContextserverContext_
 
AsyncFizzClient::UniquePtr client_
 
AsyncFizzServer::UniquePtr server_
 
std::shared_ptr< AES128CookieCiphercookieCipher_
 
fizz::client::test::MockHandshakeCallback clientCallback_
 
fizz::server::test::MockHandshakeCallback serverCallback_
 
folly::test::MockReadCallback readCallback_
 
std::shared_ptr< fizz::ClientExtensionsclientExtensions_
 
std::shared_ptr< fizz::ServerExtensionsserverExtensions_
 
LocalTransportclientTransport_
 
LocalTransportserverTransport_
 
MockReadCallback clientRead_
 
MockReadCallback serverRead_
 
MockReplaySafetyCallback replayCallback_
 
ExpectedParameters expected_
 

Additional Inherited Members

- Public Types inherited from testing::Test
typedef internal::SetUpTestCaseFunc SetUpTestCaseFunc
 
typedef internal::TearDownTestCaseFunc TearDownTestCaseFunc
 
typedef internal::SetUpTestCaseFunc SetUpTestCaseFunc
 
typedef internal::TearDownTestCaseFunc TearDownTestCaseFunc
 
typedef internal::SetUpTestCaseFunc SetUpTestCaseFunc
 
typedef internal::TearDownTestCaseFunc TearDownTestCaseFunc
 
- Protected Member Functions inherited from testing::Test
 Test ()
 
virtual void TearDown ()
 
 Test ()
 
virtual void TearDown ()
 
 Test ()
 
virtual void TearDown ()
 

Detailed Description

Definition at line 56 of file HandshakeTest.cpp.

Member Function Documentation

static bool fizz::test::HandshakeTest::certsMatch ( const std::shared_ptr< const Cert > &  a,
const std::shared_ptr< const Cert > &  b 
)
inlinestatic

Definition at line 287 of file HandshakeTest.cpp.

References b.

289  {
290  if (!a || !b) {
291  return a == b;
292  } else {
293  return a->getIdentity() == b->getIdentity();
294  }
295  }
char b
char a
void fizz::test::HandshakeTest::clientWrite ( StringPiece  write)
inline

Definition at line 253 of file HandshakeTest.cpp.

References folly::IOBuf::copyBuffer().

253  {
254  client_->writeChain(nullptr, IOBuf::copyBuffer(write));
255  }
AsyncFizzClient::UniquePtr client_
static std::unique_ptr< IOBuf > copyBuffer(const void *buf, std::size_t size, std::size_t headroom=0, std::size_t minTailroom=0)
Definition: IOBuf.h:1587
void fizz::test::HandshakeTest::doClientHandshake ( )
inline

Definition at line 188 of file HandshakeTest.cpp.

References evb_, folly::EventBase::loop(), folly::none, and string.

188  {
189  client_->connect(
190  &clientCallback_, nullptr, folly::none, std::string("Fizz"));
191  evb_.loop();
192  }
fizz::client::test::MockHandshakeCallback clientCallback_
AsyncFizzClient::UniquePtr client_
const char * string
Definition: Conv.cpp:212
constexpr None none
Definition: Optional.h:87
void fizz::test::HandshakeTest::doHandshake ( )
inline

Definition at line 181 of file HandshakeTest.cpp.

References evb_, folly::EventBase::loop(), folly::none, and string.

181  {
182  client_->connect(
183  &clientCallback_, nullptr, folly::none, std::string("Fizz"));
184  server_->accept(&serverCallback_);
185  evb_.loop();
186  }
AsyncFizzServer::UniquePtr server_
fizz::client::test::MockHandshakeCallback clientCallback_
AsyncFizzClient::UniquePtr client_
fizz::server::test::MockHandshakeCallback serverCallback_
const char * string
Definition: Conv.cpp:212
constexpr None none
Definition: Optional.h:87
void fizz::test::HandshakeTest::doServerHandshake ( )
inline

Definition at line 194 of file HandshakeTest.cpp.

References evb_, and folly::EventBase::loop().

194  {
195  server_->accept(&serverCallback_);
196  evb_.loop();
197  }
AsyncFizzServer::UniquePtr server_
fizz::server::test::MockHandshakeCallback serverCallback_
void fizz::test::HandshakeTest::expectClientRead ( StringPiece  read)
inline

Definition at line 261 of file HandshakeTest.cpp.

References EXPECT_CALL.

261  {
262  EXPECT_CALL(clientRead_, readBufferAvailable_(BufMatches(read)));
263  }
MockReadCallback clientRead_
#define EXPECT_CALL(obj, call)
void fizz::test::HandshakeTest::expectClientSuccess ( )
inline

Definition at line 199 of file HandshakeTest.cpp.

References testing::_, EXPECT_CALL, FAIL, testing::Invoke(), ON_CALL, folly::basic_fbstring< E, T, A, Storage >::toStdString(), and folly::exception_wrapper::what().

199  {
200  EXPECT_CALL(clientCallback_, _fizzHandshakeSuccess())
201  .WillOnce(Invoke([this]() {
202  client_->setReadCB(&clientRead_);
203  if (!client_->isReplaySafe()) {
204  client_->setReplaySafetyCallback(&replayCallback_);
205  }
206  }));
207  ON_CALL(clientCallback_, _fizzHandshakeError(_))
208  .WillByDefault(Invoke([](folly::exception_wrapper ex) {
209  FAIL() << "Client Error: " << ex.what().toStdString();
210  }));
211  }
folly::fbstring what() const
fizz::client::test::MockHandshakeCallback clientCallback_
#define FAIL()
Definition: gtest.h:1822
MockReadCallback clientRead_
AsyncFizzClient::UniquePtr client_
PolymorphicAction< internal::InvokeAction< FunctionImpl > > Invoke(FunctionImpl function_impl)
std::basic_string< E, T, A > toStdString() const
Definition: FBString.h:1227
MockReplaySafetyCallback replayCallback_
#define ON_CALL(obj, call)
#define EXPECT_CALL(obj, call)
const internal::AnythingMatcher _
void fizz::test::HandshakeTest::expectEarlyDataRejectError ( )
inline

Definition at line 269 of file HandshakeTest.cpp.

References testing::_, folly::AsyncSocketException::EARLY_DATA_REJECTED, EXPECT_CALL, EXPECT_EQ, folly::AsyncSocketException::getType(), and testing::Invoke().

269  {
270  EXPECT_CALL(clientRead_, readErr_(_))
271  .WillOnce(Invoke([](const AsyncSocketException& ex) {
273  }));
274  }
#define EXPECT_EQ(val1, val2)
Definition: gtest.h:1922
MockReadCallback clientRead_
PolymorphicAction< internal::InvokeAction< FunctionImpl > > Invoke(FunctionImpl function_impl)
#define EXPECT_CALL(obj, call)
const internal::AnythingMatcher _
AsyncSocketExceptionType getType() const noexcept
void fizz::test::HandshakeTest::expectError ( const std::string clientStr,
const std::string serverStr 
)
inline

Definition at line 227 of file HandshakeTest.cpp.

References testing::_, EXPECT_CALL, EXPECT_THAT, testing::HasSubstr(), testing::Invoke(), folly::basic_fbstring< E, T, A, Storage >::toStdString(), and folly::exception_wrapper::what().

227  {
228  EXPECT_CALL(clientCallback_, _fizzHandshakeError(_))
229  .WillOnce(Invoke([clientStr](folly::exception_wrapper ex) {
230  EXPECT_THAT(ex.what().toStdString(), HasSubstr(clientStr));
231  }));
232  EXPECT_CALL(serverCallback_, _fizzHandshakeError(_))
233  .WillOnce(Invoke([serverStr](folly::exception_wrapper ex) {
234  EXPECT_THAT(ex.what().toStdString(), HasSubstr(serverStr));
235  }));
236  }
folly::fbstring what() const
fizz::client::test::MockHandshakeCallback clientCallback_
PolymorphicMatcher< internal::HasSubstrMatcher< internal::string > > HasSubstr(const internal::string &substring)
PolymorphicAction< internal::InvokeAction< FunctionImpl > > Invoke(FunctionImpl function_impl)
std::basic_string< E, T, A > toStdString() const
Definition: FBString.h:1227
fizz::server::test::MockHandshakeCallback serverCallback_
#define EXPECT_THAT(value, matcher)
#define EXPECT_CALL(obj, call)
const internal::AnythingMatcher _
void fizz::test::HandshakeTest::expectReplaySafety ( )
inline

Definition at line 276 of file HandshakeTest.cpp.

References EXPECT_CALL.

276  {
277  EXPECT_CALL(replayCallback_, onReplaySafe_());
278  }
MockReplaySafetyCallback replayCallback_
#define EXPECT_CALL(obj, call)
void fizz::test::HandshakeTest::expectServerError ( const std::string clientError,
const std::string serverError 
)
inline

Definition at line 238 of file HandshakeTest.cpp.

References testing::_, EXPECT_CALL, EXPECT_THAT, testing::HasSubstr(), testing::Invoke(), string, folly::basic_fbstring< E, T, A, Storage >::toStdString(), and folly::exception_wrapper::what().

240  {
241  EXPECT_CALL(clientCallback_, _fizzHandshakeSuccess());
242  client_->setReadCB(&readCallback_);
243  EXPECT_CALL(readCallback_, readErr_(_))
244  .WillOnce(Invoke([clientError](const AsyncSocketException& ex) {
245  EXPECT_THAT(std::string(ex.what()), HasSubstr(clientError));
246  }));
247  EXPECT_CALL(serverCallback_, _fizzHandshakeError(_))
248  .WillOnce(Invoke([serverError](folly::exception_wrapper ex) {
249  EXPECT_THAT(ex.what().toStdString(), HasSubstr(serverError));
250  }));
251  }
folly::fbstring what() const
fizz::client::test::MockHandshakeCallback clientCallback_
AsyncFizzClient::UniquePtr client_
folly::test::MockReadCallback readCallback_
PolymorphicMatcher< internal::HasSubstrMatcher< internal::string > > HasSubstr(const internal::string &substring)
PolymorphicAction< internal::InvokeAction< FunctionImpl > > Invoke(FunctionImpl function_impl)
std::basic_string< E, T, A > toStdString() const
Definition: FBString.h:1227
fizz::server::test::MockHandshakeCallback serverCallback_
#define EXPECT_THAT(value, matcher)
const char * string
Definition: Conv.cpp:212
#define EXPECT_CALL(obj, call)
const internal::AnythingMatcher _
void fizz::test::HandshakeTest::expectServerRead ( StringPiece  read)
inline

Definition at line 265 of file HandshakeTest.cpp.

References EXPECT_CALL.

265  {
266  EXPECT_CALL(serverRead_, readBufferAvailable_(BufMatches(read)));
267  }
#define EXPECT_CALL(obj, call)
MockReadCallback serverRead_
void fizz::test::HandshakeTest::expectServerSuccess ( )
inline

Definition at line 213 of file HandshakeTest.cpp.

References testing::_, EXPECT_CALL, FAIL, testing::Invoke(), ON_CALL, folly::basic_fbstring< E, T, A, Storage >::toStdString(), and folly::exception_wrapper::what().

213  {
214  EXPECT_CALL(serverCallback_, _fizzHandshakeSuccess())
215  .WillOnce(Invoke([this]() { server_->setReadCB(&serverRead_); }));
216  ON_CALL(serverCallback_, _fizzHandshakeError(_))
217  .WillByDefault(Invoke([](folly::exception_wrapper ex) {
218  FAIL() << "Server Error: " << ex.what().toStdString();
219  }));
220  }
folly::fbstring what() const
AsyncFizzServer::UniquePtr server_
#define FAIL()
Definition: gtest.h:1822
PolymorphicAction< internal::InvokeAction< FunctionImpl > > Invoke(FunctionImpl function_impl)
std::basic_string< E, T, A > toStdString() const
Definition: FBString.h:1227
fizz::server::test::MockHandshakeCallback serverCallback_
#define ON_CALL(obj, call)
#define EXPECT_CALL(obj, call)
const internal::AnythingMatcher _
MockReadCallback serverRead_
void fizz::test::HandshakeTest::expectSuccess ( )
inline

Definition at line 222 of file HandshakeTest.cpp.

void fizz::test::HandshakeTest::resetTransports ( )
inline

Definition at line 126 of file HandshakeTest.cpp.

References clientContext_, evb_, and folly::gen::move.

126  {
131  client->attachEventBase(&evb_);
132  server->attachEventBase(&evb_);
133  client->setPeer(server.get());
134  server->setPeer(client.get());
135 
136  client_.reset(new AsyncFizzClient(
138  server_.reset(new AsyncFizzServer(
140  }
AsyncFizzServer::UniquePtr server_
LocalTransport * clientTransport_
constexpr detail::Map< Move > move
Definition: Base-inl.h:2567
AsyncFizzClient::UniquePtr client_
LocalTransport * serverTransport_
std::shared_ptr< FizzClientContext > clientContext_
AsyncFizzClientT< ClientStateMachine > AsyncFizzClient
std::shared_ptr< FizzServerContext > serverContext_
std::shared_ptr< fizz::ClientExtensions > clientExtensions_
std::shared_ptr< fizz::ServerExtensions > serverExtensions_
std::unique_ptr< LocalTransport, Destructor > UniquePtr
AsyncFizzServerT< ServerStateMachine > AsyncFizzServer
void fizz::test::HandshakeTest::resetTransportsAndDoCookieHandshake ( )
inline

Definition at line 176 of file HandshakeTest.cpp.

void fizz::test::HandshakeTest::resetTransportsAndStartCookieHandshake ( )
inline

Definition at line 142 of file HandshakeTest.cpp.

References testing::_, clientContext_, folly::IOBuf::copyBuffer(), folly::Range< Iter >::data(), evb_, EXPECT_CALL, EXPECT_EQ, testing::Invoke(), folly::gen::move, ON_CALL, fizz::detail::readBuf(), retry, and testing::Return().

142  {
147  client->attachEventBase(&evb_);
148  server->attachEventBase(&evb_);
149  client->setPeer(server.get());
150  server->setPeer(client.get());
151 
152  client_.reset(new AsyncFizzClient(
154 
155  folly::test::MockReadCallback serverRawRead;
156  ON_CALL(serverRawRead, isBufferMovable_()).WillByDefault(Return(true));
157 
158  EXPECT_CALL(serverRawRead, readBufferAvailable_(_))
159  .WillOnce(Invoke([&](std::unique_ptr<IOBuf>& readBuf) {
160  server->setReadCB(nullptr);
161  auto tokenOrRetry = cookieCipher_->getTokenOrRetry(
162  std::move(readBuf), IOBuf::copyBuffer("test"));
163  auto retry =
164  std::move(boost::get<StatelessHelloRetryRequest>(tokenOrRetry));
165  server->writeChain(nullptr, std::move(retry.data));
166  }));
167 
168  server->setReadCB(&serverRawRead);
170  EXPECT_EQ(server->getReadCallback(), nullptr);
171 
172  server_.reset(new AsyncFizzServer(
174  }
AsyncFizzServer::UniquePtr server_
std::shared_ptr< AES128CookieCipher > cookieCipher_
size_t readBuf(Buf &buf, folly::io::Cursor &cursor)
Definition: Types-inl.h:220
static constexpr StringPiece retry
LocalTransport * clientTransport_
#define EXPECT_EQ(val1, val2)
Definition: gtest.h:1922
constexpr detail::Map< Move > move
Definition: Base-inl.h:2567
AsyncFizzClient::UniquePtr client_
LocalTransport * serverTransport_
std::shared_ptr< FizzClientContext > clientContext_
AsyncFizzClientT< ClientStateMachine > AsyncFizzClient
PolymorphicAction< internal::InvokeAction< FunctionImpl > > Invoke(FunctionImpl function_impl)
constexpr Iter data() const
Definition: Range.h:446
std::shared_ptr< FizzServerContext > serverContext_
std::shared_ptr< fizz::ClientExtensions > clientExtensions_
std::shared_ptr< fizz::ServerExtensions > serverExtensions_
#define ON_CALL(obj, call)
std::unique_ptr< LocalTransport, Destructor > UniquePtr
#define EXPECT_CALL(obj, call)
const internal::AnythingMatcher _
AsyncFizzServerT< ServerStateMachine > AsyncFizzServer
static std::unique_ptr< IOBuf > copyBuffer(const void *buf, std::size_t size, std::size_t headroom=0, std::size_t minTailroom=0)
Definition: IOBuf.h:1587
internal::ReturnAction< R > Return(R value)
void fizz::test::HandshakeTest::sendAppData ( )
inline

Definition at line 280 of file HandshakeTest.cpp.

280  {
281  expectClientRead("serverdata");
282  expectServerRead("clientdata");
283  clientWrite("clientdata");
284  serverWrite("serverdata");
285  }
void clientWrite(StringPiece write)
void serverWrite(StringPiece write)
void expectClientRead(StringPiece read)
void expectServerRead(StringPiece read)
void fizz::test::HandshakeTest::serverWrite ( StringPiece  write)
inline

Definition at line 257 of file HandshakeTest.cpp.

References folly::IOBuf::copyBuffer().

257  {
258  server_->writeChain(nullptr, IOBuf::copyBuffer(write));
259  }
AsyncFizzServer::UniquePtr server_
static std::unique_ptr< IOBuf > copyBuffer(const void *buf, std::size_t size, std::size_t headroom=0, std::size_t minTailroom=0)
Definition: IOBuf.h:1587
void fizz::test::HandshakeTest::SetUp ( )
inlineoverridevirtual

Reimplemented from testing::Test.

Definition at line 58 of file HandshakeTest.cpp.

References ASSERT_EQ, clientCert, clientContext_, fizz::test::getCert(), fizz::test::getPrivateKey(), bm::init(), fizz::test::kClientAuthCACert, fizz::test::kClientAuthClientCert, fizz::test::kClientAuthClientKey, fizz::test::kP256Certificate, fizz::test::kP256Key, fizz::test::kP384Certificate, fizz::test::kP384Key, fizz::test::kP521Certificate, fizz::test::kP521Key, fizz::test::kRSACertificate, fizz::test::kRSAKey, folly::gen::move, ON_CALL, folly::range(), and testing::Return().

58  {
60 
61  clientContext_ = std::make_shared<FizzClientContext>();
62  serverContext_ = std::make_shared<FizzServerContext>();
63 
64  auto pskCache = std::make_shared<BasicPskCache>();
65  clientContext_->setPskCache(std::move(pskCache));
66 
67  auto certManager = std::make_unique<CertManager>();
68  std::vector<std::shared_ptr<CertificateCompressor>> compressors = {
69  std::make_shared<ZlibCertificateCompressor>(9)};
70  std::vector<ssl::X509UniquePtr> rsaCerts;
71  rsaCerts.emplace_back(getCert(kRSACertificate));
72  certManager->addCert(
73  std::make_shared<SelfCertImpl<KeyType::RSA>>(
74  getPrivateKey(kRSAKey), std::move(rsaCerts), compressors),
75  true);
76  std::vector<ssl::X509UniquePtr> p256Certs;
77  std::vector<ssl::X509UniquePtr> p384Certs;
78  std::vector<ssl::X509UniquePtr> p521Certs;
79  p256Certs.emplace_back(getCert(kP256Certificate));
80  p384Certs.emplace_back(getCert(kP384Certificate));
81  p521Certs.emplace_back(getCert(kP521Certificate));
82  certManager->addCert(std::make_shared<SelfCertImpl<KeyType::P256>>(
83  getPrivateKey(kP256Key), std::move(p256Certs), compressors));
84  certManager->addCert(std::make_shared<SelfCertImpl<KeyType::P384>>(
85  getPrivateKey(kP384Key), std::move(p384Certs), compressors));
86  certManager->addCert(std::make_shared<SelfCertImpl<KeyType::P521>>(
87  getPrivateKey(kP521Key), std::move(p521Certs), compressors));
88  serverContext_->setCertManager(std::move(certManager));
89  serverContext_->setEarlyDataSettings(
90  true,
91  {std::chrono::seconds(-60), std::chrono::seconds(60)},
92  std::make_shared<AllowAllReplayReplayCache>());
93 
94  auto caCert = getCert(kClientAuthCACert);
96  auto clientKey = getPrivateKey(kClientAuthClientKey);
97  folly::ssl::X509StoreUniquePtr store(X509_STORE_new());
98  ASSERT_EQ(X509_STORE_add_cert(store.get(), caCert.get()), 1);
99  auto verifier = std::make_shared<const DefaultCertificateVerifier>(
101  serverContext_->setClientCertVerifier(verifier);
102  std::vector<folly::ssl::X509UniquePtr> certVec;
103  certVec.emplace_back(std::move(clientCert));
104  auto clientSelfCert = std::make_shared<SelfCertImpl<KeyType::RSA>>(
105  std::move(clientKey), std::move(certVec));
106  clientContext_->setClientCertificate(std::move(clientSelfCert));
107 
108  auto ticketCipher = std::make_shared<AES128TicketCipher>();
109  auto ticketSeed = RandomGenerator<32>().generateRandom();
110  ticketCipher->setTicketSecrets({{range(ticketSeed)}});
111  ticketCipher->setValidity(std::chrono::seconds(60));
112  serverContext_->setTicketCipher(std::move(ticketCipher));
113 
114  cookieCipher_ = std::make_shared<AES128CookieCipher>();
115  auto cookieSeed = RandomGenerator<32>().generateRandom();
116  cookieCipher_->setCookieSecrets({{range(cookieSeed)}});
117  cookieCipher_->setContext(serverContext_.get());
118  serverContext_->setCookieCipher(cookieCipher_);
119 
120  ON_CALL(clientRead_, isBufferMovable_()).WillByDefault(Return(true));
121  ON_CALL(serverRead_, isBufferMovable_()).WillByDefault(Return(true));
122 
123  resetTransports();
124  }
std::shared_ptr< AES128CookieCipher > cookieCipher_
constexpr folly::StringPiece kP256Key
Definition: TestUtil.h:18
#define ASSERT_EQ(val1, val2)
Definition: gtest.h:1956
constexpr folly::StringPiece kRSACertificate
Definition: TestUtil.h:159
constexpr folly::StringPiece kP384Certificate
Definition: TestUtil.h:74
constexpr detail::Map< Move > move
Definition: Base-inl.h:2567
MockReadCallback clientRead_
static void init()
Definition: Utils.cpp:42
EvpPkeyUniquePtr getPrivateKey(StringPiece key)
Definition: TestUtil.cpp:21
folly::ssl::X509UniquePtr getCert(folly::StringPiece cert)
Definition: TestUtil.cpp:48
std::shared_ptr< FizzClientContext > clientContext_
Gen range(Value begin, Value end)
Definition: Base.h:467
constexpr folly::StringPiece kClientAuthClientCert
Definition: TestUtil.h:216
constexpr folly::StringPiece kClientAuthClientKey
Definition: TestUtil.h:247
std::unique_ptr< X509_STORE, X509StoreDeleter > X509StoreUniquePtr
std::shared_ptr< FizzServerContext > serverContext_
#define ON_CALL(obj, call)
constexpr folly::StringPiece kRSAKey
Definition: TestUtil.h:129
std::shared_ptr< const Cert > clientCert
constexpr folly::StringPiece kP521Key
Definition: TestUtil.h:91
constexpr folly::StringPiece kP521Certificate
Definition: TestUtil.h:110
constexpr folly::StringPiece kP384Key
Definition: TestUtil.h:57
MockReadCallback serverRead_
constexpr folly::StringPiece kClientAuthCACert
Definition: TestUtil.h:183
internal::ReturnAction< R > Return(R value)
constexpr folly::StringPiece kP256Certificate
Definition: TestUtil.h:41
void fizz::test::HandshakeTest::setupResume ( )
inline
void fizz::test::HandshakeTest::setupResumeWithHRR ( )
inline

Definition at line 347 of file HandshakeTest.cpp.

References folly::none.

347  {
348  serverContext_->setSupportedGroups({NamedGroup::secp256r1});
350  expectSuccess();
351  doHandshake();
353  // Explicitly set a different supported group to trigger another
354  // negotiation, even if group is cached
355  serverContext_->setSupportedGroups({NamedGroup::x25519});
357  resetTransports();
361  }
folly::Optional< PskKeyExchangeMode > pskMode
ExpectedParameters expected_
folly::Optional< NamedGroup > group
std::shared_ptr< FizzServerContext > serverContext_
folly::Optional< SignatureScheme > scheme
constexpr None none
Definition: Optional.h:87
void fizz::test::HandshakeTest::verifyEarlyParameters ( )
inline

Definition at line 297 of file HandshakeTest.cpp.

References EXPECT_EQ, and EXPECT_TRUE.

297  {
298  EXPECT_EQ(
299  client_->getState().earlyDataParams()->version, expected_.version);
300  EXPECT_EQ(client_->getState().earlyDataParams()->cipher, expected_.cipher);
301  EXPECT_EQ(client_->getState().earlyDataParams()->alpn, expected_.alpn);
303  client_->getState().earlyDataParams()->clientCert,
305  }
#define EXPECT_EQ(val1, val2)
Definition: gtest.h:1922
AsyncFizzClient::UniquePtr client_
folly::Optional< std::string > alpn
static bool certsMatch(const std::shared_ptr< const Cert > &a, const std::shared_ptr< const Cert > &b)
ExpectedParameters expected_
std::shared_ptr< const Cert > clientCert
#define EXPECT_TRUE(condition)
Definition: gtest.h:1859
void fizz::test::HandshakeTest::verifyParameters ( )
inline

Definition at line 307 of file HandshakeTest.cpp.

References EXPECT_EQ, and EXPECT_TRUE.

307  {
308  EXPECT_EQ(*client_->getState().version(), expected_.version);
309  EXPECT_EQ(*client_->getState().cipher(), expected_.cipher);
310  EXPECT_EQ(client_->getState().sigScheme(), expected_.scheme);
311  EXPECT_EQ(client_->getState().group(), expected_.group);
312  EXPECT_EQ(*server_->getState().pskType(), expected_.pskType);
313  EXPECT_EQ(client_->getState().pskMode(), expected_.pskMode);
314  EXPECT_EQ(client_->getState().keyExchangeType(), expected_.clientKexType);
315  EXPECT_EQ(client_->getState().earlyDataType(), expected_.earlyDataType);
316  EXPECT_EQ(client_->getState().alpn(), expected_.alpn);
317  EXPECT_TRUE(
318  certsMatch(client_->getState().clientCert(), expected_.clientCert));
319 
320  EXPECT_EQ(*server_->getState().version(), expected_.version);
321  EXPECT_EQ(*server_->getState().cipher(), expected_.cipher);
322  EXPECT_EQ(server_->getState().sigScheme(), expected_.scheme);
323  EXPECT_EQ(server_->getState().group(), expected_.group);
324  EXPECT_EQ(*server_->getState().pskType(), expected_.pskType);
325  EXPECT_EQ(server_->getState().pskMode(), expected_.pskMode);
326  EXPECT_EQ(server_->getState().keyExchangeType(), expected_.serverKexType);
327  EXPECT_EQ(server_->getState().earlyDataType(), expected_.earlyDataType);
328  EXPECT_EQ(server_->getState().alpn(), expected_.alpn);
329  EXPECT_TRUE(
330  certsMatch(server_->getState().clientCert(), expected_.clientCert));
331  EXPECT_EQ(
332  client_->getState().serverCertCompAlgo(), expected_.serverCertCompAlgo);
333  EXPECT_EQ(
334  server_->getState().serverCertCompAlgo(), expected_.serverCertCompAlgo);
335  }
AsyncFizzServer::UniquePtr server_
folly::Optional< PskKeyExchangeMode > pskMode
folly::Optional< CertificateCompressionAlgorithm > serverCertCompAlgo
#define EXPECT_EQ(val1, val2)
Definition: gtest.h:1922
AsyncFizzClient::UniquePtr client_
folly::Optional< std::string > alpn
static bool certsMatch(const std::shared_ptr< const Cert > &a, const std::shared_ptr< const Cert > &b)
ExpectedParameters expected_
folly::Optional< EarlyDataType > earlyDataType
folly::Optional< NamedGroup > group
std::shared_ptr< const Cert > clientCert
folly::Optional< SignatureScheme > scheme
#define EXPECT_TRUE(condition)
Definition: gtest.h:1859
folly::Optional< KeyExchangeType > clientKexType
folly::Optional< KeyExchangeType > serverKexType

Member Data Documentation

AsyncFizzClient::UniquePtr fizz::test::HandshakeTest::client_
protected

Definition at line 367 of file HandshakeTest.cpp.

fizz::client::test::MockHandshakeCallback fizz::test::HandshakeTest::clientCallback_
protected

Definition at line 372 of file HandshakeTest.cpp.

std::shared_ptr<FizzClientContext> fizz::test::HandshakeTest::clientContext_
protected

Definition at line 365 of file HandshakeTest.cpp.

std::shared_ptr<fizz::ClientExtensions> fizz::test::HandshakeTest::clientExtensions_
protected

Definition at line 377 of file HandshakeTest.cpp.

MockReadCallback fizz::test::HandshakeTest::clientRead_
protected

Definition at line 383 of file HandshakeTest.cpp.

LocalTransport* fizz::test::HandshakeTest::clientTransport_
protected

Definition at line 380 of file HandshakeTest.cpp.

std::shared_ptr<AES128CookieCipher> fizz::test::HandshakeTest::cookieCipher_
protected

Definition at line 370 of file HandshakeTest.cpp.

EventBase fizz::test::HandshakeTest::evb_
protected

Definition at line 364 of file HandshakeTest.cpp.

ExpectedParameters fizz::test::HandshakeTest::expected_
protected

Definition at line 388 of file HandshakeTest.cpp.

folly::test::MockReadCallback fizz::test::HandshakeTest::readCallback_
protected

Definition at line 375 of file HandshakeTest.cpp.

MockReplaySafetyCallback fizz::test::HandshakeTest::replayCallback_
protected

Definition at line 386 of file HandshakeTest.cpp.

AsyncFizzServer::UniquePtr fizz::test::HandshakeTest::server_
protected

Definition at line 368 of file HandshakeTest.cpp.

fizz::server::test::MockHandshakeCallback fizz::test::HandshakeTest::serverCallback_
protected

Definition at line 373 of file HandshakeTest.cpp.

std::shared_ptr<FizzServerContext> fizz::test::HandshakeTest::serverContext_
protected

Definition at line 366 of file HandshakeTest.cpp.

std::shared_ptr<fizz::ServerExtensions> fizz::test::HandshakeTest::serverExtensions_
protected

Definition at line 378 of file HandshakeTest.cpp.

MockReadCallback fizz::test::HandshakeTest::serverRead_
protected

Definition at line 384 of file HandshakeTest.cpp.

LocalTransport* fizz::test::HandshakeTest::serverTransport_
protected

Definition at line 381 of file HandshakeTest.cpp.


The documentation for this class was generated from the following file: