mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-19 23:07:33 +09:00
import changes from mozilla nss repo:
- Bug 1641480, TLS 1.3: tighten CCS handling in compatibility mode, r=mt - Bug 1672703, always tolerate the first CCS in TLS 1.3, r=mt - Bug 1663661 - Guard against NULL token in nssSlot_IsTokenPresent. r=jcj - Bug 1607449 - Lock cert->nssCertificate to prevent data race. r=jcj,keeler - Bug 1679290 - Don't hold slot lock when taking session lock r=bbeurdouche
This commit is contained in:
parent
ee3eabdb1e
commit
ecf2071a46
9 changed files with 184 additions and 29 deletions
|
|
@ -347,6 +347,85 @@ TEST_F(TlsConnectStreamTls13, ChangeCipherSpecBeforeClientHelloTwice) {
|
|||
client_->CheckErrorCode(SSL_ERROR_HANDSHAKE_UNEXPECTED_ALERT);
|
||||
}
|
||||
|
||||
// The server accepts a ChangeCipherSpec even if the client advertises
|
||||
// an empty session ID.
|
||||
TEST_F(TlsConnectStreamTls13, ChangeCipherSpecAfterClientHelloEmptySid) {
|
||||
EnsureTlsSetup();
|
||||
ConfigureVersion(SSL_LIBRARY_VERSION_TLS_1_3);
|
||||
|
||||
StartConnect();
|
||||
client_->Handshake(); // Send ClientHello
|
||||
client_->SendDirect(DataBuffer(kCannedCcs, sizeof(kCannedCcs))); // Send CCS
|
||||
|
||||
Handshake();
|
||||
CheckConnected();
|
||||
}
|
||||
|
||||
// The server rejects multiple ChangeCipherSpec even if the client
|
||||
// indicates compatibility mode with non-empty session ID.
|
||||
TEST_F(Tls13CompatTest, ChangeCipherSpecAfterClientHelloTwice) {
|
||||
EnsureTlsSetup();
|
||||
ConfigureVersion(SSL_LIBRARY_VERSION_TLS_1_3);
|
||||
EnableCompatMode();
|
||||
|
||||
StartConnect();
|
||||
client_->Handshake(); // Send ClientHello
|
||||
// Send CCS twice in a row
|
||||
client_->SendDirect(DataBuffer(kCannedCcs, sizeof(kCannedCcs)));
|
||||
client_->SendDirect(DataBuffer(kCannedCcs, sizeof(kCannedCcs)));
|
||||
|
||||
server_->ExpectSendAlert(kTlsAlertUnexpectedMessage);
|
||||
server_->Handshake(); // Consume ClientHello and CCS.
|
||||
server_->CheckErrorCode(SSL_ERROR_RX_MALFORMED_CHANGE_CIPHER);
|
||||
}
|
||||
|
||||
// The client accepts a ChangeCipherSpec even if it advertises an empty
|
||||
// session ID.
|
||||
TEST_F(TlsConnectStreamTls13, ChangeCipherSpecAfterServerHelloEmptySid) {
|
||||
EnsureTlsSetup();
|
||||
ConfigureVersion(SSL_LIBRARY_VERSION_TLS_1_3);
|
||||
|
||||
// To replace Finished with a CCS below
|
||||
auto filter = MakeTlsFilter<TlsHandshakeDropper>(server_);
|
||||
filter->SetHandshakeTypes({kTlsHandshakeFinished});
|
||||
filter->EnableDecryption();
|
||||
|
||||
StartConnect();
|
||||
client_->Handshake(); // Send ClientHello
|
||||
server_->Handshake(); // Consume ClientHello, and
|
||||
// send ServerHello..CertificateVerify
|
||||
// Send CCS
|
||||
server_->SendDirect(DataBuffer(kCannedCcs, sizeof(kCannedCcs)));
|
||||
|
||||
// No alert is sent from the client. As Finished is dropped, we
|
||||
// can't use Handshake() and CheckConnected().
|
||||
client_->Handshake();
|
||||
}
|
||||
|
||||
// The client rejects multiple ChangeCipherSpec in a row even if the
|
||||
// client indicates compatibility mode with non-empty session ID.
|
||||
TEST_F(Tls13CompatTest, ChangeCipherSpecAfterServerHelloTwice) {
|
||||
EnsureTlsSetup();
|
||||
ConfigureVersion(SSL_LIBRARY_VERSION_TLS_1_3);
|
||||
EnableCompatMode();
|
||||
|
||||
// To replace Finished with a CCS below
|
||||
auto filter = MakeTlsFilter<TlsHandshakeDropper>(server_);
|
||||
filter->SetHandshakeTypes({kTlsHandshakeFinished});
|
||||
filter->EnableDecryption();
|
||||
|
||||
StartConnect();
|
||||
client_->Handshake(); // Send ClientHello
|
||||
server_->Handshake(); // Consume ClientHello, and
|
||||
// send ServerHello..CertificateVerify
|
||||
// the ServerHello is followed by CCS
|
||||
// Send another CCS
|
||||
server_->SendDirect(DataBuffer(kCannedCcs, sizeof(kCannedCcs)));
|
||||
client_->ExpectSendAlert(kTlsAlertUnexpectedMessage);
|
||||
client_->Handshake(); // Consume ClientHello and CCS
|
||||
client_->CheckErrorCode(SSL_ERROR_RX_MALFORMED_CHANGE_CIPHER);
|
||||
}
|
||||
|
||||
// If we negotiate 1.2, we abort.
|
||||
TEST_F(TlsConnectStreamTls13, ChangeCipherSpecBeforeClientHello12) {
|
||||
EnsureTlsSetup();
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue