mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-26 02:17:34 +09:00
Update NSS to 3.36.4-RTM
This commit is contained in:
parent
099459dec0
commit
fe96962962
148 changed files with 5550 additions and 5825 deletions
|
|
@ -60,7 +60,7 @@ TEST_P(TlsConnectGenericPre13, ConnectResumed) {
|
|||
Connect();
|
||||
}
|
||||
|
||||
TEST_P(TlsConnectGeneric, ConnectClientCacheDisabled) {
|
||||
TEST_P(TlsConnectGenericResumption, ConnectClientCacheDisabled) {
|
||||
ConfigureSessionCache(RESUME_NONE, RESUME_SESSIONID);
|
||||
Connect();
|
||||
SendReceive();
|
||||
|
|
@ -71,7 +71,7 @@ TEST_P(TlsConnectGeneric, ConnectClientCacheDisabled) {
|
|||
SendReceive();
|
||||
}
|
||||
|
||||
TEST_P(TlsConnectGeneric, ConnectServerCacheDisabled) {
|
||||
TEST_P(TlsConnectGenericResumption, ConnectServerCacheDisabled) {
|
||||
ConfigureSessionCache(RESUME_SESSIONID, RESUME_NONE);
|
||||
Connect();
|
||||
SendReceive();
|
||||
|
|
@ -82,7 +82,7 @@ TEST_P(TlsConnectGeneric, ConnectServerCacheDisabled) {
|
|||
SendReceive();
|
||||
}
|
||||
|
||||
TEST_P(TlsConnectGeneric, ConnectSessionCacheDisabled) {
|
||||
TEST_P(TlsConnectGenericResumption, ConnectSessionCacheDisabled) {
|
||||
ConfigureSessionCache(RESUME_NONE, RESUME_NONE);
|
||||
Connect();
|
||||
SendReceive();
|
||||
|
|
@ -93,7 +93,7 @@ TEST_P(TlsConnectGeneric, ConnectSessionCacheDisabled) {
|
|||
SendReceive();
|
||||
}
|
||||
|
||||
TEST_P(TlsConnectGeneric, ConnectResumeSupportBoth) {
|
||||
TEST_P(TlsConnectGenericResumption, ConnectResumeSupportBoth) {
|
||||
// This prefers tickets.
|
||||
ConfigureSessionCache(RESUME_BOTH, RESUME_BOTH);
|
||||
Connect();
|
||||
|
|
@ -106,7 +106,7 @@ TEST_P(TlsConnectGeneric, ConnectResumeSupportBoth) {
|
|||
SendReceive();
|
||||
}
|
||||
|
||||
TEST_P(TlsConnectGeneric, ConnectResumeClientTicketServerBoth) {
|
||||
TEST_P(TlsConnectGenericResumption, ConnectResumeClientTicketServerBoth) {
|
||||
// This causes no resumption because the client needs the
|
||||
// session cache to resume even with tickets.
|
||||
ConfigureSessionCache(RESUME_TICKET, RESUME_BOTH);
|
||||
|
|
@ -120,7 +120,7 @@ TEST_P(TlsConnectGeneric, ConnectResumeClientTicketServerBoth) {
|
|||
SendReceive();
|
||||
}
|
||||
|
||||
TEST_P(TlsConnectGeneric, ConnectResumeClientBothTicketServerTicket) {
|
||||
TEST_P(TlsConnectGenericResumption, ConnectResumeClientBothTicketServerTicket) {
|
||||
// This causes a ticket resumption.
|
||||
ConfigureSessionCache(RESUME_BOTH, RESUME_TICKET);
|
||||
Connect();
|
||||
|
|
@ -133,7 +133,7 @@ TEST_P(TlsConnectGeneric, ConnectResumeClientBothTicketServerTicket) {
|
|||
SendReceive();
|
||||
}
|
||||
|
||||
TEST_P(TlsConnectGeneric, ConnectResumeClientServerTicketOnly) {
|
||||
TEST_P(TlsConnectGenericResumption, ConnectResumeClientServerTicketOnly) {
|
||||
// This causes no resumption because the client needs the
|
||||
// session cache to resume even with tickets.
|
||||
ConfigureSessionCache(RESUME_TICKET, RESUME_TICKET);
|
||||
|
|
@ -147,7 +147,7 @@ TEST_P(TlsConnectGeneric, ConnectResumeClientServerTicketOnly) {
|
|||
SendReceive();
|
||||
}
|
||||
|
||||
TEST_P(TlsConnectGeneric, ConnectResumeClientBothServerNone) {
|
||||
TEST_P(TlsConnectGenericResumption, ConnectResumeClientBothServerNone) {
|
||||
ConfigureSessionCache(RESUME_BOTH, RESUME_NONE);
|
||||
Connect();
|
||||
SendReceive();
|
||||
|
|
@ -159,7 +159,7 @@ TEST_P(TlsConnectGeneric, ConnectResumeClientBothServerNone) {
|
|||
SendReceive();
|
||||
}
|
||||
|
||||
TEST_P(TlsConnectGeneric, ConnectResumeClientNoneServerBoth) {
|
||||
TEST_P(TlsConnectGenericResumption, ConnectResumeClientNoneServerBoth) {
|
||||
ConfigureSessionCache(RESUME_NONE, RESUME_BOTH);
|
||||
Connect();
|
||||
SendReceive();
|
||||
|
|
@ -202,7 +202,7 @@ TEST_P(TlsConnectGeneric, ConnectResumeClientBothTicketServerTicketForget) {
|
|||
SendReceive();
|
||||
}
|
||||
|
||||
TEST_P(TlsConnectGeneric, ConnectWithExpiredTicketAtClient) {
|
||||
TEST_P(TlsConnectGenericResumption, ConnectWithExpiredTicketAtClient) {
|
||||
SSLInt_SetTicketLifetime(1); // one second
|
||||
// This causes a ticket resumption.
|
||||
ConfigureSessionCache(RESUME_BOTH, RESUME_TICKET);
|
||||
|
|
@ -219,8 +219,7 @@ TEST_P(TlsConnectGeneric, ConnectWithExpiredTicketAtClient) {
|
|||
SSLExtensionType xtn = (version_ >= SSL_LIBRARY_VERSION_TLS_1_3)
|
||||
? ssl_tls13_pre_shared_key_xtn
|
||||
: ssl_session_ticket_xtn;
|
||||
auto capture = std::make_shared<TlsExtensionCapture>(xtn);
|
||||
client_->SetPacketFilter(capture);
|
||||
auto capture = MakeTlsFilter<TlsExtensionCapture>(client_, xtn);
|
||||
Connect();
|
||||
|
||||
if (version_ >= SSL_LIBRARY_VERSION_TLS_1_3) {
|
||||
|
|
@ -245,8 +244,7 @@ TEST_P(TlsConnectGeneric, ConnectWithExpiredTicketAtServer) {
|
|||
SSLExtensionType xtn = (version_ >= SSL_LIBRARY_VERSION_TLS_1_3)
|
||||
? ssl_tls13_pre_shared_key_xtn
|
||||
: ssl_session_ticket_xtn;
|
||||
auto capture = std::make_shared<TlsExtensionCapture>(xtn);
|
||||
client_->SetPacketFilter(capture);
|
||||
auto capture = MakeTlsFilter<TlsExtensionCapture>(client_, xtn);
|
||||
StartConnect();
|
||||
client_->Handshake();
|
||||
EXPECT_TRUE(capture->captured());
|
||||
|
|
@ -327,25 +325,23 @@ TEST_P(TlsConnectGeneric, ServerSNICertTypeSwitch) {
|
|||
|
||||
// Prior to TLS 1.3, we were not fully ephemeral; though 1.3 fixes that
|
||||
TEST_P(TlsConnectGenericPre13, ConnectEcdheTwiceReuseKey) {
|
||||
auto i1 = std::make_shared<TlsInspectorRecordHandshakeMessage>(
|
||||
kTlsHandshakeServerKeyExchange);
|
||||
server_->SetPacketFilter(i1);
|
||||
auto filter = MakeTlsFilter<TlsHandshakeRecorder>(
|
||||
server_, kTlsHandshakeServerKeyExchange);
|
||||
Connect();
|
||||
CheckKeys();
|
||||
TlsServerKeyExchangeEcdhe dhe1;
|
||||
EXPECT_TRUE(dhe1.Parse(i1->buffer()));
|
||||
EXPECT_TRUE(dhe1.Parse(filter->buffer()));
|
||||
|
||||
// Restart
|
||||
Reset();
|
||||
auto i2 = std::make_shared<TlsInspectorRecordHandshakeMessage>(
|
||||
kTlsHandshakeServerKeyExchange);
|
||||
server_->SetPacketFilter(i2);
|
||||
auto filter2 = MakeTlsFilter<TlsHandshakeRecorder>(
|
||||
server_, kTlsHandshakeServerKeyExchange);
|
||||
ConfigureSessionCache(RESUME_NONE, RESUME_NONE);
|
||||
Connect();
|
||||
CheckKeys();
|
||||
|
||||
TlsServerKeyExchangeEcdhe dhe2;
|
||||
EXPECT_TRUE(dhe2.Parse(i2->buffer()));
|
||||
EXPECT_TRUE(dhe2.Parse(filter2->buffer()));
|
||||
|
||||
// Make sure they are the same.
|
||||
EXPECT_EQ(dhe1.public_key_.len(), dhe2.public_key_.len());
|
||||
|
|
@ -356,26 +352,24 @@ TEST_P(TlsConnectGenericPre13, ConnectEcdheTwiceReuseKey) {
|
|||
// This test parses the ServerKeyExchange, which isn't in 1.3
|
||||
TEST_P(TlsConnectGenericPre13, ConnectEcdheTwiceNewKey) {
|
||||
server_->SetOption(SSL_REUSE_SERVER_ECDHE_KEY, PR_FALSE);
|
||||
auto i1 = std::make_shared<TlsInspectorRecordHandshakeMessage>(
|
||||
kTlsHandshakeServerKeyExchange);
|
||||
server_->SetPacketFilter(i1);
|
||||
auto filter = MakeTlsFilter<TlsHandshakeRecorder>(
|
||||
server_, kTlsHandshakeServerKeyExchange);
|
||||
Connect();
|
||||
CheckKeys();
|
||||
TlsServerKeyExchangeEcdhe dhe1;
|
||||
EXPECT_TRUE(dhe1.Parse(i1->buffer()));
|
||||
EXPECT_TRUE(dhe1.Parse(filter->buffer()));
|
||||
|
||||
// Restart
|
||||
Reset();
|
||||
server_->SetOption(SSL_REUSE_SERVER_ECDHE_KEY, PR_FALSE);
|
||||
auto i2 = std::make_shared<TlsInspectorRecordHandshakeMessage>(
|
||||
kTlsHandshakeServerKeyExchange);
|
||||
server_->SetPacketFilter(i2);
|
||||
auto filter2 = MakeTlsFilter<TlsHandshakeRecorder>(
|
||||
server_, kTlsHandshakeServerKeyExchange);
|
||||
ConfigureSessionCache(RESUME_NONE, RESUME_NONE);
|
||||
Connect();
|
||||
CheckKeys();
|
||||
|
||||
TlsServerKeyExchangeEcdhe dhe2;
|
||||
EXPECT_TRUE(dhe2.Parse(i2->buffer()));
|
||||
EXPECT_TRUE(dhe2.Parse(filter2->buffer()));
|
||||
|
||||
// Make sure they are different.
|
||||
EXPECT_FALSE((dhe1.public_key_.len() == dhe2.public_key_.len()) &&
|
||||
|
|
@ -397,7 +391,7 @@ TEST_P(TlsConnectTls13, TestTls13ResumeDifferentGroup) {
|
|||
server_->ConfigNamedGroups(kFFDHEGroups);
|
||||
Connect();
|
||||
CheckKeys(ssl_kea_dh, ssl_grp_ffdhe_2048, ssl_auth_rsa_sign,
|
||||
ssl_sig_rsa_pss_sha256);
|
||||
ssl_sig_rsa_pss_rsae_sha256);
|
||||
}
|
||||
|
||||
// We need to enable different cipher suites at different times in the following
|
||||
|
|
@ -417,7 +411,7 @@ static uint16_t ChooseAnotherCipher(uint16_t version) {
|
|||
}
|
||||
|
||||
// Test that we don't resume when we can't negotiate the same cipher.
|
||||
TEST_P(TlsConnectGeneric, TestResumeClientDifferentCipher) {
|
||||
TEST_P(TlsConnectGenericResumption, TestResumeClientDifferentCipher) {
|
||||
ConfigureSessionCache(RESUME_BOTH, RESUME_TICKET);
|
||||
client_->EnableSingleCipher(ChooseOneCipher(version_));
|
||||
Connect();
|
||||
|
|
@ -434,15 +428,15 @@ TEST_P(TlsConnectGeneric, TestResumeClientDifferentCipher) {
|
|||
} else {
|
||||
ticket_extension = ssl_session_ticket_xtn;
|
||||
}
|
||||
auto ticket_capture = std::make_shared<TlsExtensionCapture>(ticket_extension);
|
||||
client_->SetPacketFilter(ticket_capture);
|
||||
auto ticket_capture =
|
||||
MakeTlsFilter<TlsExtensionCapture>(client_, ticket_extension);
|
||||
Connect();
|
||||
CheckKeys(ssl_kea_ecdh, ssl_auth_rsa_sign);
|
||||
EXPECT_EQ(0U, ticket_capture->extension().len());
|
||||
}
|
||||
|
||||
// Test that we don't resume when we can't negotiate the same cipher.
|
||||
TEST_P(TlsConnectGeneric, TestResumeServerDifferentCipher) {
|
||||
TEST_P(TlsConnectGenericResumption, TestResumeServerDifferentCipher) {
|
||||
ConfigureSessionCache(RESUME_BOTH, RESUME_TICKET);
|
||||
server_->EnableSingleCipher(ChooseOneCipher(version_));
|
||||
Connect();
|
||||
|
|
@ -468,8 +462,8 @@ TEST_P(TlsConnectStream, TestResumptionOverrideCipher) {
|
|||
|
||||
Reset();
|
||||
ConfigureSessionCache(RESUME_BOTH, RESUME_TICKET);
|
||||
server_->SetPacketFilter(std::make_shared<SelectedCipherSuiteReplacer>(
|
||||
ChooseAnotherCipher(version_)));
|
||||
MakeTlsFilter<SelectedCipherSuiteReplacer>(server_,
|
||||
ChooseAnotherCipher(version_));
|
||||
|
||||
if (version_ >= SSL_LIBRARY_VERSION_TLS_1_3) {
|
||||
client_->ExpectSendAlert(kTlsAlertIllegalParameter);
|
||||
|
|
@ -490,8 +484,10 @@ TEST_P(TlsConnectStream, TestResumptionOverrideCipher) {
|
|||
|
||||
class SelectedVersionReplacer : public TlsHandshakeFilter {
|
||||
public:
|
||||
SelectedVersionReplacer(uint16_t version)
|
||||
: TlsHandshakeFilter({kTlsHandshakeServerHello}), version_(version) {}
|
||||
SelectedVersionReplacer(const std::shared_ptr<TlsAgent>& agent,
|
||||
uint16_t version)
|
||||
: TlsHandshakeFilter(agent, {kTlsHandshakeServerHello}),
|
||||
version_(version) {}
|
||||
|
||||
protected:
|
||||
PacketFilter::Action FilterHandshake(const HandshakeHeader& header,
|
||||
|
|
@ -543,8 +539,7 @@ TEST_P(TlsConnectGenericPre13, TestResumptionOverrideVersion) {
|
|||
// Enable the lower version on the client.
|
||||
client_->SetVersionRange(version_ - 1, version_);
|
||||
server_->EnableSingleCipher(TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA);
|
||||
server_->SetPacketFilter(
|
||||
std::make_shared<SelectedVersionReplacer>(override_version));
|
||||
MakeTlsFilter<SelectedVersionReplacer>(server_, override_version);
|
||||
|
||||
ConnectExpectAlert(client_, kTlsAlertHandshakeFailure);
|
||||
client_->CheckErrorCode(SSL_ERROR_RX_MALFORMED_SERVER_HELLO);
|
||||
|
|
@ -567,12 +562,12 @@ TEST_F(TlsConnectTest, TestTls13ResumptionTwice) {
|
|||
ConfigureSessionCache(RESUME_BOTH, RESUME_TICKET);
|
||||
ConfigureVersion(SSL_LIBRARY_VERSION_TLS_1_3);
|
||||
ExpectResumption(RESUME_TICKET);
|
||||
auto c1 = std::make_shared<TlsExtensionCapture>(ssl_tls13_pre_shared_key_xtn);
|
||||
client_->SetPacketFilter(c1);
|
||||
auto c1 =
|
||||
MakeTlsFilter<TlsExtensionCapture>(client_, ssl_tls13_pre_shared_key_xtn);
|
||||
Connect();
|
||||
SendReceive();
|
||||
CheckKeys(ssl_kea_ecdh, ssl_grp_ec_curve25519, ssl_auth_rsa_sign,
|
||||
ssl_sig_rsa_pss_sha256);
|
||||
ssl_sig_rsa_pss_rsae_sha256);
|
||||
// The filter will go away when we reset, so save the captured extension.
|
||||
DataBuffer initialTicket(c1->extension());
|
||||
ASSERT_LT(0U, initialTicket.len());
|
||||
|
|
@ -584,13 +579,13 @@ TEST_F(TlsConnectTest, TestTls13ResumptionTwice) {
|
|||
ClearStats();
|
||||
ConfigureSessionCache(RESUME_BOTH, RESUME_TICKET);
|
||||
ConfigureVersion(SSL_LIBRARY_VERSION_TLS_1_3);
|
||||
auto c2 = std::make_shared<TlsExtensionCapture>(ssl_tls13_pre_shared_key_xtn);
|
||||
client_->SetPacketFilter(c2);
|
||||
auto c2 =
|
||||
MakeTlsFilter<TlsExtensionCapture>(client_, ssl_tls13_pre_shared_key_xtn);
|
||||
ExpectResumption(RESUME_TICKET);
|
||||
Connect();
|
||||
SendReceive();
|
||||
CheckKeys(ssl_kea_ecdh, ssl_grp_ec_curve25519, ssl_auth_rsa_sign,
|
||||
ssl_sig_rsa_pss_sha256);
|
||||
ssl_sig_rsa_pss_rsae_sha256);
|
||||
ASSERT_LT(0U, c2->extension().len());
|
||||
|
||||
ScopedCERTCertificate cert2(SSL_PeerCertificate(client_->ssl_fd()));
|
||||
|
|
@ -656,9 +651,9 @@ TEST_F(TlsConnectTest, TestTls13ResumptionDuplicateNSTWithToken) {
|
|||
ConfigureSessionCache(RESUME_BOTH, RESUME_TICKET);
|
||||
ConfigureVersion(SSL_LIBRARY_VERSION_TLS_1_3);
|
||||
|
||||
auto nst_capture = std::make_shared<TlsInspectorRecordHandshakeMessage>(
|
||||
ssl_hs_new_session_ticket);
|
||||
server_->SetTlsRecordFilter(nst_capture);
|
||||
auto nst_capture =
|
||||
MakeTlsFilter<TlsHandshakeRecorder>(server_, ssl_hs_new_session_ticket);
|
||||
nst_capture->EnableDecryption();
|
||||
Connect();
|
||||
|
||||
// Clear the session ticket keys to invalidate the old ticket.
|
||||
|
|
@ -679,8 +674,7 @@ TEST_F(TlsConnectTest, TestTls13ResumptionDuplicateNSTWithToken) {
|
|||
ExpectResumption(RESUME_TICKET);
|
||||
|
||||
auto psk_capture =
|
||||
std::make_shared<TlsExtensionCapture>(ssl_tls13_pre_shared_key_xtn);
|
||||
client_->SetPacketFilter(psk_capture);
|
||||
MakeTlsFilter<TlsExtensionCapture>(client_, ssl_tls13_pre_shared_key_xtn);
|
||||
Connect();
|
||||
SendReceive();
|
||||
|
||||
|
|
@ -696,9 +690,9 @@ TEST_F(TlsConnectTest, SendSessionTicketWithTicketsDisabled) {
|
|||
EXPECT_EQ(SECSuccess, SSL_OptionSet(server_->ssl_fd(),
|
||||
SSL_ENABLE_SESSION_TICKETS, PR_FALSE));
|
||||
|
||||
auto nst_capture = std::make_shared<TlsInspectorRecordHandshakeMessage>(
|
||||
ssl_hs_new_session_ticket);
|
||||
server_->SetTlsRecordFilter(nst_capture);
|
||||
auto nst_capture =
|
||||
MakeTlsFilter<TlsHandshakeRecorder>(server_, ssl_hs_new_session_ticket);
|
||||
nst_capture->EnableDecryption();
|
||||
Connect();
|
||||
|
||||
EXPECT_EQ(0U, nst_capture->buffer().len()) << "expect nothing captured yet";
|
||||
|
|
@ -715,8 +709,7 @@ TEST_F(TlsConnectTest, SendSessionTicketWithTicketsDisabled) {
|
|||
ExpectResumption(RESUME_TICKET);
|
||||
|
||||
auto psk_capture =
|
||||
std::make_shared<TlsExtensionCapture>(ssl_tls13_pre_shared_key_xtn);
|
||||
client_->SetPacketFilter(psk_capture);
|
||||
MakeTlsFilter<TlsExtensionCapture>(client_, ssl_tls13_pre_shared_key_xtn);
|
||||
Connect();
|
||||
SendReceive();
|
||||
|
||||
|
|
@ -819,20 +812,20 @@ TEST_F(TlsConnectTest, TestTls13ResumptionForcedDowngrade) {
|
|||
// We will eventually fail the (sid.version == SH.version) check.
|
||||
std::vector<std::shared_ptr<PacketFilter>> filters;
|
||||
filters.push_back(std::make_shared<SelectedCipherSuiteReplacer>(
|
||||
TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256));
|
||||
filters.push_back(
|
||||
std::make_shared<SelectedVersionReplacer>(SSL_LIBRARY_VERSION_TLS_1_2));
|
||||
server_, TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256));
|
||||
filters.push_back(std::make_shared<SelectedVersionReplacer>(
|
||||
server_, SSL_LIBRARY_VERSION_TLS_1_2));
|
||||
|
||||
// Drop a bunch of extensions so that we get past the SH processing. The
|
||||
// version extension says TLS 1.3, which is counter to our goal, the others
|
||||
// are not permitted in TLS 1.2 handshakes.
|
||||
filters.push_back(std::make_shared<TlsExtensionDropper>(
|
||||
server_, ssl_tls13_supported_versions_xtn));
|
||||
filters.push_back(
|
||||
std::make_shared<TlsExtensionDropper>(ssl_tls13_supported_versions_xtn));
|
||||
filters.push_back(
|
||||
std::make_shared<TlsExtensionDropper>(ssl_tls13_key_share_xtn));
|
||||
filters.push_back(
|
||||
std::make_shared<TlsExtensionDropper>(ssl_tls13_pre_shared_key_xtn));
|
||||
server_->SetPacketFilter(std::make_shared<ChainedPacketFilter>(filters));
|
||||
std::make_shared<TlsExtensionDropper>(server_, ssl_tls13_key_share_xtn));
|
||||
filters.push_back(std::make_shared<TlsExtensionDropper>(
|
||||
server_, ssl_tls13_pre_shared_key_xtn));
|
||||
server_->SetFilter(std::make_shared<ChainedPacketFilter>(filters));
|
||||
|
||||
// The client here generates an unexpected_message alert when it receives an
|
||||
// encrypted handshake message from the server (EncryptedExtension). The
|
||||
|
|
@ -845,13 +838,13 @@ TEST_F(TlsConnectTest, TestTls13ResumptionForcedDowngrade) {
|
|||
server_->CheckErrorCode(SSL_ERROR_BAD_MAC_READ);
|
||||
}
|
||||
|
||||
TEST_P(TlsConnectGeneric, ReConnectTicket) {
|
||||
TEST_P(TlsConnectGenericResumption, ReConnectTicket) {
|
||||
ConfigureSessionCache(RESUME_BOTH, RESUME_BOTH);
|
||||
server_->EnableSingleCipher(ChooseOneCipher(version_));
|
||||
Connect();
|
||||
SendReceive();
|
||||
CheckKeys(ssl_kea_ecdh, ssl_grp_ec_curve25519, ssl_auth_rsa_sign,
|
||||
ssl_sig_rsa_pss_sha256);
|
||||
ssl_sig_rsa_pss_rsae_sha256);
|
||||
// Resume
|
||||
Reset();
|
||||
ConfigureSessionCache(RESUME_BOTH, RESUME_BOTH);
|
||||
|
|
@ -859,7 +852,7 @@ TEST_P(TlsConnectGeneric, ReConnectTicket) {
|
|||
Connect();
|
||||
// Only the client knows this.
|
||||
CheckKeysResumption(ssl_kea_ecdh, ssl_grp_none, ssl_grp_ec_curve25519,
|
||||
ssl_auth_rsa_sign, ssl_sig_rsa_pss_sha256);
|
||||
ssl_auth_rsa_sign, ssl_sig_rsa_pss_rsae_sha256);
|
||||
}
|
||||
|
||||
TEST_P(TlsConnectGenericPre13, ReConnectCache) {
|
||||
|
|
@ -868,22 +861,22 @@ TEST_P(TlsConnectGenericPre13, ReConnectCache) {
|
|||
Connect();
|
||||
SendReceive();
|
||||
CheckKeys(ssl_kea_ecdh, ssl_grp_ec_curve25519, ssl_auth_rsa_sign,
|
||||
ssl_sig_rsa_pss_sha256);
|
||||
ssl_sig_rsa_pss_rsae_sha256);
|
||||
// Resume
|
||||
Reset();
|
||||
ExpectResumption(RESUME_SESSIONID);
|
||||
Connect();
|
||||
CheckKeysResumption(ssl_kea_ecdh, ssl_grp_none, ssl_grp_ec_curve25519,
|
||||
ssl_auth_rsa_sign, ssl_sig_rsa_pss_sha256);
|
||||
ssl_auth_rsa_sign, ssl_sig_rsa_pss_rsae_sha256);
|
||||
}
|
||||
|
||||
TEST_P(TlsConnectGeneric, ReConnectAgainTicket) {
|
||||
TEST_P(TlsConnectGenericResumption, ReConnectAgainTicket) {
|
||||
ConfigureSessionCache(RESUME_BOTH, RESUME_BOTH);
|
||||
server_->EnableSingleCipher(ChooseOneCipher(version_));
|
||||
Connect();
|
||||
SendReceive();
|
||||
CheckKeys(ssl_kea_ecdh, ssl_grp_ec_curve25519, ssl_auth_rsa_sign,
|
||||
ssl_sig_rsa_pss_sha256);
|
||||
ssl_sig_rsa_pss_rsae_sha256);
|
||||
// Resume
|
||||
Reset();
|
||||
ConfigureSessionCache(RESUME_BOTH, RESUME_BOTH);
|
||||
|
|
@ -891,7 +884,7 @@ TEST_P(TlsConnectGeneric, ReConnectAgainTicket) {
|
|||
Connect();
|
||||
// Only the client knows this.
|
||||
CheckKeysResumption(ssl_kea_ecdh, ssl_grp_none, ssl_grp_ec_curve25519,
|
||||
ssl_auth_rsa_sign, ssl_sig_rsa_pss_sha256);
|
||||
ssl_auth_rsa_sign, ssl_sig_rsa_pss_rsae_sha256);
|
||||
// Resume connection again
|
||||
Reset();
|
||||
ConfigureSessionCache(RESUME_BOTH, RESUME_BOTH);
|
||||
|
|
@ -899,7 +892,140 @@ TEST_P(TlsConnectGeneric, ReConnectAgainTicket) {
|
|||
Connect();
|
||||
// Only the client knows this.
|
||||
CheckKeysResumption(ssl_kea_ecdh, ssl_grp_none, ssl_grp_ec_curve25519,
|
||||
ssl_auth_rsa_sign, ssl_sig_rsa_pss_sha256);
|
||||
ssl_auth_rsa_sign, ssl_sig_rsa_pss_rsae_sha256);
|
||||
}
|
||||
|
||||
void CheckGetInfoResult(uint32_t alpnSize, uint32_t earlyDataSize,
|
||||
ScopedCERTCertificate& cert,
|
||||
ScopedSSLResumptionTokenInfo& token) {
|
||||
ASSERT_TRUE(cert);
|
||||
ASSERT_TRUE(token->peerCert);
|
||||
|
||||
// Check that the server cert is the correct one.
|
||||
ASSERT_EQ(cert->derCert.len, token->peerCert->derCert.len);
|
||||
EXPECT_EQ(0, memcmp(cert->derCert.data, token->peerCert->derCert.data,
|
||||
cert->derCert.len));
|
||||
|
||||
ASSERT_EQ(alpnSize, token->alpnSelectionLen);
|
||||
EXPECT_EQ(0, memcmp("a", token->alpnSelection, token->alpnSelectionLen));
|
||||
|
||||
ASSERT_EQ(earlyDataSize, token->maxEarlyDataSize);
|
||||
}
|
||||
|
||||
TEST_P(TlsConnectGenericResumptionToken, ConnectResumeGetInfo) {
|
||||
ConfigureSessionCache(RESUME_BOTH, RESUME_BOTH);
|
||||
Connect();
|
||||
SendReceive();
|
||||
|
||||
Reset();
|
||||
ConfigureSessionCache(RESUME_BOTH, RESUME_BOTH);
|
||||
ExpectResumption(RESUME_TICKET);
|
||||
|
||||
StartConnect();
|
||||
ASSERT_TRUE(client_->MaybeSetResumptionToken());
|
||||
|
||||
// Get resumption token infos
|
||||
SSLResumptionTokenInfo tokenInfo = {0};
|
||||
ScopedSSLResumptionTokenInfo token(&tokenInfo);
|
||||
client_->GetTokenInfo(token);
|
||||
ScopedCERTCertificate cert(
|
||||
PK11_FindCertFromNickname(server_->name().c_str(), nullptr));
|
||||
|
||||
CheckGetInfoResult(0, 0, cert, token);
|
||||
|
||||
Handshake();
|
||||
CheckConnected();
|
||||
|
||||
SendReceive();
|
||||
}
|
||||
|
||||
TEST_P(TlsConnectGenericResumptionToken, ConnectResumeGetInfoAlpn) {
|
||||
EnableAlpn();
|
||||
ConfigureSessionCache(RESUME_BOTH, RESUME_BOTH);
|
||||
Connect();
|
||||
CheckAlpn("a");
|
||||
SendReceive();
|
||||
|
||||
Reset();
|
||||
EnableAlpn();
|
||||
ConfigureSessionCache(RESUME_BOTH, RESUME_BOTH);
|
||||
ExpectResumption(RESUME_TICKET);
|
||||
|
||||
StartConnect();
|
||||
ASSERT_TRUE(client_->MaybeSetResumptionToken());
|
||||
|
||||
// Get resumption token infos
|
||||
SSLResumptionTokenInfo tokenInfo = {0};
|
||||
ScopedSSLResumptionTokenInfo token(&tokenInfo);
|
||||
client_->GetTokenInfo(token);
|
||||
ScopedCERTCertificate cert(
|
||||
PK11_FindCertFromNickname(server_->name().c_str(), nullptr));
|
||||
|
||||
CheckGetInfoResult(1, 0, cert, token);
|
||||
|
||||
Handshake();
|
||||
CheckConnected();
|
||||
CheckAlpn("a");
|
||||
|
||||
SendReceive();
|
||||
}
|
||||
|
||||
TEST_P(TlsConnectTls13ResumptionToken, ConnectResumeGetInfoZeroRtt) {
|
||||
EnableAlpn();
|
||||
SSLInt_RolloverAntiReplay();
|
||||
ConfigureSessionCache(RESUME_BOTH, RESUME_BOTH);
|
||||
server_->Set0RttEnabled(true);
|
||||
Connect();
|
||||
CheckAlpn("a");
|
||||
SendReceive();
|
||||
|
||||
Reset();
|
||||
EnableAlpn();
|
||||
ConfigureSessionCache(RESUME_BOTH, RESUME_BOTH);
|
||||
ExpectResumption(RESUME_TICKET);
|
||||
|
||||
StartConnect();
|
||||
server_->Set0RttEnabled(true);
|
||||
client_->Set0RttEnabled(true);
|
||||
ASSERT_TRUE(client_->MaybeSetResumptionToken());
|
||||
|
||||
// Get resumption token infos
|
||||
SSLResumptionTokenInfo tokenInfo = {0};
|
||||
ScopedSSLResumptionTokenInfo token(&tokenInfo);
|
||||
client_->GetTokenInfo(token);
|
||||
ScopedCERTCertificate cert(
|
||||
PK11_FindCertFromNickname(server_->name().c_str(), nullptr));
|
||||
|
||||
CheckGetInfoResult(1, 1024, cert, token);
|
||||
|
||||
ZeroRttSendReceive(true, true);
|
||||
Handshake();
|
||||
ExpectEarlyDataAccepted(true);
|
||||
CheckConnected();
|
||||
CheckAlpn("a");
|
||||
|
||||
SendReceive();
|
||||
}
|
||||
|
||||
// Resumption on sessions with client authentication only works with internal
|
||||
// caching.
|
||||
TEST_P(TlsConnectGenericResumption, ConnectResumeClientAuth) {
|
||||
ConfigureSessionCache(RESUME_BOTH, RESUME_BOTH);
|
||||
client_->SetupClientAuth();
|
||||
server_->RequestClientAuth(true);
|
||||
Connect();
|
||||
SendReceive();
|
||||
EXPECT_FALSE(client_->resumption_callback_called());
|
||||
|
||||
Reset();
|
||||
ConfigureSessionCache(RESUME_BOTH, RESUME_BOTH);
|
||||
if (use_external_cache()) {
|
||||
ExpectResumption(RESUME_NONE);
|
||||
} else {
|
||||
ExpectResumption(RESUME_TICKET);
|
||||
}
|
||||
Connect();
|
||||
SendReceive();
|
||||
}
|
||||
|
||||
} // namespace nss_test
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue