64 lines
2.3 KiB
C++
64 lines
2.3 KiB
C++
/* -*- 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/. */
|
|
|
|
#include "gtest_utils.h"
|
|
#include "ssl.h"
|
|
#include "tls_connect.h"
|
|
|
|
namespace nss_test {
|
|
|
|
class SslOptionTest : public ::testing::Test {};
|
|
|
|
static PRInt32 nextOption(PRInt32 index) {
|
|
switch (++index) {
|
|
case SSL_SOCKS: // pinned to false
|
|
case 4: // not defined
|
|
case SSL_ENABLE_SSL2: // pinned to false
|
|
case SSL_V2_COMPATIBLE_HELLO: // pinned to false
|
|
case SSL_ENABLE_TLS: // depends on other options
|
|
case SSL_NO_STEP_DOWN: // pinned to false
|
|
case SSL_BYPASS_PKCS11: // pinned to false
|
|
case SSL_ENABLE_NPN: // pinned to false
|
|
case SSL_RECORD_SIZE_LIMIT: // not a boolean
|
|
return nextOption(index);
|
|
}
|
|
return index;
|
|
}
|
|
|
|
TEST_F(SslOptionTest, OptionSetDefault) {
|
|
PRIntn original, modified;
|
|
PRInt32 index = nextOption(0);
|
|
while (SECSuccess == SSL_OptionGetDefault(index, &original)) {
|
|
EXPECT_EQ(SECSuccess, SSL_OptionSetDefault(index, 1 ^ original));
|
|
EXPECT_EQ(SECSuccess, SSL_OptionGetDefault(index, &modified));
|
|
EXPECT_EQ(modified, 1 ^ original);
|
|
EXPECT_EQ(SECSuccess, SSL_OptionSetDefault(index, original));
|
|
index = nextOption(index);
|
|
}
|
|
|
|
// Update the expected value here when new options are added.
|
|
EXPECT_EQ(index, SSL_DB_LOAD_CERTIFICATE_CHAIN + 1);
|
|
}
|
|
|
|
TEST_F(TlsConnectStreamTls13, OptionSet) {
|
|
EnsureTlsSetup();
|
|
PRIntn original, modified;
|
|
PRInt32 index = nextOption(0);
|
|
while (SECSuccess == SSL_OptionGetDefault(index, &original)) {
|
|
EXPECT_EQ(SECSuccess,
|
|
SSL_OptionSet(client_->ssl_fd(), index, 1 ^ original));
|
|
EXPECT_EQ(SECSuccess, SSL_OptionGet(client_->ssl_fd(), index, &modified));
|
|
EXPECT_EQ(modified, 1 ^ original);
|
|
EXPECT_EQ(SECSuccess, SSL_OptionSet(client_->ssl_fd(), index, original));
|
|
index = nextOption(index);
|
|
}
|
|
|
|
// Update the expected value here when new options are added.
|
|
EXPECT_EQ(index, SSL_DB_LOAD_CERTIFICATE_CHAIN + 1);
|
|
Connect();
|
|
}
|
|
|
|
} // namespace nss_test
|