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 */ 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 */ 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 */ 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 */ 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 */ 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 */ 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 */ 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 */ 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 */ 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 */ 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 */ 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 */ 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 */ 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 */ 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