1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129
|
/*
* Copyright 2025 The WebRTC Project Authors. All rights reserved.
*
* Use of this source code is governed by a BSD-style license
* that can be found in the LICENSE file in the root of the source
* tree. An additional intellectual property rights grant can be found
* in the file PATENTS. All contributing project authors may
* be found in the AUTHORS file in the root of the source tree.
*/
#include "rtc_base/openssl_stream_adapter.h"
#include <openssl/ssl.h>
#include <cstdint>
#include <set>
#include <vector>
#include "rtc_base/logging.h"
#include "rtc_base/ssl_stream_adapter.h"
#include "test/gtest.h"
#include "test/scoped_key_value_config.h"
TEST(OpenSSLStreamAdapterTest, GetSupportedEphemeralKeyExchangeCipherGroups) {
RTC_LOG(LS_INFO) << "OpenSSLStreamAdapter::IsBoringSsl(): "
<< webrtc::OpenSSLStreamAdapter::IsBoringSsl();
std::set<uint16_t> expected = {
#ifdef SSL_GROUP_SECP224R1
SSL_GROUP_SECP224R1,
#endif
#ifdef SSL_GROUP_SECP256R1
SSL_GROUP_SECP256R1,
#endif
#ifdef SSL_GROUP_SECP384R1
SSL_GROUP_SECP384R1,
#endif
#ifdef SSL_GROUP_SECP521R1
SSL_GROUP_SECP521R1,
#endif
#ifdef SSL_GROUP_X25519
SSL_GROUP_X25519,
#endif
#ifdef SSL_GROUP_X25519_MLKEM768
SSL_GROUP_X25519_MLKEM768,
#endif
};
EXPECT_EQ(
webrtc::SSLStreamAdapter::GetSupportedEphemeralKeyExchangeCipherGroups(),
expected);
}
TEST(OpenSSLStreamAdapterTest, GetEphemeralKeyExchangeCipherGroupName) {
#ifdef SSL_GROUP_SECP224R1
EXPECT_EQ(*webrtc::SSLStreamAdapter::GetEphemeralKeyExchangeCipherGroupName(
SSL_GROUP_SECP224R1),
"P-224");
#endif
#ifdef SSL_GROUP_SECP256R1
EXPECT_EQ(*webrtc::SSLStreamAdapter::GetEphemeralKeyExchangeCipherGroupName(
SSL_GROUP_SECP256R1),
"P-256");
#endif
#ifdef SSL_GROUP_SECP384R1
EXPECT_EQ(*webrtc::SSLStreamAdapter::GetEphemeralKeyExchangeCipherGroupName(
SSL_GROUP_SECP384R1),
"P-384");
#endif
#ifdef SSL_GROUP_SECP521R1
EXPECT_EQ(*webrtc::SSLStreamAdapter::GetEphemeralKeyExchangeCipherGroupName(
SSL_GROUP_SECP521R1),
"P-521");
#endif
#ifdef SSL_GROUP_X25519
EXPECT_EQ(*webrtc::SSLStreamAdapter::GetEphemeralKeyExchangeCipherGroupName(
SSL_GROUP_X25519),
"X25519");
#endif
#ifdef SSL_GROUP_X25519_MLKEM768
EXPECT_EQ(*webrtc::SSLStreamAdapter::GetEphemeralKeyExchangeCipherGroupName(
SSL_GROUP_X25519_MLKEM768),
"X25519MLKEM768");
#endif
EXPECT_FALSE(
webrtc::SSLStreamAdapter::GetEphemeralKeyExchangeCipherGroupName(0)
.has_value());
}
TEST(OpenSSLStreamAdapterTest, GetDefaultEphemeralKeyExchangeCipherGroups) {
std::vector<uint16_t> expected = {
#ifdef SSL_GROUP_X25519
SSL_GROUP_X25519,
#endif
#ifdef SSL_GROUP_SECP256R1
SSL_GROUP_SECP256R1,
#endif
#ifdef SSL_GROUP_SECP384R1
SSL_GROUP_SECP384R1,
#endif
};
EXPECT_EQ(
webrtc::SSLStreamAdapter::GetDefaultEphemeralKeyExchangeCipherGroups(
/* field_trials= */ nullptr),
expected);
}
TEST(OpenSSLStreamAdapterTest,
GetDefaultEphemeralKeyExchangeCipherGroupsWithPQC) {
std::vector<uint16_t> expected = {
#ifdef SSL_GROUP_X25519_MLKEM768
SSL_GROUP_X25519_MLKEM768,
#endif
#ifdef SSL_GROUP_X25519
SSL_GROUP_X25519,
#endif
#ifdef SSL_GROUP_SECP256R1
SSL_GROUP_SECP256R1,
#endif
#ifdef SSL_GROUP_SECP384R1
SSL_GROUP_SECP384R1,
#endif
};
webrtc::test::ScopedKeyValueConfig field_trials(
"WebRTC-EnableDtlsPqc/Enabled/");
EXPECT_EQ(
webrtc::SSLStreamAdapter::GetDefaultEphemeralKeyExchangeCipherGroups(
&field_trials),
expected);
}
|