Index: external_tests/ssl_gtest/tls_connect.cc |
=================================================================== |
--- a/external_tests/ssl_gtest/tls_connect.cc |
+++ b/external_tests/ssl_gtest/tls_connect.cc |
@@ -6,16 +6,17 @@ |
#include "tls_connect.h" |
extern "C" { |
#include "libssl_internals.h" |
} |
#include <iostream> |
+#include "databuffer.h" |
#include "gtest_utils.h" |
#include "sslproto.h" |
extern std::string g_working_dir_path; |
namespace nss_test { |
static const std::string kTlsModesStreamArr[] = {"TLS"}; |
@@ -115,16 +116,49 @@ TlsConnectTestBase::TlsConnectTestBase(M |
} else { |
v = VersionString(version_); |
} |
std::cerr << "Version: " << mode_ << " " << v << std::endl; |
} |
TlsConnectTestBase::~TlsConnectTestBase() {} |
+// Check the group of each of the supported groups |
+void TlsConnectTestBase::CheckGroups( |
+ const DataBuffer& groups, std::function<void(uint16_t)> check_group) { |
+ DuplicateGroupChecker group_set; |
+ uint32_t tmp = 0; |
+ EXPECT_TRUE(groups.Read(0, 2, &tmp)); |
+ EXPECT_EQ(groups.len() - 2, static_cast<size_t>(tmp)); |
+ for (size_t i = 2; i < groups.len(); i += 2) { |
+ EXPECT_TRUE(groups.Read(i, 2, &tmp)); |
+ uint16_t group = static_cast<uint16_t>(tmp); |
+ group_set.AddAndCheckGroup(group); |
+ check_group(group); |
+ } |
+} |
+ |
+// Check the group of each of the shares |
+void TlsConnectTestBase::CheckShares( |
+ const DataBuffer& shares, std::function<void(uint16_t)> check_group) { |
+ DuplicateGroupChecker group_set; |
+ uint32_t tmp = 0; |
+ EXPECT_TRUE(shares.Read(0, 2, &tmp)); |
+ EXPECT_EQ(shares.len() - 2, static_cast<size_t>(tmp)); |
+ size_t i; |
+ for (i = 2; i < shares.len(); i += 4 + tmp) { |
+ ASSERT_TRUE(shares.Read(i, 2, &tmp)); |
+ uint16_t group = static_cast<uint16_t>(tmp); |
+ group_set.AddAndCheckGroup(group); |
+ check_group(group); |
+ ASSERT_TRUE(shares.Read(i + 2, 2, &tmp)); |
+ } |
+ EXPECT_EQ(shares.len(), i); |
+} |
+ |
void TlsConnectTestBase::ClearStats() { |
// Clear statistics. |
SSL3Statistics* stats = SSL_GetStatistics(); |
memset(stats, 0, sizeof(*stats)); |
} |
void TlsConnectTestBase::ClearServerCache() { |
SSL_ShutdownServerSessionIDCache(); |
@@ -380,21 +414,16 @@ void TlsConnectTestBase::EnsureModelSock |
ASSERT_EQ(server_model_, nullptr); |
client_model_ = new TlsAgent(TlsAgent::kClient, TlsAgent::CLIENT, mode_); |
server_model_ = new TlsAgent(TlsAgent::kServerRsa, TlsAgent::SERVER, mode_); |
} |
// Initialise agents. |
ASSERT_TRUE(client_model_->Init()); |
ASSERT_TRUE(server_model_->Init()); |
- |
- // Set desired properties on the models. |
- // For now only ALPN. |
- client_model_->EnableAlpn(alpn_dummy_val_, sizeof(alpn_dummy_val_)); |
- server_model_->EnableAlpn(alpn_dummy_val_, sizeof(alpn_dummy_val_)); |
} |
void TlsConnectTestBase::CheckAlpn(const std::string& val) { |
client_->CheckAlpn(SSL_NEXT_PROTO_SELECTED, val); |
server_->CheckAlpn(SSL_NEXT_PROTO_NEGOTIATED, val); |
} |
void TlsConnectTestBase::EnableSrtp() { |