1/* 2 * Copyright (c) 2024 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 <openssl/pem.h> 19#include <string> 20 21#define private public 22#include "tls.h" 23#include "TlsTest.h" 24#include "tls_certificate.h" 25 26namespace OHOS { 27namespace NetStack { 28namespace TlsSocket { 29namespace { 30using namespace testing::ext; 31} // namespace 32 33class TlsCertificateTest : public testing::Test { 34public: 35 static void SetUpTestCase() {} 36 37 static void TearDownTestCase() {} 38 39 virtual void SetUp() {} 40 41 virtual void TearDown() {} 42}; 43 44HWTEST_F(TlsCertificateTest, CertificateTest001, TestSize.Level2) 45{ 46 TLSCertificate tlsCertificate = TLSCertificate(CLIENT_FILE, LOCAL_CERT); 47 bool isCertFromData = tlsCertificate.CertificateFromData(CLIENT_FILE, LOCAL_CERT); 48 EXPECT_EQ(isCertFromData, true); 49} 50 51HWTEST_F(TlsCertificateTest, CertificateTest002, TestSize.Level2) 52{ 53 std::string data = ""; 54 TLSCertificate tlsCertificate = TLSCertificate(data, EncodingFormat::DER, LOCAL_CERT); 55 bool ret = tlsCertificate.CertificateFromDer(CLIENT_FILE, LOCAL_CERT); 56 EXPECT_EQ(ret, false); 57} 58 59HWTEST_F(TlsCertificateTest, CertificateTest003, TestSize.Level2) 60{ 61 TLSCertificate tlsCertificate = TLSCertificate(CLIENT_FILE, EncodingFormat::PEM, LOCAL_CERT); 62 bool ret = tlsCertificate.CertificateFromPem(CA_CRT_FILE, LOCAL_CERT); 63 EXPECT_FALSE(ret); 64} 65 66HWTEST_F(TlsCertificateTest, CopyConstruction, TestSize.Level2) 67{ 68 TLSCertificate tlsCertificate = TLSCertificate(CLIENT_FILE, LOCAL_CERT); 69 TLSCertificate tlsCopy = TLSCertificate(tlsCertificate); 70 bool isCertFromData = tlsCopy.CertificateFromData(CLIENT_FILE, LOCAL_CERT); 71 EXPECT_EQ(isCertFromData, true); 72} 73 74HWTEST_F(TlsCertificateTest, AssignmentConstruction, TestSize.Level2) 75{ 76 TLSCertificate tlsCertificate = TLSCertificate(CLIENT_FILE, LOCAL_CERT); 77 TLSCertificate tlsCert = tlsCertificate; 78 bool isCertFromData = tlsCert.CertificateFromData(CLIENT_FILE, LOCAL_CERT); 79 EXPECT_EQ(isCertFromData, true); 80} 81 82HWTEST_F(TlsCertificateTest, GetLocalCertString, TestSize.Level2) 83{ 84 TLSCertificate tlsCertificate = TLSCertificate(CLIENT_FILE, LOCAL_CERT); 85 std::string localCert = tlsCertificate.GetLocalCertString(); 86 std::cout << "localCert:" << localCert << std::endl; 87 EXPECT_NE(localCert.c_str(), nullptr); 88} 89 90HWTEST_F(TlsCertificateTest, CertificateFromPemTest, TestSize.Level2) 91{ 92 TLSCertificate tlsCertificate = TLSCertificate(CLIENT_FILE, LOCAL_CERT); 93 bool ret = tlsCertificate.CertificateFromPem(CERTIFICAT, LOCAL_CERT); 94 EXPECT_FALSE(ret); 95 ret = tlsCertificate.CertificateFromPem("", LOCAL_CERT); 96 EXPECT_FALSE(ret); 97} 98 99HWTEST_F(TlsCertificateTest, CertificateFromDerTest, TestSize.Level2) 100{ 101 TLSCertificate tlsCertificate = TLSCertificate(CLIENT_FILE, LOCAL_CERT); 102 bool ret = tlsCertificate.CertificateFromDer(CA_CRT_FILE, LOCAL_CERT); 103 EXPECT_FALSE(ret); 104 ret = tlsCertificate.CertificateFromDer("", LOCAL_CERT); 105 EXPECT_FALSE(ret); 106} 107 108HWTEST_F(TlsCertificateTest, GetSignatureAlgorithmTest, TestSize.Level2) 109{ 110 TLSCertificate tlsCertificate = TLSCertificate(CLIENT_FILE, LOCAL_CERT); 111 tlsCertificate.CertificateFromDer(CERTIFICAT, CA_CERT); 112 std::string ret = tlsCertificate.GetSignatureAlgorithm(); 113 EXPECT_FALSE(ret.empty()); 114 TLSCertificate tlsCertificate2 = TLSCertificate("", LOCAL_CERT); 115 ret = tlsCertificate2.GetSignatureAlgorithm(); 116 EXPECT_TRUE(ret.empty()); 117} 118 119HWTEST_F(TlsCertificateTest, CaFromData, TestSize.Level2) 120{ 121 TLSCertificate tlsCertificate = TLSCertificate(CA_CRT_FILE, CA_CERT); 122 bool isFilePath = tlsCertificate.CertificateFromData(CA_CRT_FILE, CA_CERT); 123 124 BIO *bio = BIO_new_mem_buf(CA_CRT_FILE, -1); 125 X509 *x509Ca = PEM_read_bio_X509(bio, nullptr, nullptr, nullptr); 126 BIO_free(bio); 127 bool setLocalCertRawData = tlsCertificate.SetLocalCertRawData(x509Ca); 128 EXPECT_TRUE(setLocalCertRawData); 129 bool setX509Version = tlsCertificate.SetX509Version(x509Ca); 130 EXPECT_TRUE(setX509Version); 131 bool setSerialNumber = tlsCertificate.SetSerialNumber(x509Ca); 132 EXPECT_TRUE(setSerialNumber); 133 bool setNotValidTime = tlsCertificate.SetNotValidTime(x509Ca); 134 EXPECT_TRUE(setNotValidTime); 135 bool setSignatureAlgorithm = tlsCertificate.SetSignatureAlgorithm(x509Ca); 136 EXPECT_TRUE(setSignatureAlgorithm); 137 bool caCertToString = tlsCertificate.CaCertToString(x509Ca); 138 EXPECT_TRUE(caCertToString); 139 bool localCertToString = tlsCertificate.LocalCertToString(x509Ca); 140 EXPECT_TRUE(localCertToString); 141 142 BIO *bioCrt = BIO_new_mem_buf(CLIENT_FILE, -1); 143 X509 *x509Crt = PEM_read_bio_X509(bioCrt, nullptr, nullptr, nullptr); 144 BIO_free(bioCrt); 145 bool analysisCert = tlsCertificate.AnalysisCertificate(CertType::LOCAL_CERT, x509Crt); 146 EXPECT_TRUE(analysisCert); 147 bool analysisCa = tlsCertificate.AnalysisCertificate(CertType::CA_CERT, x509Ca); 148 EXPECT_TRUE(analysisCa); 149 EXPECT_EQ(isFilePath, true); 150} 151 152HWTEST_F(TlsCertificateTest, AnalysisCertificateTest, TestSize.Level2) 153{ 154 TLSCertificate tlsCertificate = TLSCertificate(CLIENT_FILE, LOCAL_CERT); 155 X509 *x509 = nullptr; 156 bool ret = tlsCertificate.AnalysisCertificate(CertType::LOCAL_CERT, x509); 157 EXPECT_FALSE(ret); 158} 159 160HWTEST_F(TlsCertificateTest, CaCertToStringTest, TestSize.Level2) 161{ 162 TLSCertificate tlsCertificate = TLSCertificate(CLIENT_FILE, LOCAL_CERT); 163 X509 *x509 = nullptr; 164 bool ret = tlsCertificate.CaCertToString(x509); 165 EXPECT_FALSE(ret); 166} 167 168HWTEST_F(TlsCertificateTest, LocalCertToStringTest, TestSize.Level2) 169{ 170 TLSCertificate tlsCertificate = TLSCertificate(CLIENT_FILE, LOCAL_CERT); 171 X509 *x509 = nullptr; 172 bool ret = tlsCertificate.LocalCertToString(x509); 173 EXPECT_FALSE(ret); 174} 175 176HWTEST_F(TlsCertificateTest, SetX509VersionTest, TestSize.Level2) 177{ 178 TLSCertificate tlsCertificate = TLSCertificate(CLIENT_FILE, LOCAL_CERT); 179 X509 *x509 = nullptr; 180 bool ret = tlsCertificate.SetX509Version(x509); 181 EXPECT_FALSE(ret); 182} 183 184HWTEST_F(TlsCertificateTest, SetSerialNumberTest, TestSize.Level2) 185{ 186 TLSCertificate tlsCertificate = TLSCertificate(CLIENT_FILE, LOCAL_CERT); 187 X509 *x509 = nullptr; 188 bool ret = tlsCertificate.SetSerialNumber(x509); 189 EXPECT_FALSE(ret); 190} 191 192HWTEST_F(TlsCertificateTest, SetNotValidTimeTest, TestSize.Level2) 193{ 194 TLSCertificate tlsCertificate = TLSCertificate(CLIENT_FILE, LOCAL_CERT); 195 X509 *x509 = nullptr; 196 bool ret = tlsCertificate.SetNotValidTime(x509); 197 EXPECT_FALSE(ret); 198} 199 200HWTEST_F(TlsCertificateTest, SetSignatureAlgorithmTest, TestSize.Level2) 201{ 202 TLSCertificate tlsCertificate = TLSCertificate(CLIENT_FILE, LOCAL_CERT); 203 X509 *x509 = nullptr; 204 bool ret = tlsCertificate.SetSignatureAlgorithm(x509); 205 EXPECT_FALSE(ret); 206} 207 208HWTEST_F(TlsCertificateTest, SetLocalCertRawDataTest, TestSize.Level2) 209{ 210 TLSCertificate tlsCertificate = TLSCertificate(CLIENT_FILE, LOCAL_CERT); 211 X509 *x509 = nullptr; 212 bool ret = tlsCertificate.SetLocalCertRawData(x509); 213 EXPECT_FALSE(ret); 214} 215} // namespace TlsSocket 216} // namespace NetStack 217} // namespace OHOS 218