mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-25 18:07:31 +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
|
|
@ -67,10 +67,7 @@ class Tls13CompatTest : public TlsConnectStreamTls13 {
|
|||
|
||||
private:
|
||||
struct Recorders {
|
||||
Recorders()
|
||||
: records_(new TlsRecordRecorder()),
|
||||
hello_(new TlsInspectorRecordHandshakeMessage(std::set<uint8_t>(
|
||||
{kTlsHandshakeClientHello, kTlsHandshakeServerHello}))) {}
|
||||
Recorders() : records_(nullptr), hello_(nullptr) {}
|
||||
|
||||
uint8_t session_id_length() const {
|
||||
// session_id is always after version (2) and random (32).
|
||||
|
|
@ -91,12 +88,22 @@ class Tls13CompatTest : public TlsConnectStreamTls13 {
|
|||
}
|
||||
|
||||
void Install(std::shared_ptr<TlsAgent>& agent) {
|
||||
agent->SetPacketFilter(std::make_shared<ChainedPacketFilter>(
|
||||
if (records_ && records_->agent() == agent) {
|
||||
// Avoid replacing the filters if they are already installed on this
|
||||
// agent. This ensures that InstallFilters() can be used after
|
||||
// MakeNewServer() without losing state on the client filters.
|
||||
return;
|
||||
}
|
||||
records_.reset(new TlsRecordRecorder(agent));
|
||||
hello_.reset(new TlsHandshakeRecorder(
|
||||
agent, std::set<uint8_t>(
|
||||
{kTlsHandshakeClientHello, kTlsHandshakeServerHello})));
|
||||
agent->SetFilter(std::make_shared<ChainedPacketFilter>(
|
||||
ChainedPacketFilterInit({records_, hello_})));
|
||||
}
|
||||
|
||||
std::shared_ptr<TlsRecordRecorder> records_;
|
||||
std::shared_ptr<TlsInspectorRecordHandshakeMessage> hello_;
|
||||
std::shared_ptr<TlsHandshakeRecorder> hello_;
|
||||
};
|
||||
|
||||
void CheckRecordsAreTls12(const std::string& agent,
|
||||
|
|
@ -171,16 +178,20 @@ TEST_F(Tls13CompatTest, EnabledStatelessHrr) {
|
|||
server_->StartConnect();
|
||||
client_->Handshake();
|
||||
server_->Handshake();
|
||||
|
||||
// The server should send CCS before HRR.
|
||||
CheckForCCS(false, true);
|
||||
|
||||
// A new server should just work, but not send another CCS.
|
||||
// A new server should complete the handshake, and not send CCS.
|
||||
MakeNewServer();
|
||||
InstallFilters();
|
||||
server_->ConfigNamedGroups({ssl_grp_ec_secp384r1});
|
||||
|
||||
Handshake();
|
||||
CheckConnected();
|
||||
CheckForCompatHandshake();
|
||||
CheckRecordVersions();
|
||||
CheckHelloVersions();
|
||||
CheckForCCS(true, false);
|
||||
}
|
||||
|
||||
TEST_F(Tls13CompatTest, EnabledHrrZeroRtt) {
|
||||
|
|
@ -262,10 +273,8 @@ TEST_F(TlsConnectStreamTls13, ChangeCipherSpecBeforeClientHello12) {
|
|||
TEST_F(TlsConnectDatagram13, CompatModeDtlsClient) {
|
||||
EnsureTlsSetup();
|
||||
client_->SetOption(SSL_ENABLE_TLS13_COMPAT_MODE, PR_TRUE);
|
||||
auto client_records = std::make_shared<TlsRecordRecorder>();
|
||||
client_->SetPacketFilter(client_records);
|
||||
auto server_records = std::make_shared<TlsRecordRecorder>();
|
||||
server_->SetPacketFilter(server_records);
|
||||
auto client_records = MakeTlsFilter<TlsRecordRecorder>(client_);
|
||||
auto server_records = MakeTlsFilter<TlsRecordRecorder>(server_);
|
||||
Connect();
|
||||
|
||||
ASSERT_EQ(2U, client_records->count()); // CH, Fin
|
||||
|
|
@ -283,7 +292,8 @@ TEST_F(TlsConnectDatagram13, CompatModeDtlsClient) {
|
|||
|
||||
class AddSessionIdFilter : public TlsHandshakeFilter {
|
||||
public:
|
||||
AddSessionIdFilter() : TlsHandshakeFilter({ssl_hs_client_hello}) {}
|
||||
AddSessionIdFilter(const std::shared_ptr<TlsAgent>& client)
|
||||
: TlsHandshakeFilter(client, {ssl_hs_client_hello}) {}
|
||||
|
||||
protected:
|
||||
PacketFilter::Action FilterHandshake(const HandshakeHeader& header,
|
||||
|
|
@ -303,14 +313,14 @@ class AddSessionIdFilter : public TlsHandshakeFilter {
|
|||
// mode. It should be ignored instead.
|
||||
TEST_F(TlsConnectDatagram13, CompatModeDtlsServer) {
|
||||
EnsureTlsSetup();
|
||||
auto client_records = std::make_shared<TlsRecordRecorder>();
|
||||
client_->SetPacketFilter(
|
||||
auto client_records = std::make_shared<TlsRecordRecorder>(client_);
|
||||
client_->SetFilter(
|
||||
std::make_shared<ChainedPacketFilter>(ChainedPacketFilterInit(
|
||||
{client_records, std::make_shared<AddSessionIdFilter>()})));
|
||||
auto server_hello = std::make_shared<TlsInspectorRecordHandshakeMessage>(
|
||||
kTlsHandshakeServerHello);
|
||||
auto server_records = std::make_shared<TlsRecordRecorder>();
|
||||
server_->SetPacketFilter(std::make_shared<ChainedPacketFilter>(
|
||||
{client_records, std::make_shared<AddSessionIdFilter>(client_)})));
|
||||
auto server_hello =
|
||||
std::make_shared<TlsHandshakeRecorder>(server_, kTlsHandshakeServerHello);
|
||||
auto server_records = std::make_shared<TlsRecordRecorder>(server_);
|
||||
server_->SetFilter(std::make_shared<ChainedPacketFilter>(
|
||||
ChainedPacketFilterInit({server_records, server_hello})));
|
||||
StartConnect();
|
||||
client_->Handshake();
|
||||
|
|
@ -334,4 +344,20 @@ TEST_F(TlsConnectDatagram13, CompatModeDtlsServer) {
|
|||
EXPECT_EQ(0U, session_id_len);
|
||||
}
|
||||
|
||||
} // nss_test
|
||||
TEST_F(Tls13CompatTest, ConnectWith12ThenAttemptToResume13CompatMode) {
|
||||
ConfigureSessionCache(RESUME_SESSIONID, RESUME_SESSIONID);
|
||||
ConfigureVersion(SSL_LIBRARY_VERSION_TLS_1_2);
|
||||
Connect();
|
||||
|
||||
Reset();
|
||||
ExpectResumption(RESUME_NONE);
|
||||
version_ = SSL_LIBRARY_VERSION_TLS_1_3;
|
||||
client_->SetVersionRange(SSL_LIBRARY_VERSION_TLS_1_2,
|
||||
SSL_LIBRARY_VERSION_TLS_1_3);
|
||||
server_->SetVersionRange(SSL_LIBRARY_VERSION_TLS_1_2,
|
||||
SSL_LIBRARY_VERSION_TLS_1_3);
|
||||
EnableCompatMode();
|
||||
Connect();
|
||||
}
|
||||
|
||||
} // namespace nss_test
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue