• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 <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 
26 namespace OHOS {
27 namespace NetStack {
28 namespace TlsSocket {
29 namespace {
30 using namespace testing::ext;
31 } // namespace
32 
33 class TlsCertificateTest : public testing::Test {
34 public:
SetUpTestCase()35     static void SetUpTestCase() {}
36 
TearDownTestCase()37     static void TearDownTestCase() {}
38 
SetUp()39     virtual void SetUp() {}
40 
TearDown()41     virtual void TearDown() {}
42 };
43 
44 HWTEST_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 
51 HWTEST_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 
59 HWTEST_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 
66 HWTEST_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 
74 HWTEST_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 
82 HWTEST_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 
90 HWTEST_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 
99 HWTEST_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 
108 HWTEST_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 
119 HWTEST_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 
152 HWTEST_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 
160 HWTEST_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 
168 HWTEST_F(TlsCertificateTest, CaCertToStringTest002, TestSize.Level2)
169 {
170     TLSCertificate tlsCertificate = TLSCertificate(CLIENT_FILE, LOCAL_CERT);
171     X509* x509 = X509_new();
172     bool ret = tlsCertificate.CaCertToString(x509);
173     EXPECT_TRUE(ret);
174 }
175 
176 HWTEST_F(TlsCertificateTest, LocalCertToStringTest, TestSize.Level2)
177 {
178     TLSCertificate tlsCertificate = TLSCertificate(CLIENT_FILE, LOCAL_CERT);
179     X509 *x509 = nullptr;
180     bool ret = tlsCertificate.LocalCertToString(x509);
181     EXPECT_FALSE(ret);
182 }
183 
184 HWTEST_F(TlsCertificateTest, LocalCertToStringTest002, TestSize.Level2)
185 {
186     TLSCertificate tlsCertificate = TLSCertificate(CLIENT_FILE, LOCAL_CERT);
187     X509 *x509 = X509_new();
188     bool ret = tlsCertificate.LocalCertToString(x509);
189     EXPECT_TRUE(ret);
190 }
191 
192 HWTEST_F(TlsCertificateTest, SetX509VersionTest, TestSize.Level2)
193 {
194     TLSCertificate tlsCertificate = TLSCertificate(CLIENT_FILE, LOCAL_CERT);
195     X509 *x509 = nullptr;
196     bool ret = tlsCertificate.SetX509Version(x509);
197     EXPECT_FALSE(ret);
198 }
199 
200 HWTEST_F(TlsCertificateTest, SetSerialNumberTest, TestSize.Level2)
201 {
202     TLSCertificate tlsCertificate = TLSCertificate(CLIENT_FILE, LOCAL_CERT);
203     X509 *x509 = nullptr;
204     bool ret = tlsCertificate.SetSerialNumber(x509);
205     EXPECT_FALSE(ret);
206 }
207 
208 HWTEST_F(TlsCertificateTest, SetSerialNumberTest002, TestSize.Level2)
209 {
210     X509* x509 = X509_new();
211     TLSCertificate tlsCertificate = TLSCertificate(CLIENT_FILE, LOCAL_CERT);
212     bool ret = tlsCertificate.SetSerialNumber(x509);
213     EXPECT_FALSE(ret);
214     X509_free(x509);
215 }
216 
217 HWTEST_F(TlsCertificateTest, SetNotValidTimeTest, TestSize.Level2)
218 {
219     TLSCertificate tlsCertificate = TLSCertificate(CLIENT_FILE, LOCAL_CERT);
220     X509 *x509 = nullptr;
221     bool ret = tlsCertificate.SetNotValidTime(x509);
222     EXPECT_FALSE(ret);
223 }
224 
225 HWTEST_F(TlsCertificateTest, SetNotValidTimeTest002, TestSize.Level2)
226 {
227     X509* x509 = X509_new();
228     TLSCertificate tlsCertificate = TLSCertificate(CLIENT_FILE, LOCAL_CERT);
229     bool ret = tlsCertificate.SetNotValidTime(x509);
230     EXPECT_FALSE(ret);
231     X509_free(x509);
232 }
233 
234 HWTEST_F(TlsCertificateTest, SetSignatureAlgorithmTest, TestSize.Level2)
235 {
236     TLSCertificate tlsCertificate = TLSCertificate(CLIENT_FILE, LOCAL_CERT);
237     X509 *x509 = nullptr;
238     bool ret = tlsCertificate.SetSignatureAlgorithm(x509);
239     EXPECT_FALSE(ret);
240 }
241 
242 HWTEST_F(TlsCertificateTest, SetSignatureAlgorithmTest002, TestSize.Level2)
243 {
244     X509* x509 = X509_new();
245     TLSCertificate tlsCertificate = TLSCertificate(CLIENT_FILE, LOCAL_CERT);
246     bool ret = tlsCertificate.SetSignatureAlgorithm(x509);
247     EXPECT_TRUE(ret);
248     X509_free(x509);
249 }
250 
251 HWTEST_F(TlsCertificateTest, SetLocalCertRawDataTest, TestSize.Level2)
252 {
253     TLSCertificate tlsCertificate = TLSCertificate(CLIENT_FILE, LOCAL_CERT);
254     X509 *x509 = nullptr;
255     bool ret = tlsCertificate.SetLocalCertRawData(x509);
256     EXPECT_FALSE(ret);
257 }
258 
259 HWTEST_F(TlsCertificateTest, SetLocalCertRawDataTest002, TestSize.Level2)
260 {
261     X509* x509 = X509_new();
262     TLSCertificate tlsCertificate = TLSCertificate(CLIENT_FILE, LOCAL_CERT);
263     bool ret = tlsCertificate.SetLocalCertRawData(x509);
264     EXPECT_FALSE(ret);
265     X509_free(x509);
266 }
267 
268 HWTEST_F(TlsCertificateTest, CertificateFromDataTest001, TestSize.Level2)
269 {
270     std::string data = "";
271     TLSCertificate tlsCertificate = TLSCertificate(CLIENT_FILE, LOCAL_CERT);
272     bool ret = tlsCertificate.CertificateFromData(data, CertType::LOCAL_CERT);
273     EXPECT_FALSE(ret);
274 }
275 
276 HWTEST_F(TlsCertificateTest, CertificateFromDataTest002, TestSize.Level2)
277 {
278     TLSCertificate tlsCertificate = TLSCertificate(CLIENT_FILE, LOCAL_CERT);
279     bool ret = tlsCertificate.CertificateFromData(CLIENT_FILE, CertType::LOCAL_CERT);
280     EXPECT_TRUE(ret);
281 }
282 
283 HWTEST_F(TlsCertificateTest, CertificateFromPemTest001, TestSize.Level2)
284 {
285     TLSCertificate tlsCertificate = TLSCertificate(CLIENT_FILE, LOCAL_CERT);
286     bool ret = tlsCertificate.CertificateFromPem(CLIENT_FILE, static_cast<CertType>(-1));
287     EXPECT_FALSE(ret);
288 }
289 } // namespace TlsSocket
290 } // namespace NetStack
291 } // namespace OHOS
292