mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-22 08:27:31 +09:00
Replace NSS with Pale Moon's
This commit is contained in:
parent
ff1e5e48bf
commit
8c2e376f94
2870 changed files with 1762232 additions and 1374220 deletions
|
|
@ -1,4 +1,5 @@
|
|||
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
||||
/* vim: set ts=2 et sw=2 tw=80: */
|
||||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
|
||||
* You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
|
@ -27,7 +28,7 @@ TEST_P(TlsConnectStream, ServerNegotiateTls10) {
|
|||
}
|
||||
|
||||
TEST_P(TlsConnectGeneric, ServerNegotiateTls11) {
|
||||
if (version_ < SSL_LIBRARY_VERSION_TLS_1_1) return;
|
||||
if (version_ < SSL_LIBRARY_VERSION_TLS_1_1) GTEST_SKIP();
|
||||
|
||||
uint16_t minver, maxver;
|
||||
client_->GetVersionRange(&minver, &maxver);
|
||||
|
|
@ -38,7 +39,7 @@ TEST_P(TlsConnectGeneric, ServerNegotiateTls11) {
|
|||
}
|
||||
|
||||
TEST_P(TlsConnectGeneric, ServerNegotiateTls12) {
|
||||
if (version_ < SSL_LIBRARY_VERSION_TLS_1_2) return;
|
||||
if (version_ < SSL_LIBRARY_VERSION_TLS_1_2) GTEST_SKIP();
|
||||
|
||||
uint16_t minver, maxver;
|
||||
client_->GetVersionRange(&minver, &maxver);
|
||||
|
|
@ -59,8 +60,8 @@ TEST_F(TlsConnectTest, TestDowngradeDetectionToTls11) {
|
|||
server_->SetVersionRange(SSL_LIBRARY_VERSION_TLS_1_0,
|
||||
SSL_LIBRARY_VERSION_TLS_1_2);
|
||||
client_->SetOption(SSL_ENABLE_HELLO_DOWNGRADE_CHECK, PR_TRUE);
|
||||
MakeTlsFilter<TlsClientHelloVersionSetter>(client_,
|
||||
SSL_LIBRARY_VERSION_TLS_1_1);
|
||||
MakeTlsFilter<TlsMessageVersionSetter>(client_, kTlsHandshakeClientHello,
|
||||
SSL_LIBRARY_VERSION_TLS_1_1);
|
||||
ConnectExpectAlert(client_, kTlsAlertIllegalParameter);
|
||||
client_->CheckErrorCode(SSL_ERROR_RX_MALFORMED_SERVER_HELLO);
|
||||
server_->CheckErrorCode(SSL_ERROR_ILLEGAL_PARAMETER_ALERT);
|
||||
|
|
@ -68,11 +69,10 @@ TEST_F(TlsConnectTest, TestDowngradeDetectionToTls11) {
|
|||
|
||||
// Attempt to negotiate the bogus DTLS 1.1 version.
|
||||
TEST_F(DtlsConnectTest, TestDtlsVersion11) {
|
||||
MakeTlsFilter<TlsClientHelloVersionSetter>(client_, ((~0x0101) & 0xffff));
|
||||
ConnectExpectAlert(server_, kTlsAlertHandshakeFailure);
|
||||
// It's kind of surprising that SSL_ERROR_NO_CYPHER_OVERLAP is
|
||||
// what is returned here, but this is deliberate in ssl3_HandleAlert().
|
||||
client_->CheckErrorCode(SSL_ERROR_NO_CYPHER_OVERLAP);
|
||||
MakeTlsFilter<TlsMessageVersionSetter>(client_, kTlsHandshakeClientHello,
|
||||
((~0x0101) & 0xffff));
|
||||
ConnectExpectAlert(server_, kTlsAlertProtocolVersion);
|
||||
client_->CheckErrorCode(SSL_ERROR_PROTOCOL_VERSION_ALERT);
|
||||
server_->CheckErrorCode(SSL_ERROR_UNSUPPORTED_VERSION);
|
||||
}
|
||||
|
||||
|
|
@ -128,7 +128,7 @@ TEST_P(TlsDowngradeTest, TlsDowngradeSentinelTest) {
|
|||
static const size_t kRandomLen = 32;
|
||||
|
||||
if (c_ver > s_ver) {
|
||||
return;
|
||||
GTEST_SKIP();
|
||||
}
|
||||
|
||||
client_->SetVersionRange(c_ver, c_ver);
|
||||
|
|
@ -161,8 +161,8 @@ TEST_P(TlsDowngradeTest, TlsDowngradeSentinelTest) {
|
|||
TEST_F(TlsConnectTest, TestDowngradeDetectionToTls10) {
|
||||
// Setting the option here has no effect.
|
||||
client_->SetOption(SSL_ENABLE_HELLO_DOWNGRADE_CHECK, PR_TRUE);
|
||||
MakeTlsFilter<TlsClientHelloVersionSetter>(client_,
|
||||
SSL_LIBRARY_VERSION_TLS_1_0);
|
||||
MakeTlsFilter<TlsMessageVersionSetter>(client_, kTlsHandshakeClientHello,
|
||||
SSL_LIBRARY_VERSION_TLS_1_0);
|
||||
client_->SetVersionRange(SSL_LIBRARY_VERSION_TLS_1_0,
|
||||
SSL_LIBRARY_VERSION_TLS_1_1);
|
||||
server_->SetVersionRange(SSL_LIBRARY_VERSION_TLS_1_0,
|
||||
|
|
@ -203,6 +203,7 @@ TEST_F(TlsConnectTest, DisableFalseStartOnFallback) {
|
|||
SSL_SetCanFalseStartCallback(client_->ssl_fd(), AllowFalseStart,
|
||||
&false_start_attempted));
|
||||
|
||||
client_->SetOption(SSL_ENABLE_HELLO_DOWNGRADE_CHECK, PR_FALSE);
|
||||
client_->SetDowngradeCheckVersion(SSL_LIBRARY_VERSION_TLS_1_3);
|
||||
client_->SetVersionRange(SSL_LIBRARY_VERSION_TLS_1_2,
|
||||
SSL_LIBRARY_VERSION_TLS_1_2);
|
||||
|
|
@ -275,8 +276,8 @@ class Tls13NoSupportedVersions : public TlsConnectStreamTls12 {
|
|||
client_->SetVersionRange(SSL_LIBRARY_VERSION_TLS_1_2,
|
||||
SSL_LIBRARY_VERSION_TLS_1_2);
|
||||
server_->SetVersionRange(SSL_LIBRARY_VERSION_TLS_1_2, max_server_version);
|
||||
MakeTlsFilter<TlsClientHelloVersionSetter>(client_,
|
||||
overwritten_client_version);
|
||||
MakeTlsFilter<TlsMessageVersionSetter>(client_, kTlsHandshakeClientHello,
|
||||
overwritten_client_version);
|
||||
auto capture =
|
||||
MakeTlsFilter<TlsHandshakeRecorder>(server_, kTlsHandshakeServerHello);
|
||||
ConnectExpectAlert(server_, kTlsAlertDecryptError);
|
||||
|
|
@ -310,8 +311,8 @@ TEST_F(Tls13NoSupportedVersions,
|
|||
// Offer 1.3 but with ClientHello.legacy_version == TLS 1.4. This
|
||||
// causes a bad MAC error when we read EncryptedExtensions.
|
||||
TEST_F(TlsConnectStreamTls13, Tls14ClientHelloWithSupportedVersions) {
|
||||
MakeTlsFilter<TlsClientHelloVersionSetter>(client_,
|
||||
SSL_LIBRARY_VERSION_TLS_1_3 + 1);
|
||||
MakeTlsFilter<TlsMessageVersionSetter>(client_, kTlsHandshakeClientHello,
|
||||
SSL_LIBRARY_VERSION_TLS_1_3 + 1);
|
||||
auto capture = MakeTlsFilter<TlsExtensionCapture>(
|
||||
server_, ssl_tls13_supported_versions_xtn);
|
||||
client_->ExpectSendAlert(kTlsAlertBadRecordMac);
|
||||
|
|
@ -330,12 +331,14 @@ TEST_F(TlsConnectStreamTls13, Tls14ClientHelloWithSupportedVersions) {
|
|||
// Offer 1.3 but with Server/ClientHello.legacy_version == SSL 3.0. This
|
||||
// causes a protocol version alert. See RFC 8446 Appendix D.5.
|
||||
TEST_F(TlsConnectStreamTls13, Ssl30ClientHelloWithSupportedVersions) {
|
||||
MakeTlsFilter<TlsClientHelloVersionSetter>(client_, SSL_LIBRARY_VERSION_3_0);
|
||||
MakeTlsFilter<TlsMessageVersionSetter>(client_, kTlsHandshakeClientHello,
|
||||
SSL_LIBRARY_VERSION_3_0);
|
||||
ConnectExpectAlert(server_, kTlsAlertProtocolVersion);
|
||||
}
|
||||
|
||||
TEST_F(TlsConnectStreamTls13, Ssl30ServerHelloWithSupportedVersions) {
|
||||
MakeTlsFilter<TlsServerHelloVersionSetter>(server_, SSL_LIBRARY_VERSION_3_0);
|
||||
MakeTlsFilter<TlsMessageVersionSetter>(server_, kTlsHandshakeServerHello,
|
||||
SSL_LIBRARY_VERSION_3_0);
|
||||
StartConnect();
|
||||
client_->ExpectSendAlert(kTlsAlertProtocolVersion);
|
||||
/* Since the handshake is not finished the client will send an unencrypted
|
||||
|
|
@ -345,7 +348,106 @@ TEST_F(TlsConnectStreamTls13, Ssl30ServerHelloWithSupportedVersions) {
|
|||
Handshake();
|
||||
}
|
||||
|
||||
INSTANTIATE_TEST_CASE_P(
|
||||
// Verify the client sends only DTLS versions in supported_versions
|
||||
TEST_F(DtlsConnectTest, DtlsSupportedVersionsEncoding) {
|
||||
client_->SetVersionRange(SSL_LIBRARY_VERSION_TLS_1_1,
|
||||
SSL_LIBRARY_VERSION_TLS_1_3);
|
||||
server_->SetVersionRange(SSL_LIBRARY_VERSION_TLS_1_1,
|
||||
SSL_LIBRARY_VERSION_TLS_1_3);
|
||||
auto capture = MakeTlsFilter<TlsExtensionCapture>(
|
||||
client_, ssl_tls13_supported_versions_xtn);
|
||||
Connect();
|
||||
|
||||
ASSERT_EQ(7U, capture->extension().len());
|
||||
uint32_t version = 0;
|
||||
ASSERT_TRUE(capture->extension().Read(1, 2, &version));
|
||||
EXPECT_EQ(0x7f00 | DTLS_1_3_DRAFT_VERSION, static_cast<int>(version));
|
||||
ASSERT_TRUE(capture->extension().Read(3, 2, &version));
|
||||
EXPECT_EQ(SSL_LIBRARY_VERSION_DTLS_1_2_WIRE, static_cast<int>(version));
|
||||
ASSERT_TRUE(capture->extension().Read(5, 2, &version));
|
||||
EXPECT_EQ(SSL_LIBRARY_VERSION_DTLS_1_0_WIRE, static_cast<int>(version));
|
||||
}
|
||||
|
||||
// Verify the DTLS 1.3 supported_versions interop workaround.
|
||||
TEST_F(DtlsConnectTest, Dtls13VersionWorkaround) {
|
||||
static const uint16_t kExpectVersionsWorkaround[] = {
|
||||
0x7f00 | DTLS_1_3_DRAFT_VERSION, SSL_LIBRARY_VERSION_DTLS_1_2_WIRE,
|
||||
SSL_LIBRARY_VERSION_TLS_1_2, SSL_LIBRARY_VERSION_DTLS_1_0_WIRE,
|
||||
SSL_LIBRARY_VERSION_TLS_1_1};
|
||||
const int min_ver = SSL_LIBRARY_VERSION_TLS_1_1,
|
||||
max_ver = SSL_LIBRARY_VERSION_TLS_1_3;
|
||||
|
||||
// Toggle the workaround, then verify both encodings are present.
|
||||
EnsureTlsSetup();
|
||||
SSL_SetDtls13VersionWorkaround(client_->ssl_fd(), PR_TRUE);
|
||||
SSL_SetDtls13VersionWorkaround(client_->ssl_fd(), PR_FALSE);
|
||||
SSL_SetDtls13VersionWorkaround(client_->ssl_fd(), PR_TRUE);
|
||||
client_->SetVersionRange(min_ver, max_ver);
|
||||
server_->SetVersionRange(min_ver, max_ver);
|
||||
auto capture = MakeTlsFilter<TlsExtensionCapture>(
|
||||
client_, ssl_tls13_supported_versions_xtn);
|
||||
Connect();
|
||||
|
||||
uint32_t version = 0;
|
||||
size_t off = 1;
|
||||
ASSERT_EQ(1 + sizeof(kExpectVersionsWorkaround), capture->extension().len());
|
||||
for (unsigned int i = 0; i < PR_ARRAY_SIZE(kExpectVersionsWorkaround); i++) {
|
||||
ASSERT_TRUE(capture->extension().Read(off, 2, &version));
|
||||
EXPECT_EQ(kExpectVersionsWorkaround[i], static_cast<uint16_t>(version));
|
||||
off += 2;
|
||||
}
|
||||
}
|
||||
|
||||
// Verify the client sends only TLS versions in supported_versions
|
||||
TEST_F(TlsConnectTest, TlsSupportedVersionsEncoding) {
|
||||
client_->SetVersionRange(SSL_LIBRARY_VERSION_TLS_1_0,
|
||||
SSL_LIBRARY_VERSION_TLS_1_3);
|
||||
server_->SetVersionRange(SSL_LIBRARY_VERSION_TLS_1_0,
|
||||
SSL_LIBRARY_VERSION_TLS_1_3);
|
||||
auto capture = MakeTlsFilter<TlsExtensionCapture>(
|
||||
client_, ssl_tls13_supported_versions_xtn);
|
||||
Connect();
|
||||
|
||||
ASSERT_EQ(9U, capture->extension().len());
|
||||
uint32_t version = 0;
|
||||
ASSERT_TRUE(capture->extension().Read(1, 2, &version));
|
||||
EXPECT_EQ(SSL_LIBRARY_VERSION_TLS_1_3, static_cast<int>(version));
|
||||
ASSERT_TRUE(capture->extension().Read(3, 2, &version));
|
||||
EXPECT_EQ(SSL_LIBRARY_VERSION_TLS_1_2, static_cast<int>(version));
|
||||
ASSERT_TRUE(capture->extension().Read(5, 2, &version));
|
||||
EXPECT_EQ(SSL_LIBRARY_VERSION_TLS_1_1, static_cast<int>(version));
|
||||
ASSERT_TRUE(capture->extension().Read(7, 2, &version));
|
||||
EXPECT_EQ(SSL_LIBRARY_VERSION_TLS_1_0, static_cast<int>(version));
|
||||
}
|
||||
|
||||
/* Test that on reception of unsupported ClientHello.legacy_version the TLS 1.3
|
||||
* server sends the correct alert.
|
||||
*
|
||||
* If the "supported_versions" extension is absent and the server only supports
|
||||
* versions greater than ClientHello.legacy_version, the server MUST abort the
|
||||
* handshake with a "protocol_version" alert [RFC8446, Appendix D.2]. */
|
||||
TEST_P(TlsConnectGenericPre13, ClientHelloUnsupportedTlsVersion) {
|
||||
StartConnect();
|
||||
|
||||
if (variant_ == ssl_variant_stream) {
|
||||
server_->SetVersionRange(SSL_LIBRARY_VERSION_TLS_1_3,
|
||||
SSL_LIBRARY_VERSION_TLS_1_3);
|
||||
} else {
|
||||
server_->SetVersionRange(SSL_LIBRARY_VERSION_DTLS_1_3,
|
||||
SSL_LIBRARY_VERSION_DTLS_1_3);
|
||||
}
|
||||
|
||||
// Try to handshake
|
||||
client_->Handshake();
|
||||
// Expect protocol version alert
|
||||
server_->ExpectSendAlert(kTlsAlertProtocolVersion);
|
||||
server_->Handshake();
|
||||
// Digest alert at peer
|
||||
client_->ExpectReceiveAlert(kTlsAlertProtocolVersion);
|
||||
client_->ReadBytes();
|
||||
}
|
||||
|
||||
INSTANTIATE_TEST_SUITE_P(
|
||||
TlsDowngradeSentinelTest, TlsDowngradeTest,
|
||||
::testing::Combine(TlsConnectTestBase::kTlsVariantsStream,
|
||||
TlsConnectTestBase::kTlsVAll,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue