1 /* 2 * Copyright (c) 2022 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16 #include <gtest/gtest.h> 17 #include <iostream> 18 #include <string> 19 20 #include "tls_configuration.h" 21 #include "tls.h" 22 #include "TlsTest.h" 23 24 namespace OHOS { 25 namespace NetStack { 26 namespace TlsSocket { 27 namespace { 28 using namespace testing::ext; 29 } // namespace 30 31 class TlsConfigurationTest : public testing::Test { 32 public: SetUpTestCase()33 static void SetUpTestCase() {} 34 TearDownTestCase()35 static void TearDownTestCase() {} 36 SetUp()37 virtual void SetUp() {} 38 TearDown()39 virtual void TearDown() {} 40 }; 41 42 HWTEST_F(TlsConfigurationTest, AssignmentConstruction, TestSize.Level2) 43 { 44 TLSConfiguration tlsConfiguration; 45 TLSConfiguration configuration = tlsConfiguration; 46 configuration.SetLocalCertificate(CLIENT_FILE); 47 TLSCertificate tlsCertificate = configuration.GetLocalCertificate(); 48 EXPECT_NE(tlsCertificate.handle(), nullptr); 49 X509CertRawData x509CertRawData = configuration.GetCertificate(); 50 EXPECT_NE(x509CertRawData.data.Length(), 0); 51 } 52 53 HWTEST_F(TlsConfigurationTest, CopyConstruction, TestSize.Level2) 54 { 55 TLSConfiguration tlsConfiguration; 56 tlsConfiguration.SetLocalCertificate(CLIENT_FILE); 57 TLSConfiguration configuration = TLSConfiguration(tlsConfiguration); 58 TLSCertificate tlsCertificate = configuration.GetLocalCertificate(); 59 EXPECT_NE(tlsCertificate.handle(), nullptr); 60 } 61 62 HWTEST_F(TlsConfigurationTest, SetAndGetCa, TestSize.Level2) 63 { 64 TLSConfiguration tlsConfiguration; 65 tlsConfiguration.SetLocalCertificate(CLIENT_FILE); 66 std::vector<std::string> certificate; 67 certificate.push_back(CA_CRT_FILE); 68 tlsConfiguration.SetCaCertificate(certificate); 69 std::vector<std::string> getCaCertificate; 70 getCaCertificate = tlsConfiguration.GetCaCertificate(); 71 EXPECT_NE(getCaCertificate.size(), 0); 72 } 73 74 HWTEST_F(TlsConfigurationTest, SetPrivateKey, TestSize.Level2) 75 { 76 TLSConfiguration tlsConfiguration; 77 tlsConfiguration.SetLocalCertificate(CLIENT_FILE); 78 SecureData structureData(PRI_KEY_FILE); 79 std::string keyPassStr = ""; 80 SecureData keyPass(keyPassStr); 81 tlsConfiguration.SetPrivateKey(structureData, keyPass); 82 TLSKey tlsKey = tlsConfiguration.GetPrivateKey(); 83 SecureData tlsKeyData = tlsKey.GetKeyData(); 84 EXPECT_EQ(tlsKeyData.Length(), strlen(PRI_KEY_FILE)); 85 } 86 87 HWTEST_F(TlsConfigurationTest, SetProtocol, TestSize.Level2) 88 { 89 TLSConfiguration tlsConfiguration; 90 std::vector<std::string> protocol; 91 std::string protocolVer = "TLSv1.3"; 92 protocol.push_back(protocolVer); 93 tlsConfiguration.SetProtocol(protocol); 94 TLSProtocol tlsProtocol = tlsConfiguration.GetProtocol(); 95 EXPECT_EQ(tlsProtocol, TLS_V1_3); 96 TLSProtocol minProtocol = tlsConfiguration.GetMinProtocol(); 97 EXPECT_EQ(minProtocol, TLS_V1_3); 98 TLSProtocol maxProtocol = tlsConfiguration.GetMaxProtocol(); 99 EXPECT_EQ(maxProtocol, TLS_V1_3); 100 101 protocol.clear(); 102 protocolVer = "TLSv1.2"; 103 protocol.push_back(protocolVer); 104 tlsConfiguration.SetProtocol(protocol); 105 tlsProtocol = tlsConfiguration.GetProtocol(); 106 EXPECT_EQ(tlsProtocol, TLS_V1_2); 107 minProtocol = tlsConfiguration.GetMinProtocol(); 108 EXPECT_EQ(minProtocol, TLS_V1_2); 109 maxProtocol = tlsConfiguration.GetMaxProtocol(); 110 EXPECT_EQ(maxProtocol, TLS_V1_2); 111 } 112 113 HWTEST_F(TlsConfigurationTest, UseRemoteCipherPrefer, TestSize.Level2) 114 { 115 TLSConfiguration tlsConfiguration; 116 tlsConfiguration.SetUseRemoteCipherPrefer(true); 117 bool isUsePemoteCipherPrefer = tlsConfiguration.GetUseRemoteCipherPrefer(); 118 EXPECT_TRUE(isUsePemoteCipherPrefer); 119 } 120 121 HWTEST_F(TlsConfigurationTest, CipherSuite, TestSize.Level2) 122 { 123 TLSConfiguration tlsConfiguration; 124 std::string cipherSuite = "AES256-SHA256"; 125 tlsConfiguration.SetCipherSuite(cipherSuite); 126 std::string getCipherSuite; 127 getCipherSuite = tlsConfiguration.GetCipherSuite(); 128 std::cout << "getCipherSuite:" << getCipherSuite << std::endl; 129 int idx = getCipherSuite.find(cipherSuite); 130 EXPECT_NE(idx, std::string::npos); 131 } 132 133 HWTEST_F(TlsConfigurationTest, SignatureAlgorithms, TestSize.Level2) 134 { 135 TLSConfiguration tlsConfiguration; 136 std::string signatureAlgorithms = "rsa_pss_rsae_sha256:ECDSA+SHA256"; 137 tlsConfiguration.SetSignatureAlgorithms(signatureAlgorithms); 138 std::string getSignatureAlgorithms; 139 getSignatureAlgorithms = tlsConfiguration.GetSignatureAlgorithms(); 140 std::cout << "getSignatureAlgorithms:" << getSignatureAlgorithms << std::endl; 141 std::string subStr = "ECDSA+SHA256"; 142 int idx = getSignatureAlgorithms.find(subStr); 143 EXPECT_NE(idx, std::string::npos); 144 } 145 } // namespace TlsSocket 146 } // namespace NetStack 147 } // namespace OHOS 148