1 /*
2  * Copyright (c) 2024-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 #include "hap_openssl_utils_test.h"
16 #include "params_run_tool.h"
17 #include "sign_hap.h"
18 #include "sign_provider.h"
19 #include "sign_tool_service_impl.h"
20 namespace OHOS {
21 namespace SignatureTools {
22 /*
23  * @tc.name: hap_openssl_utils_test_001
24  * @tc.desc: This function tests failed for interface DigestInit due to parameter DigestParameter not init
25  * @tc.type: FUNC
26  * @tc.require:
27  */
HWTEST_F(HapOpensslUtilsTest, hap_openssl_utils_test_001, testing::ext::TestSize.Level1)28 HWTEST_F(HapOpensslUtilsTest, hap_openssl_utils_test_001, testing::ext::TestSize.Level1)
29 {
30     SIGNATURE_TOOLS_LOGI("hello world !!!");
31     DigestParameter parameter;
32 
33     bool ret = DigestCommon::DigestInit(parameter);
34     EXPECT_EQ(ret, false);
35 }
36 
37 /*
38  * @tc.name: hap_openssl_utils_test_002
39  * @tc.desc: This function tests failed for interface DigestInit due to parameter DigestParameter not init completed
40  * @tc.type: FUNC
41  * @tc.require:
42  */
HWTEST_F(HapOpensslUtilsTest, hap_openssl_utils_test_002, testing::ext::TestSize.Level1)43 HWTEST_F(HapOpensslUtilsTest, hap_openssl_utils_test_002, testing::ext::TestSize.Level1)
44 {
45     SIGNATURE_TOOLS_LOGI("hello world !!!");
46     DigestParameter parameter;
47     parameter.md = EVP_sha256();
48     bool ret = DigestCommon::DigestInit(parameter);
49     EXPECT_EQ(ret, false);
50 }
51 
52 /*
53  * @tc.name: hap_openssl_utils_test_003
54  * @tc.desc: This function tests failed for interface DigestUpdate due to parameter content and len mismatch
55  * @tc.type: FUNC
56  * @tc.require:
57  */
HWTEST_F(HapOpensslUtilsTest, hap_openssl_utils_test_003, testing::ext::TestSize.Level1)58 HWTEST_F(HapOpensslUtilsTest, hap_openssl_utils_test_003, testing::ext::TestSize.Level1)
59 {
60     DigestParameter parameter;
61     parameter.md = EVP_sha256();
62     const unsigned char content[] = "123";
63     int32_t len = 5;
64     bool ret = DigestCommon::DigestUpdate(parameter, content, len);
65     EXPECT_EQ(ret, false);
66 }
67 
68 /*
69  * @tc.name: hap_openssl_utils_test_004
70  * @tc.desc: This function tests failed for interface DigestUpdate due to parameter content and len mismatch
71  * @tc.type: FUNC
72  * @tc.require:
73  */
HWTEST_F(HapOpensslUtilsTest, hap_openssl_utils_test_004, testing::ext::TestSize.Level1)74 HWTEST_F(HapOpensslUtilsTest, hap_openssl_utils_test_004, testing::ext::TestSize.Level1)
75 {
76     DigestParameter parameter;
77     parameter.md = EVP_sha256();
78     int32_t len = 5;
79     bool ret = DigestCommon::DigestUpdate(parameter, nullptr, len);
80     EXPECT_EQ(ret, false);
81 }
82 
83 /*
84  * @tc.name: hap_openssl_utils_test_005
85  * @tc.desc: This function tests success for interface GetDigest
86  * @tc.type: FUNC
87  * @tc.require:
88  */
HWTEST_F(HapOpensslUtilsTest, hap_openssl_utils_test_005, testing::ext::TestSize.Level1)89 HWTEST_F(HapOpensslUtilsTest, hap_openssl_utils_test_005, testing::ext::TestSize.Level1)
90 {
91     DigestParameter parameter;
92     unsigned char dig[EVP_MAX_MD_SIZE];
93     int32_t ret = DigestCommon::GetDigest(parameter, dig);
94     EXPECT_EQ(ret, 0);
95 }
96 
97 /*
98  * @tc.name: hap_openssl_utils_test_006
99  * @tc.desc: This function tests success for interface GetDigest
100  * @tc.type: FUNC
101  * @tc.require:
102  */
HWTEST_F(HapOpensslUtilsTest, hap_openssl_utils_test_006, testing::ext::TestSize.Level1)103 HWTEST_F(HapOpensslUtilsTest, hap_openssl_utils_test_006, testing::ext::TestSize.Level1)
104 {
105     DigestParameter parameter;
106     parameter.md = EVP_sha256();
107     ByteBuffer chunk;
108     std::vector<OptionalBlock> optionalBlocks;
109     unsigned char out[EVP_MAX_MD_SIZE];
110     int32_t ret = DigestCommon::GetDigest(chunk, optionalBlocks, parameter, out);
111     EXPECT_EQ(ret, 0);
112 }
113 
114 /*
115  * @tc.name: hap_openssl_utils_test_007
116  * @tc.desc: This function tests success for interface GetDigest
117  * @tc.type: FUNC
118  * @tc.require:
119  */
HWTEST_F(HapOpensslUtilsTest, hap_openssl_utils_test_007, testing::ext::TestSize.Level1)120 HWTEST_F(HapOpensslUtilsTest, hap_openssl_utils_test_007, testing::ext::TestSize.Level1)
121 {
122     DigestParameter parameter;
123     DigestParameter parameter_test(parameter);
124     parameter_test = parameter;
125     DigestParameter* parameter_ptr = &parameter;
126     *parameter_ptr = parameter;
127     ByteBuffer chunk;
128     std::vector<OptionalBlock> optionalBlocks;
129     unsigned char out[EVP_MAX_MD_SIZE];
130     int32_t ret = DigestCommon::GetDigest(chunk, optionalBlocks, parameter, out);
131     EXPECT_EQ(ret, 0);
132 }
133 
134 /*
135  * @tc.name: hap_openssl_utils_test_008
136  * @tc.desc: This function tests success for interface GetDigestAlgorithmId
137  * @tc.type: FUNC
138  * @tc.require:
139  */
HWTEST_F(HapOpensslUtilsTest, hap_openssl_utils_test_008, testing::ext::TestSize.Level1)140 HWTEST_F(HapOpensslUtilsTest, hap_openssl_utils_test_008, testing::ext::TestSize.Level1)
141 {
142     int32_t digId = DigestCommon::GetDigestAlgorithmId(ALGORITHM_SHA384_WITH_ECDSA);
143     EXPECT_EQ(digId, NID_sha384);
144     digId = DigestCommon::GetDigestAlgorithmId(ALGORITHM_SHA512_WITH_ECDSA);
145     EXPECT_EQ(digId, NID_sha512);
146 }
147 
148 /*
149  * @tc.name: hap_openssl_utils_test_009
150  * @tc.desc: This function tests success for interface VerifyPkcs7 due to Pkcs7Context not init
151  * @tc.type: FUNC
152  * @tc.require:
153  */
HWTEST_F(HapOpensslUtilsTest, hap_openssl_utils_test_009, testing::ext::TestSize.Level1)154 HWTEST_F(HapOpensslUtilsTest, hap_openssl_utils_test_009, testing::ext::TestSize.Level1)
155 {
156     Pkcs7Context pkcs7Context;
157     bool ret = VerifyHapOpensslUtils::VerifyPkcs7(pkcs7Context);
158     EXPECT_EQ(ret, false);
159 }
160 
161 /*
162  * @tc.name: hap_openssl_utils_test_010
163  * @tc.desc: This function tests success for interface VerifyPkcs7 due to Pkcs7Context not init complete
164  * @tc.type: FUNC
165  * @tc.require:
166  */
HWTEST_F(HapOpensslUtilsTest, hap_openssl_utils_test_010, testing::ext::TestSize.Level1)167 HWTEST_F(HapOpensslUtilsTest, hap_openssl_utils_test_010, testing::ext::TestSize.Level1)
168 {
169     Pkcs7Context pkcs7Context;
170     pkcs7Context.p7 = PKCS7_new();
171     PKCS7_set_type(pkcs7Context.p7, NID_pkcs7_signed);
172     PKCS7_content_new(pkcs7Context.p7, NID_pkcs7_data);
173     bool ret = VerifyHapOpensslUtils::VerifyPkcs7(pkcs7Context);
174     EXPECT_EQ(ret, false);
175 }
176 
177 /*
178  * @tc.name: hap_openssl_utils_test_011
179  * @tc.desc: This function tests success for interface VerifyPkcs7 due to Pkcs7Context not init complete
180  * @tc.type: FUNC
181  * @tc.require:
182  */
HWTEST_F(HapOpensslUtilsTest, hap_openssl_utils_test_011, testing::ext::TestSize.Level1)183 HWTEST_F(HapOpensslUtilsTest, hap_openssl_utils_test_011, testing::ext::TestSize.Level1)
184 {
185     Pkcs7Context pkcs7Context;
186     pkcs7Context.p7 = PKCS7_new();
187     PKCS7_set_type(pkcs7Context.p7, NID_pkcs7_data);
188     bool ret = VerifyHapOpensslUtils::VerifyPkcs7(pkcs7Context);
189     EXPECT_EQ(ret, false);
190 }
191 
192 /*
193  * @tc.name: hap_openssl_utils_test_012
194  * @tc.desc: This function tests success for interface VerifyPkcs7 due to Pkcs7Context not init complete
195  * @tc.type: FUNC
196  * @tc.require:
197  */
HWTEST_F(HapOpensslUtilsTest, hap_openssl_utils_test_012, testing::ext::TestSize.Level1)198 HWTEST_F(HapOpensslUtilsTest, hap_openssl_utils_test_012, testing::ext::TestSize.Level1)
199 {
200     Pkcs7Context pkcs7Context;
201     pkcs7Context.p7 = PKCS7_new();
202     PKCS7_set_type(pkcs7Context.p7, NID_pkcs7_signed);
203     bool ret = VerifyHapOpensslUtils::VerifyPkcs7(pkcs7Context);
204     EXPECT_EQ(ret, false);
205 }
206 
207 /*
208  * @tc.name: hap_openssl_utils_test_013
209  * @tc.desc: This function tests success for interface GetCertChains due to Pkcs7Context not init
210  * @tc.type: FUNC
211  * @tc.require:
212  */
HWTEST_F(HapOpensslUtilsTest, hap_openssl_utils_test_013, testing::ext::TestSize.Level1)213 HWTEST_F(HapOpensslUtilsTest, hap_openssl_utils_test_013, testing::ext::TestSize.Level1)
214 {
215     PKCS7* p7 = nullptr;
216     Pkcs7Context pkcs7Context;
217     bool ret = VerifyHapOpensslUtils::GetCertChains(p7, pkcs7Context);
218     EXPECT_EQ(ret, false);
219 }
220 
221 /*
222  * @tc.name: hap_openssl_utils_test_014
223  * @tc.desc: This function tests success for interface GetCertChains due to Pkcs7Context not init complete
224  * @tc.type: FUNC
225  * @tc.require:
226  */
HWTEST_F(HapOpensslUtilsTest, hap_openssl_utils_test_014, testing::ext::TestSize.Level1)227 HWTEST_F(HapOpensslUtilsTest, hap_openssl_utils_test_014, testing::ext::TestSize.Level1)
228 {
229     Pkcs7Context pkcs7Context;
230     pkcs7Context.p7 = PKCS7_new();
231     PKCS7_set_type(pkcs7Context.p7, NID_pkcs7_signed);
232     PKCS7_content_new(pkcs7Context.p7, NID_pkcs7_data);
233     PKCS7* pkcsBak = pkcs7Context.p7;
234     bool ret = VerifyHapOpensslUtils::GetCertChains(pkcsBak, pkcs7Context);
235     EXPECT_EQ(ret, false);
236 }
237 } // namespace SignatureTools
238 } // namespace OHOS