11e934351Sopenharmony_ci/* 21e934351Sopenharmony_ci * Copyright (c) 2022 Huawei Device Co., Ltd. 31e934351Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 41e934351Sopenharmony_ci * you may not use this file except in compliance with the License. 51e934351Sopenharmony_ci * You may obtain a copy of the License at 61e934351Sopenharmony_ci * 71e934351Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 81e934351Sopenharmony_ci * 91e934351Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 101e934351Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 111e934351Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 121e934351Sopenharmony_ci * See the License for the specific language governing permissions and 131e934351Sopenharmony_ci * limitations under the License. 141e934351Sopenharmony_ci */ 151e934351Sopenharmony_ci 161e934351Sopenharmony_ci#include <gtest/gtest.h> 171e934351Sopenharmony_ci#include <iostream> 181e934351Sopenharmony_ci#include <openssl/pem.h> 191e934351Sopenharmony_ci#include <string> 201e934351Sopenharmony_ci 211e934351Sopenharmony_ci#define private public 221e934351Sopenharmony_ci#include "tls.h" 231e934351Sopenharmony_ci#include "TlsTest.h" 241e934351Sopenharmony_ci#include "tls_certificate.h" 251e934351Sopenharmony_ci 261e934351Sopenharmony_cinamespace OHOS { 271e934351Sopenharmony_cinamespace NetStack { 281e934351Sopenharmony_cinamespace TlsSocket { 291e934351Sopenharmony_cinamespace { 301e934351Sopenharmony_ciusing namespace testing::ext; 311e934351Sopenharmony_ci} // namespace 321e934351Sopenharmony_ci 331e934351Sopenharmony_ciclass TlsCertificateTest : public testing::Test { 341e934351Sopenharmony_cipublic: 351e934351Sopenharmony_ci static void SetUpTestCase() {} 361e934351Sopenharmony_ci 371e934351Sopenharmony_ci static void TearDownTestCase() {} 381e934351Sopenharmony_ci 391e934351Sopenharmony_ci virtual void SetUp() {} 401e934351Sopenharmony_ci 411e934351Sopenharmony_ci virtual void TearDown() {} 421e934351Sopenharmony_ci}; 431e934351Sopenharmony_ci 441e934351Sopenharmony_ciHWTEST_F(TlsCertificateTest, CertificateTest001, TestSize.Level2) 451e934351Sopenharmony_ci{ 461e934351Sopenharmony_ci TLSCertificate tlsCertificate = TLSCertificate(CLIENT_FILE, LOCAL_CERT); 471e934351Sopenharmony_ci bool isCertFromData = tlsCertificate.CertificateFromData(CLIENT_FILE, LOCAL_CERT); 481e934351Sopenharmony_ci EXPECT_EQ(isCertFromData, true); 491e934351Sopenharmony_ci} 501e934351Sopenharmony_ci 511e934351Sopenharmony_ciHWTEST_F(TlsCertificateTest, CertificateTest002, TestSize.Level2) 521e934351Sopenharmony_ci{ 531e934351Sopenharmony_ci std::string data = ""; 541e934351Sopenharmony_ci TLSCertificate tlsCertificate = TLSCertificate(data, EncodingFormat::DER, LOCAL_CERT); 551e934351Sopenharmony_ci bool ret = tlsCertificate.CertificateFromDer(CLIENT_FILE, LOCAL_CERT); 561e934351Sopenharmony_ci EXPECT_EQ(ret, false); 571e934351Sopenharmony_ci} 581e934351Sopenharmony_ci 591e934351Sopenharmony_ciHWTEST_F(TlsCertificateTest, CertificateTest003, TestSize.Level2) 601e934351Sopenharmony_ci{ 611e934351Sopenharmony_ci TLSCertificate tlsCertificate = TLSCertificate(CLIENT_FILE, EncodingFormat::PEM, LOCAL_CERT); 621e934351Sopenharmony_ci bool ret = tlsCertificate.CertificateFromPem(CA_CRT_FILE, LOCAL_CERT); 631e934351Sopenharmony_ci EXPECT_FALSE(ret); 641e934351Sopenharmony_ci} 651e934351Sopenharmony_ci 661e934351Sopenharmony_ciHWTEST_F(TlsCertificateTest, CopyConstruction, TestSize.Level2) 671e934351Sopenharmony_ci{ 681e934351Sopenharmony_ci TLSCertificate tlsCertificate = TLSCertificate(CLIENT_FILE, LOCAL_CERT); 691e934351Sopenharmony_ci TLSCertificate tlsCopy = TLSCertificate(tlsCertificate); 701e934351Sopenharmony_ci bool isCertFromData = tlsCopy.CertificateFromData(CLIENT_FILE, LOCAL_CERT); 711e934351Sopenharmony_ci EXPECT_EQ(isCertFromData, true); 721e934351Sopenharmony_ci} 731e934351Sopenharmony_ci 741e934351Sopenharmony_ciHWTEST_F(TlsCertificateTest, AssignmentConstruction, TestSize.Level2) 751e934351Sopenharmony_ci{ 761e934351Sopenharmony_ci TLSCertificate tlsCertificate = TLSCertificate(CLIENT_FILE, LOCAL_CERT); 771e934351Sopenharmony_ci TLSCertificate tlsCert = tlsCertificate; 781e934351Sopenharmony_ci bool isCertFromData = tlsCert.CertificateFromData(CLIENT_FILE, LOCAL_CERT); 791e934351Sopenharmony_ci EXPECT_EQ(isCertFromData, true); 801e934351Sopenharmony_ci} 811e934351Sopenharmony_ci 821e934351Sopenharmony_ciHWTEST_F(TlsCertificateTest, GetLocalCertString, TestSize.Level2) 831e934351Sopenharmony_ci{ 841e934351Sopenharmony_ci TLSCertificate tlsCertificate = TLSCertificate(CLIENT_FILE, LOCAL_CERT); 851e934351Sopenharmony_ci std::string localCert = tlsCertificate.GetLocalCertString(); 861e934351Sopenharmony_ci std::cout << "localCert:" << localCert << std::endl; 871e934351Sopenharmony_ci EXPECT_NE(localCert.c_str(), nullptr); 881e934351Sopenharmony_ci} 891e934351Sopenharmony_ci 901e934351Sopenharmony_ciHWTEST_F(TlsCertificateTest, CertificateFromPemTest, TestSize.Level2) 911e934351Sopenharmony_ci{ 921e934351Sopenharmony_ci TLSCertificate tlsCertificate = TLSCertificate(CLIENT_FILE, LOCAL_CERT); 931e934351Sopenharmony_ci bool ret = tlsCertificate.CertificateFromPem(CERTIFICAT, LOCAL_CERT); 941e934351Sopenharmony_ci EXPECT_FALSE(ret); 951e934351Sopenharmony_ci ret = tlsCertificate.CertificateFromPem("", LOCAL_CERT); 961e934351Sopenharmony_ci EXPECT_FALSE(ret); 971e934351Sopenharmony_ci} 981e934351Sopenharmony_ci 991e934351Sopenharmony_ciHWTEST_F(TlsCertificateTest, CertificateFromDerTest, TestSize.Level2) 1001e934351Sopenharmony_ci{ 1011e934351Sopenharmony_ci TLSCertificate tlsCertificate = TLSCertificate(CLIENT_FILE, LOCAL_CERT); 1021e934351Sopenharmony_ci bool ret = tlsCertificate.CertificateFromDer(CA_CRT_FILE, LOCAL_CERT); 1031e934351Sopenharmony_ci EXPECT_FALSE(ret); 1041e934351Sopenharmony_ci ret = tlsCertificate.CertificateFromDer("", LOCAL_CERT); 1051e934351Sopenharmony_ci EXPECT_FALSE(ret); 1061e934351Sopenharmony_ci} 1071e934351Sopenharmony_ci 1081e934351Sopenharmony_ciHWTEST_F(TlsCertificateTest, GetSignatureAlgorithmTest, TestSize.Level2) 1091e934351Sopenharmony_ci{ 1101e934351Sopenharmony_ci TLSCertificate tlsCertificate = TLSCertificate(CLIENT_FILE, LOCAL_CERT); 1111e934351Sopenharmony_ci tlsCertificate.CertificateFromDer(CERTIFICAT, CA_CERT); 1121e934351Sopenharmony_ci std::string ret = tlsCertificate.GetSignatureAlgorithm(); 1131e934351Sopenharmony_ci EXPECT_FALSE(ret.empty()); 1141e934351Sopenharmony_ci TLSCertificate tlsCertificate2 = TLSCertificate("", LOCAL_CERT); 1151e934351Sopenharmony_ci ret = tlsCertificate2.GetSignatureAlgorithm(); 1161e934351Sopenharmony_ci EXPECT_TRUE(ret.empty()); 1171e934351Sopenharmony_ci} 1181e934351Sopenharmony_ci 1191e934351Sopenharmony_ciHWTEST_F(TlsCertificateTest, CaFromData, TestSize.Level2) 1201e934351Sopenharmony_ci{ 1211e934351Sopenharmony_ci TLSCertificate tlsCertificate = TLSCertificate(CA_CRT_FILE, CA_CERT); 1221e934351Sopenharmony_ci bool isFilePath = tlsCertificate.CertificateFromData(CA_CRT_FILE, CA_CERT); 1231e934351Sopenharmony_ci 1241e934351Sopenharmony_ci BIO *bio = BIO_new_mem_buf(CA_CRT_FILE, -1); 1251e934351Sopenharmony_ci X509 *x509Ca = PEM_read_bio_X509(bio, nullptr, nullptr, nullptr); 1261e934351Sopenharmony_ci BIO_free(bio); 1271e934351Sopenharmony_ci bool setLocalCertRawData = tlsCertificate.SetLocalCertRawData(x509Ca); 1281e934351Sopenharmony_ci EXPECT_TRUE(setLocalCertRawData); 1291e934351Sopenharmony_ci bool setX509Version = tlsCertificate.SetX509Version(x509Ca); 1301e934351Sopenharmony_ci EXPECT_TRUE(setX509Version); 1311e934351Sopenharmony_ci bool setSerialNumber = tlsCertificate.SetSerialNumber(x509Ca); 1321e934351Sopenharmony_ci EXPECT_TRUE(setSerialNumber); 1331e934351Sopenharmony_ci bool setNotValidTime = tlsCertificate.SetNotValidTime(x509Ca); 1341e934351Sopenharmony_ci EXPECT_TRUE(setNotValidTime); 1351e934351Sopenharmony_ci bool setSignatureAlgorithm = tlsCertificate.SetSignatureAlgorithm(x509Ca); 1361e934351Sopenharmony_ci EXPECT_TRUE(setSignatureAlgorithm); 1371e934351Sopenharmony_ci bool caCertToString = tlsCertificate.CaCertToString(x509Ca); 1381e934351Sopenharmony_ci EXPECT_TRUE(caCertToString); 1391e934351Sopenharmony_ci bool localCertToString = tlsCertificate.LocalCertToString(x509Ca); 1401e934351Sopenharmony_ci EXPECT_TRUE(localCertToString); 1411e934351Sopenharmony_ci 1421e934351Sopenharmony_ci BIO *bioCrt = BIO_new_mem_buf(CLIENT_FILE, -1); 1431e934351Sopenharmony_ci X509 *x509Crt = PEM_read_bio_X509(bioCrt, nullptr, nullptr, nullptr); 1441e934351Sopenharmony_ci BIO_free(bioCrt); 1451e934351Sopenharmony_ci bool analysisCert = tlsCertificate.AnalysisCertificate(CertType::LOCAL_CERT, x509Crt); 1461e934351Sopenharmony_ci EXPECT_TRUE(analysisCert); 1471e934351Sopenharmony_ci bool analysisCa = tlsCertificate.AnalysisCertificate(CertType::CA_CERT, x509Ca); 1481e934351Sopenharmony_ci EXPECT_TRUE(analysisCa); 1491e934351Sopenharmony_ci EXPECT_EQ(isFilePath, true); 1501e934351Sopenharmony_ci} 1511e934351Sopenharmony_ci 1521e934351Sopenharmony_ciHWTEST_F(TlsCertificateTest, AnalysisCertificateTest, TestSize.Level2) 1531e934351Sopenharmony_ci{ 1541e934351Sopenharmony_ci TLSCertificate tlsCertificate = TLSCertificate(CLIENT_FILE, LOCAL_CERT); 1551e934351Sopenharmony_ci X509 *x509 = nullptr; 1561e934351Sopenharmony_ci bool ret = tlsCertificate.AnalysisCertificate(CertType::LOCAL_CERT, x509); 1571e934351Sopenharmony_ci EXPECT_FALSE(ret); 1581e934351Sopenharmony_ci} 1591e934351Sopenharmony_ci 1601e934351Sopenharmony_ciHWTEST_F(TlsCertificateTest, CaCertToStringTest, TestSize.Level2) 1611e934351Sopenharmony_ci{ 1621e934351Sopenharmony_ci TLSCertificate tlsCertificate = TLSCertificate(CLIENT_FILE, LOCAL_CERT); 1631e934351Sopenharmony_ci X509 *x509 = nullptr; 1641e934351Sopenharmony_ci bool ret = tlsCertificate.CaCertToString(x509); 1651e934351Sopenharmony_ci EXPECT_FALSE(ret); 1661e934351Sopenharmony_ci} 1671e934351Sopenharmony_ci 1681e934351Sopenharmony_ciHWTEST_F(TlsCertificateTest, LocalCertToStringTest, TestSize.Level2) 1691e934351Sopenharmony_ci{ 1701e934351Sopenharmony_ci TLSCertificate tlsCertificate = TLSCertificate(CLIENT_FILE, LOCAL_CERT); 1711e934351Sopenharmony_ci X509 *x509 = nullptr; 1721e934351Sopenharmony_ci bool ret = tlsCertificate.LocalCertToString(x509); 1731e934351Sopenharmony_ci EXPECT_FALSE(ret); 1741e934351Sopenharmony_ci} 1751e934351Sopenharmony_ci 1761e934351Sopenharmony_ciHWTEST_F(TlsCertificateTest, SetX509VersionTest, TestSize.Level2) 1771e934351Sopenharmony_ci{ 1781e934351Sopenharmony_ci TLSCertificate tlsCertificate = TLSCertificate(CLIENT_FILE, LOCAL_CERT); 1791e934351Sopenharmony_ci X509 *x509 = nullptr; 1801e934351Sopenharmony_ci bool ret = tlsCertificate.SetX509Version(x509); 1811e934351Sopenharmony_ci EXPECT_FALSE(ret); 1821e934351Sopenharmony_ci} 1831e934351Sopenharmony_ci 1841e934351Sopenharmony_ciHWTEST_F(TlsCertificateTest, SetSerialNumberTest, TestSize.Level2) 1851e934351Sopenharmony_ci{ 1861e934351Sopenharmony_ci TLSCertificate tlsCertificate = TLSCertificate(CLIENT_FILE, LOCAL_CERT); 1871e934351Sopenharmony_ci X509 *x509 = nullptr; 1881e934351Sopenharmony_ci bool ret = tlsCertificate.SetSerialNumber(x509); 1891e934351Sopenharmony_ci EXPECT_FALSE(ret); 1901e934351Sopenharmony_ci} 1911e934351Sopenharmony_ci 1921e934351Sopenharmony_ciHWTEST_F(TlsCertificateTest, SetNotValidTimeTest, TestSize.Level2) 1931e934351Sopenharmony_ci{ 1941e934351Sopenharmony_ci TLSCertificate tlsCertificate = TLSCertificate(CLIENT_FILE, LOCAL_CERT); 1951e934351Sopenharmony_ci X509 *x509 = nullptr; 1961e934351Sopenharmony_ci bool ret = tlsCertificate.SetNotValidTime(x509); 1971e934351Sopenharmony_ci EXPECT_FALSE(ret); 1981e934351Sopenharmony_ci} 1991e934351Sopenharmony_ci 2001e934351Sopenharmony_ciHWTEST_F(TlsCertificateTest, SetSignatureAlgorithmTest, TestSize.Level2) 2011e934351Sopenharmony_ci{ 2021e934351Sopenharmony_ci TLSCertificate tlsCertificate = TLSCertificate(CLIENT_FILE, LOCAL_CERT); 2031e934351Sopenharmony_ci X509 *x509 = nullptr; 2041e934351Sopenharmony_ci bool ret = tlsCertificate.SetSignatureAlgorithm(x509); 2051e934351Sopenharmony_ci EXPECT_FALSE(ret); 2061e934351Sopenharmony_ci} 2071e934351Sopenharmony_ci 2081e934351Sopenharmony_ciHWTEST_F(TlsCertificateTest, SetLocalCertRawDataTest, TestSize.Level2) 2091e934351Sopenharmony_ci{ 2101e934351Sopenharmony_ci TLSCertificate tlsCertificate = TLSCertificate(CLIENT_FILE, LOCAL_CERT); 2111e934351Sopenharmony_ci X509 *x509 = nullptr; 2121e934351Sopenharmony_ci bool ret = tlsCertificate.SetLocalCertRawData(x509); 2131e934351Sopenharmony_ci EXPECT_FALSE(ret); 2141e934351Sopenharmony_ci} 2151e934351Sopenharmony_ci} // namespace TlsSocket 2161e934351Sopenharmony_ci} // namespace NetStack 2171e934351Sopenharmony_ci} // namespace OHOS 218