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 = ¶meter;
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