154aa6d63Sopenharmony_ci/* 254aa6d63Sopenharmony_ci * Copyright (c) 2024-2024 Huawei Device Co., Ltd. 354aa6d63Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 454aa6d63Sopenharmony_ci * you may not use this file except in compliance with the License. 554aa6d63Sopenharmony_ci * You may obtain a copy of the License at 654aa6d63Sopenharmony_ci * 754aa6d63Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 854aa6d63Sopenharmony_ci * 954aa6d63Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 1054aa6d63Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 1154aa6d63Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1254aa6d63Sopenharmony_ci * See the License for the specific language governing permissions and 1354aa6d63Sopenharmony_ci * limitations under the License. 1454aa6d63Sopenharmony_ci */ 1554aa6d63Sopenharmony_ci#include <chrono> 1654aa6d63Sopenharmony_ci#include <thread> 1754aa6d63Sopenharmony_ci#include <string> 1854aa6d63Sopenharmony_ci#include <filesystem> 1954aa6d63Sopenharmony_ci 2054aa6d63Sopenharmony_ci#include "gtest/gtest.h" 2154aa6d63Sopenharmony_ci#include "options.h" 2254aa6d63Sopenharmony_ci#include "sign_tool_service_impl.h" 2354aa6d63Sopenharmony_ci#include "nlohmann/json.hpp" 2454aa6d63Sopenharmony_ci#include "signer_factory.h" 2554aa6d63Sopenharmony_ci#include "profile_sign_tool.h" 2654aa6d63Sopenharmony_ci#include "params_run_tool.h" 2754aa6d63Sopenharmony_ci#include "pkcs7_data.h" 2854aa6d63Sopenharmony_ci#include "signer_config.h" 2954aa6d63Sopenharmony_ci#include "local_signer.h" 3054aa6d63Sopenharmony_ci#include "bc_pkcs7_generator.h" 3154aa6d63Sopenharmony_ci#include "bc_signeddata_generator.h" 3254aa6d63Sopenharmony_ci#include "profile_verify.h" 3354aa6d63Sopenharmony_ci#include "constant.h" 3454aa6d63Sopenharmony_ci 3554aa6d63Sopenharmony_ciusing nlohmann::json; 3654aa6d63Sopenharmony_ci 3754aa6d63Sopenharmony_cinamespace OHOS { 3854aa6d63Sopenharmony_cinamespace SignatureTools { 3954aa6d63Sopenharmony_ci 4054aa6d63Sopenharmony_ci// sign profile使用的全局参数 4154aa6d63Sopenharmony_cistatic const std::string SIGN_PROFILE_MODE = "localSign"; 4254aa6d63Sopenharmony_cistatic const std::string SIGN_PROFILE_KEY_ALIAS = "oh-profile1-key-v1"; 4354aa6d63Sopenharmony_cistatic const std::string SIGN_PROFILE_PROFILE_CERT_FILE = "./signProfile/profile-release1.pem"; 4454aa6d63Sopenharmony_cistatic const std::string SIGN_PROFILE_SIGN_ALG = "SHA384withECDSA"; 4554aa6d63Sopenharmony_cistatic const std::string SIGN_PROFILE_KEY_STORE_FILE = "./signProfile/ohtest.p12"; 4654aa6d63Sopenharmony_cistatic const std::string SIGN_PROFILE_OUT_FILE = "./signProfile/signed-profile.p7b"; 4754aa6d63Sopenharmony_cistatic const std::string SIGN_PROFILE_IN_FILE = "./signProfile/profile.json"; 4854aa6d63Sopenharmony_ci// verify profile 使用的全局参数 4954aa6d63Sopenharmony_cistatic const std::string VERIFY_PROFILE_IN_FILE = "./signProfile/signed-profile.p7b"; 5054aa6d63Sopenharmony_cistatic const std::string VERIFY_PROFILE_OUT_FILE = "./signProfile/VerifyResult.json"; 5154aa6d63Sopenharmony_ci// sign app 使用全局参数 5254aa6d63Sopenharmony_cistatic const std::string SIGN_APP_MODE = "localSign"; 5354aa6d63Sopenharmony_cistatic const std::string SIGN_APP_KEY_ALIAS = "oh-app1-key-v1"; 5454aa6d63Sopenharmony_cistatic const std::string SIGN_APP_APP_CERT_FILE = "./signProfile/app-release1.pem"; 5554aa6d63Sopenharmony_cistatic const std::string SIGN_APP_PROFILE_FILE = "./signProfile/signed-profile.p7b"; 5654aa6d63Sopenharmony_cistatic const std::string SIGN_APP_IN_FILE = "./signProfile/unsigned.hap"; 5754aa6d63Sopenharmony_cistatic const std::string SIGN_APP_IN_FILE_TXT = "./signProfile/unsigned.txt"; 5854aa6d63Sopenharmony_cistatic const std::string SIGN_APP_SIGN_ALG = "SHA256withECDSA"; 5954aa6d63Sopenharmony_cistatic const std::string SIGN_APP_KEY_STORE_FILE = "./signProfile/ohtest.p12"; 6054aa6d63Sopenharmony_cistatic const std::string SIGN_APP_OUT_FILE = "./signProfile/signed.hap"; 6154aa6d63Sopenharmony_ci 6254aa6d63Sopenharmony_ciclass SignProfileTest : public testing::Test { 6354aa6d63Sopenharmony_cipublic: 6454aa6d63Sopenharmony_ci static void SetUpTestCase(void); 6554aa6d63Sopenharmony_ci 6654aa6d63Sopenharmony_ci static void TearDownTestCase(void); 6754aa6d63Sopenharmony_ci 6854aa6d63Sopenharmony_ci void SetUp()override; 6954aa6d63Sopenharmony_ci 7054aa6d63Sopenharmony_ci void TearDown()override; 7154aa6d63Sopenharmony_ci}; 7254aa6d63Sopenharmony_ci 7354aa6d63Sopenharmony_civoid SignProfileTest::SetUpTestCase(void) 7454aa6d63Sopenharmony_ci{ 7554aa6d63Sopenharmony_ci std::filesystem::copy(SIGN_APP_IN_FILE_TXT, SIGN_APP_IN_FILE); 7654aa6d63Sopenharmony_ci} 7754aa6d63Sopenharmony_ci 7854aa6d63Sopenharmony_civoid SignProfileTest::TearDownTestCase(void) 7954aa6d63Sopenharmony_ci{ 8054aa6d63Sopenharmony_ci std::filesystem::remove(SIGN_APP_IN_FILE); 8154aa6d63Sopenharmony_ci} 8254aa6d63Sopenharmony_ci 8354aa6d63Sopenharmony_civoid SignProfileTest::SetUp() 8454aa6d63Sopenharmony_ci{ 8554aa6d63Sopenharmony_ci} 8654aa6d63Sopenharmony_ci 8754aa6d63Sopenharmony_civoid SignProfileTest::TearDown() 8854aa6d63Sopenharmony_ci{ 8954aa6d63Sopenharmony_ci} 9054aa6d63Sopenharmony_ci 9154aa6d63Sopenharmony_ci/** 9254aa6d63Sopenharmony_ci * @tc.name: run_sign_profile_test001 9354aa6d63Sopenharmony_ci * @tc.desc: Test function of HapSignTool::RunSignProfile() interface for SUCCESS. 9454aa6d63Sopenharmony_ci * @tc.size: MEDIUM 9554aa6d63Sopenharmony_ci * @tc.type: FUNC 9654aa6d63Sopenharmony_ci * @tc.level Level 1 9754aa6d63Sopenharmony_ci * @tc.require: SR000H63TL 9854aa6d63Sopenharmony_ci */ 9954aa6d63Sopenharmony_ciHWTEST_F(SignProfileTest, run_sign_profile_test001, testing::ext::TestSize.Level1) 10054aa6d63Sopenharmony_ci{ 10154aa6d63Sopenharmony_ci Options options; 10254aa6d63Sopenharmony_ci std::string mode = SIGN_PROFILE_MODE; 10354aa6d63Sopenharmony_ci std::string keyAlias = SIGN_PROFILE_KEY_ALIAS; 10454aa6d63Sopenharmony_ci std::string profileCertFile = SIGN_PROFILE_PROFILE_CERT_FILE; 10554aa6d63Sopenharmony_ci std::string signAlg = SIGN_PROFILE_SIGN_ALG; 10654aa6d63Sopenharmony_ci std::string keystoreFile = SIGN_PROFILE_KEY_STORE_FILE; 10754aa6d63Sopenharmony_ci std::string outFile = SIGN_PROFILE_OUT_FILE; 10854aa6d63Sopenharmony_ci std::string inFile = SIGN_PROFILE_IN_FILE; 10954aa6d63Sopenharmony_ci char keyStorePwd[] = "123456"; 11054aa6d63Sopenharmony_ci char keypwd[] = "123456"; 11154aa6d63Sopenharmony_ci options[Options::KEY_ALIAS] = keyAlias; 11254aa6d63Sopenharmony_ci options[Options::MODE] = mode; 11354aa6d63Sopenharmony_ci options[Options::PROFILE_CERT_FILE] = profileCertFile; 11454aa6d63Sopenharmony_ci options[Options::SIGN_ALG] = signAlg; 11554aa6d63Sopenharmony_ci options[Options::KEY_STORE_FILE] = keystoreFile; 11654aa6d63Sopenharmony_ci options[Options::OUT_FILE] = outFile; 11754aa6d63Sopenharmony_ci options[Options::IN_FILE] = inFile; 11854aa6d63Sopenharmony_ci options[Options::KEY_RIGHTS] = keypwd; 11954aa6d63Sopenharmony_ci options[Options::KEY_STORE_RIGHTS] = keyStorePwd; 12054aa6d63Sopenharmony_ci 12154aa6d63Sopenharmony_ci LocalizationAdapter adapter(&options); 12254aa6d63Sopenharmony_ci SignToolServiceImpl api; 12354aa6d63Sopenharmony_ci bool result = ParamsRunTool::RunSignProfile(&options, api); 12454aa6d63Sopenharmony_ci EXPECT_EQ(result, true); 12554aa6d63Sopenharmony_ci} 12654aa6d63Sopenharmony_ci 12754aa6d63Sopenharmony_ci/** 12854aa6d63Sopenharmony_ci * @tc.name: sign_profile_test001 12954aa6d63Sopenharmony_ci * @tc.desc: Test function of SignToolServiceImpl::SignProfile() interface for SUCCESS. 13054aa6d63Sopenharmony_ci * @tc.size: MEDIUM 13154aa6d63Sopenharmony_ci * @tc.type: FUNC 13254aa6d63Sopenharmony_ci * @tc.level Level 1 13354aa6d63Sopenharmony_ci * @tc.require: SR000H63TL 13454aa6d63Sopenharmony_ci */ 13554aa6d63Sopenharmony_ciHWTEST_F(SignProfileTest, sign_profile_test001, testing::ext::TestSize.Level1) 13654aa6d63Sopenharmony_ci{ 13754aa6d63Sopenharmony_ci Options options; 13854aa6d63Sopenharmony_ci std::string mode = SIGN_PROFILE_MODE; 13954aa6d63Sopenharmony_ci std::string keyAlias = SIGN_PROFILE_KEY_ALIAS; 14054aa6d63Sopenharmony_ci std::string profileCertFile = SIGN_PROFILE_PROFILE_CERT_FILE; 14154aa6d63Sopenharmony_ci std::string signAlg = SIGN_PROFILE_SIGN_ALG; 14254aa6d63Sopenharmony_ci std::string keystoreFile = SIGN_PROFILE_KEY_STORE_FILE; 14354aa6d63Sopenharmony_ci std::string outFile = SIGN_PROFILE_OUT_FILE; 14454aa6d63Sopenharmony_ci std::string inFile = SIGN_PROFILE_IN_FILE; 14554aa6d63Sopenharmony_ci char keyStorePwd[] = "123456"; 14654aa6d63Sopenharmony_ci char keypwd[] = "123456"; 14754aa6d63Sopenharmony_ci char pwd[] = "123456"; 14854aa6d63Sopenharmony_ci options[Options::KEY_ALIAS] = keyAlias; 14954aa6d63Sopenharmony_ci options[Options::MODE] = mode; 15054aa6d63Sopenharmony_ci options[Options::PROFILE_CERT_FILE] = profileCertFile; 15154aa6d63Sopenharmony_ci options[Options::SIGN_ALG] = signAlg; 15254aa6d63Sopenharmony_ci options[Options::KEY_STORE_FILE] = keystoreFile; 15354aa6d63Sopenharmony_ci options[Options::OUT_FILE] = outFile; 15454aa6d63Sopenharmony_ci options[Options::IN_FILE] = inFile; 15554aa6d63Sopenharmony_ci options[Options::KEY_RIGHTS] = keypwd; 15654aa6d63Sopenharmony_ci options[Options::KEY_STORE_RIGHTS] = keyStorePwd; 15754aa6d63Sopenharmony_ci 15854aa6d63Sopenharmony_ci LocalizationAdapter adapter(&options); 15954aa6d63Sopenharmony_ci SignToolServiceImpl api; 16054aa6d63Sopenharmony_ci bool result = api.SignProfile(&options); 16154aa6d63Sopenharmony_ci EXPECT_EQ(result, true); 16254aa6d63Sopenharmony_ci // 密钥匿名错误 失败 16354aa6d63Sopenharmony_ci options[Options::KEY_ALIAS] = std::string("oh-profile1-key-v2"); 16454aa6d63Sopenharmony_ci std::copy(pwd, pwd + 7, keypwd); 16554aa6d63Sopenharmony_ci std::copy(pwd, pwd + 7, keyStorePwd); 16654aa6d63Sopenharmony_ci result = api.SignProfile(&options); 16754aa6d63Sopenharmony_ci options[Options::KEY_ALIAS] = std::string("oh-profile1-key-v1"); 16854aa6d63Sopenharmony_ci EXPECT_EQ(result, false); 16954aa6d63Sopenharmony_ci // 使用SHAwithECDSA256签名算法 成功 17054aa6d63Sopenharmony_ci options[Options::SIGN_ALG] = std::string("SHA256withECDSA"); 17154aa6d63Sopenharmony_ci std::copy(pwd, pwd + 7, keypwd); 17254aa6d63Sopenharmony_ci std::copy(pwd, pwd + 7, keyStorePwd); 17354aa6d63Sopenharmony_ci result = api.SignProfile(&options); 17454aa6d63Sopenharmony_ci options[Options::SIGN_ALG] = std::string("SHA384withECDSA"); 17554aa6d63Sopenharmony_ci EXPECT_EQ(result, true); 17654aa6d63Sopenharmony_ci} 17754aa6d63Sopenharmony_ci 17854aa6d63Sopenharmony_ci/** 17954aa6d63Sopenharmony_ci * @tc.name: get_provision_content_test001 18054aa6d63Sopenharmony_ci * @tc.desc: Test function of SignToolServiceImpl::GetProvisionContent() interface for SUCCESS. 18154aa6d63Sopenharmony_ci * @tc.size: MEDIUM 18254aa6d63Sopenharmony_ci * @tc.type: FUNC 18354aa6d63Sopenharmony_ci * @tc.level Level 1 18454aa6d63Sopenharmony_ci * @tc.require: SR000H63TL 18554aa6d63Sopenharmony_ci */ 18654aa6d63Sopenharmony_ciHWTEST_F(SignProfileTest, get_provision_content_test001, testing::ext::TestSize.Level1) 18754aa6d63Sopenharmony_ci{ 18854aa6d63Sopenharmony_ci std::string ret; 18954aa6d63Sopenharmony_ci const std::string provisionFilePath = SIGN_PROFILE_IN_FILE; 19054aa6d63Sopenharmony_ci SignToolServiceImpl::GetProvisionContent(provisionFilePath, ret); 19154aa6d63Sopenharmony_ci EXPECT_TRUE(ret.size() > 0); 19254aa6d63Sopenharmony_ci} 19354aa6d63Sopenharmony_ci 19454aa6d63Sopenharmony_ci/** 19554aa6d63Sopenharmony_ci* @tc.name: parse_provision_test001 19654aa6d63Sopenharmony_ci* @tc.desc: Test function of ParseProvision() interface for SUCCESS. 19754aa6d63Sopenharmony_ci* @tc.size: MEDIUM 19854aa6d63Sopenharmony_ci* @tc.type: FUNC 19954aa6d63Sopenharmony_ci* @tc.level Level 1 20054aa6d63Sopenharmony_ci* @tc.require: SR000H63TL 20154aa6d63Sopenharmony_ci*/ 20254aa6d63Sopenharmony_ciHWTEST_F(SignProfileTest, parse_provision_test001, testing::ext::TestSize.Level1) 20354aa6d63Sopenharmony_ci{ 20454aa6d63Sopenharmony_ci std::string bytes; 20554aa6d63Sopenharmony_ci FileUtils::ReadFile(SIGN_PROFILE_IN_FILE, bytes); 20654aa6d63Sopenharmony_ci ProfileInfo provision; 20754aa6d63Sopenharmony_ci AppProvisionVerifyResult result = ParseProvision(bytes, provision); 20854aa6d63Sopenharmony_ci EXPECT_TRUE(result == PROVISION_OK); 20954aa6d63Sopenharmony_ci} 21054aa6d63Sopenharmony_ci 21154aa6d63Sopenharmony_ci/** 21254aa6d63Sopenharmony_ci * @tc.name: generate_p7b_test001 21354aa6d63Sopenharmony_ci * @tc.desc: Test function of ProfileSignTool::GenerateP7b() interface for SUCCESS. 21454aa6d63Sopenharmony_ci * @tc.size: MEDIUM 21554aa6d63Sopenharmony_ci * @tc.type: FUNC 21654aa6d63Sopenharmony_ci * @tc.level Level 1 21754aa6d63Sopenharmony_ci * @tc.require: SR000H63TL 21854aa6d63Sopenharmony_ci */ 21954aa6d63Sopenharmony_ciHWTEST_F(SignProfileTest, generate_p7b_test001, testing::ext::TestSize.Level1) 22054aa6d63Sopenharmony_ci{ 22154aa6d63Sopenharmony_ci Options options; 22254aa6d63Sopenharmony_ci std::string mode = SIGN_PROFILE_MODE; 22354aa6d63Sopenharmony_ci std::string keyAlias = SIGN_PROFILE_KEY_ALIAS; 22454aa6d63Sopenharmony_ci std::string profileCertFile = SIGN_PROFILE_PROFILE_CERT_FILE; 22554aa6d63Sopenharmony_ci std::string signAlg = SIGN_PROFILE_SIGN_ALG; 22654aa6d63Sopenharmony_ci std::string keystoreFile = SIGN_PROFILE_KEY_STORE_FILE; 22754aa6d63Sopenharmony_ci std::string outFile = SIGN_PROFILE_OUT_FILE; 22854aa6d63Sopenharmony_ci std::string inFile = SIGN_PROFILE_IN_FILE; 22954aa6d63Sopenharmony_ci char keyStorePwd[] = "123456"; 23054aa6d63Sopenharmony_ci char keypwd[] = "123456"; 23154aa6d63Sopenharmony_ci options[Options::KEY_ALIAS] = keyAlias; 23254aa6d63Sopenharmony_ci options[Options::MODE] = mode; 23354aa6d63Sopenharmony_ci options[Options::PROFILE_CERT_FILE] = profileCertFile; 23454aa6d63Sopenharmony_ci options[Options::SIGN_ALG] = signAlg; 23554aa6d63Sopenharmony_ci options[Options::KEY_STORE_FILE] = keystoreFile; 23654aa6d63Sopenharmony_ci options[Options::OUT_FILE] = outFile; 23754aa6d63Sopenharmony_ci options[Options::IN_FILE] = inFile; 23854aa6d63Sopenharmony_ci options[Options::KEY_RIGHTS] = keypwd; 23954aa6d63Sopenharmony_ci options[Options::KEY_STORE_RIGHTS] = keyStorePwd; 24054aa6d63Sopenharmony_ci 24154aa6d63Sopenharmony_ci LocalizationAdapter adapter(&options); 24254aa6d63Sopenharmony_ci std::string content = "json content"; 24354aa6d63Sopenharmony_ci int result = ProfileSignTool::GenerateP7b(adapter, content, content); 24454aa6d63Sopenharmony_ci EXPECT_TRUE(result == 0); 24554aa6d63Sopenharmony_ci} 24654aa6d63Sopenharmony_ci 24754aa6d63Sopenharmony_ci/** 24854aa6d63Sopenharmony_ci * @tc.name: print_cert_chain_sub_test001 24954aa6d63Sopenharmony_ci * @tc.desc: Test function of PKCS7Data::PrintCertChainSub() interface for SUCCESS. 25054aa6d63Sopenharmony_ci * @tc.size: MEDIUM 25154aa6d63Sopenharmony_ci * @tc.type: FUNC 25254aa6d63Sopenharmony_ci * @tc.level Level 1 25354aa6d63Sopenharmony_ci * @tc.require: SR000H63TL 25454aa6d63Sopenharmony_ci */ 25554aa6d63Sopenharmony_ciHWTEST_F(SignProfileTest, print_cert_chain_sub_test001, testing::ext::TestSize.Level1) 25654aa6d63Sopenharmony_ci{ 25754aa6d63Sopenharmony_ci Options options; 25854aa6d63Sopenharmony_ci std::string mode = SIGN_PROFILE_MODE; 25954aa6d63Sopenharmony_ci std::string keyAlias = SIGN_PROFILE_KEY_ALIAS; 26054aa6d63Sopenharmony_ci std::string profileCertFile = SIGN_PROFILE_PROFILE_CERT_FILE; 26154aa6d63Sopenharmony_ci std::string signAlg = SIGN_PROFILE_SIGN_ALG; 26254aa6d63Sopenharmony_ci std::string keystoreFile = SIGN_PROFILE_KEY_STORE_FILE; 26354aa6d63Sopenharmony_ci std::string outFile = SIGN_PROFILE_OUT_FILE; 26454aa6d63Sopenharmony_ci std::string inFile = SIGN_PROFILE_IN_FILE; 26554aa6d63Sopenharmony_ci char keyStorePwd[] = "123456"; 26654aa6d63Sopenharmony_ci char keypwd[] = "123456"; 26754aa6d63Sopenharmony_ci options[Options::KEY_ALIAS] = keyAlias; 26854aa6d63Sopenharmony_ci options[Options::MODE] = mode; 26954aa6d63Sopenharmony_ci options[Options::PROFILE_CERT_FILE] = profileCertFile; 27054aa6d63Sopenharmony_ci options[Options::SIGN_ALG] = signAlg; 27154aa6d63Sopenharmony_ci options[Options::KEY_STORE_FILE] = keystoreFile; 27254aa6d63Sopenharmony_ci options[Options::OUT_FILE] = outFile; 27354aa6d63Sopenharmony_ci options[Options::IN_FILE] = inFile; 27454aa6d63Sopenharmony_ci options[Options::KEY_RIGHTS] = keypwd; 27554aa6d63Sopenharmony_ci options[Options::KEY_STORE_RIGHTS] = keyStorePwd; 27654aa6d63Sopenharmony_ci 27754aa6d63Sopenharmony_ci LocalizationAdapter adapter(&options); 27854aa6d63Sopenharmony_ci SignerFactory factory; 27954aa6d63Sopenharmony_ci std::shared_ptr<Signer> signer = factory.GetSigner(adapter); 28054aa6d63Sopenharmony_ci STACK_OF(X509)* certs = signer->GetCertificates(); 28154aa6d63Sopenharmony_ci PKCS7Data::PrintCertChainSub(certs); 28254aa6d63Sopenharmony_ci int ret = PKCS7Data::SortX509Stack(certs); 28354aa6d63Sopenharmony_ci EXPECT_EQ(ret, RET_OK); 28454aa6d63Sopenharmony_ci} 28554aa6d63Sopenharmony_ci 28654aa6d63Sopenharmony_ci/** 28754aa6d63Sopenharmony_ci* @tc.name: run_verify_profile_test001 28854aa6d63Sopenharmony_ci* @tc.desc: Test function of HapSignTool::RunVerifyProfile() interface for SUCCESS. 28954aa6d63Sopenharmony_ci* @tc.size: MEDIUM 29054aa6d63Sopenharmony_ci* @tc.type: FUNC 29154aa6d63Sopenharmony_ci* @tc.level Level 1 29254aa6d63Sopenharmony_ci* @tc.require: SR000H63TL 29354aa6d63Sopenharmony_ci*/ 29454aa6d63Sopenharmony_ciHWTEST_F(SignProfileTest, run_verify_profile_test001, testing::ext::TestSize.Level1) 29554aa6d63Sopenharmony_ci{ 29654aa6d63Sopenharmony_ci Options options; 29754aa6d63Sopenharmony_ci options[Options::IN_FILE] = VERIFY_PROFILE_IN_FILE; 29854aa6d63Sopenharmony_ci options[Options::OUT_FILE] = VERIFY_PROFILE_OUT_FILE; 29954aa6d63Sopenharmony_ci SignToolServiceImpl api; 30054aa6d63Sopenharmony_ci bool ret = ParamsRunTool::RunVerifyProfile(&options, api); 30154aa6d63Sopenharmony_ci EXPECT_EQ(ret, true); 30254aa6d63Sopenharmony_ci} 30354aa6d63Sopenharmony_ci 30454aa6d63Sopenharmony_ci/** 30554aa6d63Sopenharmony_ci* @tc.name: run_sign_profile_test001 30654aa6d63Sopenharmony_ci* @tc.desc: Test function of SignToolServiceImpl::VerifyProfile() interface for SUCCESS json写入OUT_FILE. 30754aa6d63Sopenharmony_ci* @tc.size: MEDIUM 30854aa6d63Sopenharmony_ci* @tc.type: FUNC 30954aa6d63Sopenharmony_ci* @tc.level Level 1 31054aa6d63Sopenharmony_ci* @tc.require: SR000H63TL 31154aa6d63Sopenharmony_ci*/ 31254aa6d63Sopenharmony_ciHWTEST_F(SignProfileTest, verify_profile_test001, testing::ext::TestSize.Level1) 31354aa6d63Sopenharmony_ci{ 31454aa6d63Sopenharmony_ci Options options; 31554aa6d63Sopenharmony_ci options[Options::IN_FILE] = VERIFY_PROFILE_IN_FILE; 31654aa6d63Sopenharmony_ci options[Options::OUT_FILE] = VERIFY_PROFILE_OUT_FILE; 31754aa6d63Sopenharmony_ci bool result = false; 31854aa6d63Sopenharmony_ci SignToolServiceImpl api; 31954aa6d63Sopenharmony_ci result = api.VerifyProfile(&options); 32054aa6d63Sopenharmony_ci EXPECT_TRUE(result); 32154aa6d63Sopenharmony_ci} 32254aa6d63Sopenharmony_ci 32354aa6d63Sopenharmony_ci 32454aa6d63Sopenharmony_ci/** 32554aa6d63Sopenharmony_ci * @tc.name: run_sign_profile_test001 32654aa6d63Sopenharmony_ci * @tc.desc: Test function of SignToolServiceImpl::VerifyProfile() interface for SUCCESS 验证成功打印json到控制台. 32754aa6d63Sopenharmony_ci * @tc.size: MEDIUM 32854aa6d63Sopenharmony_ci * @tc.type: FUNC 32954aa6d63Sopenharmony_ci * @tc.level Level 1 33054aa6d63Sopenharmony_ci * @tc.require: SR000H63TL 33154aa6d63Sopenharmony_ci */ 33254aa6d63Sopenharmony_ciHWTEST_F(SignProfileTest, verify_profile_test002, testing::ext::TestSize.Level1) 33354aa6d63Sopenharmony_ci{ 33454aa6d63Sopenharmony_ci Options options; 33554aa6d63Sopenharmony_ci options[Options::IN_FILE] = VERIFY_PROFILE_IN_FILE; 33654aa6d63Sopenharmony_ci options[Options::OUT_FILE] = VERIFY_PROFILE_OUT_FILE; 33754aa6d63Sopenharmony_ci bool result = false; 33854aa6d63Sopenharmony_ci SignToolServiceImpl api; 33954aa6d63Sopenharmony_ci result = api.VerifyProfile(&options); 34054aa6d63Sopenharmony_ci EXPECT_TRUE(result); 34154aa6d63Sopenharmony_ci} 34254aa6d63Sopenharmony_ci 34354aa6d63Sopenharmony_ci/** 34454aa6d63Sopenharmony_ci* @tc.name: parse_test001 34554aa6d63Sopenharmony_ci* @tc.desc: Test function of PKCS7Data::Parse() interface for SUCCESS . 34654aa6d63Sopenharmony_ci* @tc.size: MEDIUM 34754aa6d63Sopenharmony_ci* @tc.type: FUNC 34854aa6d63Sopenharmony_ci* @tc.level Level 1 34954aa6d63Sopenharmony_ci* @tc.require: SR000H63TL 35054aa6d63Sopenharmony_ci*/ 35154aa6d63Sopenharmony_ciHWTEST_F(SignProfileTest, parse_test001, testing::ext::TestSize.Level1) 35254aa6d63Sopenharmony_ci{ 35354aa6d63Sopenharmony_ci std::string p7b; 35454aa6d63Sopenharmony_ci FileUtils::ReadFile(VERIFY_PROFILE_IN_FILE, p7b); 35554aa6d63Sopenharmony_ci PKCS7Data p7; 35654aa6d63Sopenharmony_ci int result = p7.Parse(p7b); 35754aa6d63Sopenharmony_ci EXPECT_EQ(result, 0); 35854aa6d63Sopenharmony_ci} 35954aa6d63Sopenharmony_ci 36054aa6d63Sopenharmony_ci/** 36154aa6d63Sopenharmony_ci * @tc.name: parse_test001 36254aa6d63Sopenharmony_ci * @tc.desc: Test function of PKCS7Data::Parse() interface for SUCCESS . 36354aa6d63Sopenharmony_ci * @tc.size: MEDIUM 36454aa6d63Sopenharmony_ci * @tc.type: FUNC 36554aa6d63Sopenharmony_ci * @tc.level Level 1 36654aa6d63Sopenharmony_ci * @tc.require: SR000H63TL 36754aa6d63Sopenharmony_ci */ 36854aa6d63Sopenharmony_ciHWTEST_F(SignProfileTest, parse_test002, testing::ext::TestSize.Level1) 36954aa6d63Sopenharmony_ci{ 37054aa6d63Sopenharmony_ci std::string p7b; 37154aa6d63Sopenharmony_ci FileUtils::ReadFile(VERIFY_PROFILE_IN_FILE, p7b); 37254aa6d63Sopenharmony_ci PKCS7Data p7; 37354aa6d63Sopenharmony_ci std::vector<int8_t> p7b_(p7b.begin(), p7b.end()); 37454aa6d63Sopenharmony_ci int result = p7.Parse(p7b_); 37554aa6d63Sopenharmony_ci EXPECT_EQ(result, 0); 37654aa6d63Sopenharmony_ci} 37754aa6d63Sopenharmony_ci 37854aa6d63Sopenharmony_ci/** 37954aa6d63Sopenharmony_ci * @tc.name: parse_test001 38054aa6d63Sopenharmony_ci * @tc.desc: Test function of PKCS7Data::Sign() interface for SUCCESS . 38154aa6d63Sopenharmony_ci * @tc.size: MEDIUM 38254aa6d63Sopenharmony_ci * @tc.type: FUNC 38354aa6d63Sopenharmony_ci * @tc.level Level 1 38454aa6d63Sopenharmony_ci * @tc.require: SR000H63TL 38554aa6d63Sopenharmony_ci */ 38654aa6d63Sopenharmony_ciHWTEST_F(SignProfileTest, sign_test001, testing::ext::TestSize.Level1) 38754aa6d63Sopenharmony_ci{ 38854aa6d63Sopenharmony_ci std::string content = "signed content data"; 38954aa6d63Sopenharmony_ci Options options; 39054aa6d63Sopenharmony_ci std::string mode = SIGN_PROFILE_MODE; 39154aa6d63Sopenharmony_ci std::string keyAlias = SIGN_PROFILE_KEY_ALIAS; 39254aa6d63Sopenharmony_ci std::string profileCertFile = SIGN_PROFILE_PROFILE_CERT_FILE; 39354aa6d63Sopenharmony_ci std::string signAlg = SIGN_PROFILE_SIGN_ALG; 39454aa6d63Sopenharmony_ci std::string keystoreFile = SIGN_PROFILE_KEY_STORE_FILE; 39554aa6d63Sopenharmony_ci std::string outFile = SIGN_PROFILE_OUT_FILE; 39654aa6d63Sopenharmony_ci std::string inFile = SIGN_PROFILE_IN_FILE; 39754aa6d63Sopenharmony_ci char keyStorePwd[] = "123456"; 39854aa6d63Sopenharmony_ci char keypwd[] = "123456"; 39954aa6d63Sopenharmony_ci options[Options::KEY_ALIAS] = keyAlias; 40054aa6d63Sopenharmony_ci options[Options::MODE] = mode; 40154aa6d63Sopenharmony_ci options[Options::PROFILE_CERT_FILE] = profileCertFile; 40254aa6d63Sopenharmony_ci options[Options::SIGN_ALG] = signAlg; 40354aa6d63Sopenharmony_ci options[Options::KEY_STORE_FILE] = keystoreFile; 40454aa6d63Sopenharmony_ci options[Options::OUT_FILE] = outFile; 40554aa6d63Sopenharmony_ci options[Options::IN_FILE] = inFile; 40654aa6d63Sopenharmony_ci options[Options::KEY_RIGHTS] = keypwd; 40754aa6d63Sopenharmony_ci options[Options::KEY_STORE_RIGHTS] = keyStorePwd; 40854aa6d63Sopenharmony_ci 40954aa6d63Sopenharmony_ci LocalizationAdapter adapter(&options); 41054aa6d63Sopenharmony_ci SignerFactory factory; 41154aa6d63Sopenharmony_ci std::shared_ptr<Signer> signer = factory.GetSigner(adapter); 41254aa6d63Sopenharmony_ci PKCS7Data p7; 41354aa6d63Sopenharmony_ci std::string p7b; 41454aa6d63Sopenharmony_ci int result = p7.Sign(content, signer, "SHA384withECDSA", p7b); 41554aa6d63Sopenharmony_ci EXPECT_EQ(result, 0); 41654aa6d63Sopenharmony_ci} 41754aa6d63Sopenharmony_ci 41854aa6d63Sopenharmony_ci/** 41954aa6d63Sopenharmony_ci * @tc.name: parse_test001 42054aa6d63Sopenharmony_ci * @tc.desc: Test function of PKCS7Data::Sign() interface for SUCCESS .数据分离 42154aa6d63Sopenharmony_ci * @tc.size: MEDIUM 42254aa6d63Sopenharmony_ci * @tc.type: FUNC 42354aa6d63Sopenharmony_ci * @tc.level Level 1 42454aa6d63Sopenharmony_ci * @tc.require: SR000H63TL 42554aa6d63Sopenharmony_ci */ 42654aa6d63Sopenharmony_ciHWTEST_F(SignProfileTest, sign_test002, testing::ext::TestSize.Level1) 42754aa6d63Sopenharmony_ci{ 42854aa6d63Sopenharmony_ci std::string content = "signed content data"; 42954aa6d63Sopenharmony_ci Options options; 43054aa6d63Sopenharmony_ci std::string mode = SIGN_PROFILE_MODE; 43154aa6d63Sopenharmony_ci std::string keyAlias = SIGN_PROFILE_KEY_ALIAS; 43254aa6d63Sopenharmony_ci std::string profileCertFile = SIGN_PROFILE_PROFILE_CERT_FILE; 43354aa6d63Sopenharmony_ci std::string signAlg = SIGN_PROFILE_SIGN_ALG; 43454aa6d63Sopenharmony_ci std::string keystoreFile = SIGN_PROFILE_KEY_STORE_FILE; 43554aa6d63Sopenharmony_ci std::string outFile = SIGN_PROFILE_OUT_FILE; 43654aa6d63Sopenharmony_ci std::string inFile = SIGN_PROFILE_IN_FILE; 43754aa6d63Sopenharmony_ci char keyStorePwd[] = "123456"; 43854aa6d63Sopenharmony_ci char keypwd[] = "123456"; 43954aa6d63Sopenharmony_ci options[Options::KEY_ALIAS] = keyAlias; 44054aa6d63Sopenharmony_ci options[Options::MODE] = mode; 44154aa6d63Sopenharmony_ci options[Options::PROFILE_CERT_FILE] = profileCertFile; 44254aa6d63Sopenharmony_ci options[Options::SIGN_ALG] = signAlg; 44354aa6d63Sopenharmony_ci options[Options::KEY_STORE_FILE] = keystoreFile; 44454aa6d63Sopenharmony_ci options[Options::OUT_FILE] = outFile; 44554aa6d63Sopenharmony_ci options[Options::IN_FILE] = inFile; 44654aa6d63Sopenharmony_ci options[Options::KEY_RIGHTS] = keypwd; 44754aa6d63Sopenharmony_ci options[Options::KEY_STORE_RIGHTS] = keyStorePwd; 44854aa6d63Sopenharmony_ci 44954aa6d63Sopenharmony_ci LocalizationAdapter adapter(&options); 45054aa6d63Sopenharmony_ci SignerFactory factory; 45154aa6d63Sopenharmony_ci std::shared_ptr<Signer> signer = factory.GetSigner(adapter); 45254aa6d63Sopenharmony_ci PKCS7Data p7(PKCS7_DETACHED_FLAGS); 45354aa6d63Sopenharmony_ci std::string p7b; 45454aa6d63Sopenharmony_ci int result = p7.Sign(content, signer, "SHA384withECDSA", p7b); 45554aa6d63Sopenharmony_ci EXPECT_EQ(result, 0); 45654aa6d63Sopenharmony_ci} 45754aa6d63Sopenharmony_ci 45854aa6d63Sopenharmony_ci/** 45954aa6d63Sopenharmony_ci * @tc.name: parse_test001 46054aa6d63Sopenharmony_ci * @tc.desc: Test function of PKCS7Data::Verify() interface for SUCCESS .数据分离 46154aa6d63Sopenharmony_ci * @tc.size: MEDIUM 46254aa6d63Sopenharmony_ci * @tc.type: FUNC 46354aa6d63Sopenharmony_ci * @tc.level Level 1 46454aa6d63Sopenharmony_ci * @tc.require: SR000H63TL 46554aa6d63Sopenharmony_ci */ 46654aa6d63Sopenharmony_ciHWTEST_F(SignProfileTest, verify_test001, testing::ext::TestSize.Level1) 46754aa6d63Sopenharmony_ci{ 46854aa6d63Sopenharmony_ci std::string p7b; 46954aa6d63Sopenharmony_ci FileUtils::ReadFile(VERIFY_PROFILE_IN_FILE, p7b); 47054aa6d63Sopenharmony_ci PKCS7Data p7; 47154aa6d63Sopenharmony_ci int result = p7.Parse(p7b); 47254aa6d63Sopenharmony_ci // 验证 47354aa6d63Sopenharmony_ci result = p7.Verify(); 47454aa6d63Sopenharmony_ci EXPECT_EQ(result, 0); 47554aa6d63Sopenharmony_ci} 47654aa6d63Sopenharmony_ci/** 47754aa6d63Sopenharmony_ci * @tc.name: get_original_raw_data_test001 47854aa6d63Sopenharmony_ci * @tc.desc: Test function of PKCS7Data::GetOriginalRawData() interface for SUCCESS . 47954aa6d63Sopenharmony_ci * @tc.size: MEDIUM 48054aa6d63Sopenharmony_ci * @tc.type: FUNC 48154aa6d63Sopenharmony_ci * @tc.level Level 1 48254aa6d63Sopenharmony_ci * @tc.require: SR000H63TL 48354aa6d63Sopenharmony_ci */ 48454aa6d63Sopenharmony_ciHWTEST_F(SignProfileTest, get_original_raw_data_test001, testing::ext::TestSize.Level1) 48554aa6d63Sopenharmony_ci{ 48654aa6d63Sopenharmony_ci std::string p7b; 48754aa6d63Sopenharmony_ci FileUtils::ReadFile(VERIFY_PROFILE_IN_FILE, p7b); 48854aa6d63Sopenharmony_ci PKCS7Data p7; 48954aa6d63Sopenharmony_ci int result = p7.Parse(p7b); 49054aa6d63Sopenharmony_ci std::string provision; 49154aa6d63Sopenharmony_ci result = p7.GetContent(provision); 49254aa6d63Sopenharmony_ci EXPECT_EQ(result, 0); 49354aa6d63Sopenharmony_ci} 49454aa6d63Sopenharmony_ci 49554aa6d63Sopenharmony_ci/** 49654aa6d63Sopenharmony_ci * @tc.name: get_signer_test001 49754aa6d63Sopenharmony_ci * @tc.desc: Test function of SignerFactory::GetSigner() interface for SUCCESS . 49854aa6d63Sopenharmony_ci * @tc.size: MEDIUM 49954aa6d63Sopenharmony_ci * @tc.type: FUNC 50054aa6d63Sopenharmony_ci * @tc.level Level 1 50154aa6d63Sopenharmony_ci * @tc.require: SR000H63TL 50254aa6d63Sopenharmony_ci */ 50354aa6d63Sopenharmony_ciHWTEST_F(SignProfileTest, get_signer_test001, testing::ext::TestSize.Level1) 50454aa6d63Sopenharmony_ci{ 50554aa6d63Sopenharmony_ci Options options; 50654aa6d63Sopenharmony_ci std::string mode = SIGN_PROFILE_MODE; 50754aa6d63Sopenharmony_ci std::string keyAlias = SIGN_PROFILE_KEY_ALIAS; 50854aa6d63Sopenharmony_ci std::string profileCertFile = SIGN_PROFILE_PROFILE_CERT_FILE; 50954aa6d63Sopenharmony_ci std::string signAlg = SIGN_PROFILE_SIGN_ALG; 51054aa6d63Sopenharmony_ci std::string keystoreFile = SIGN_PROFILE_KEY_STORE_FILE; 51154aa6d63Sopenharmony_ci std::string outFile = SIGN_PROFILE_OUT_FILE; 51254aa6d63Sopenharmony_ci std::string inFile = SIGN_PROFILE_IN_FILE; 51354aa6d63Sopenharmony_ci char keyStorePwd[] = "123456"; 51454aa6d63Sopenharmony_ci char keypwd[] = "123456"; 51554aa6d63Sopenharmony_ci options[Options::KEY_ALIAS] = keyAlias; 51654aa6d63Sopenharmony_ci options[Options::MODE] = mode; 51754aa6d63Sopenharmony_ci options[Options::PROFILE_CERT_FILE] = profileCertFile; 51854aa6d63Sopenharmony_ci options[Options::SIGN_ALG] = signAlg; 51954aa6d63Sopenharmony_ci options[Options::KEY_STORE_FILE] = keystoreFile; 52054aa6d63Sopenharmony_ci options[Options::OUT_FILE] = outFile; 52154aa6d63Sopenharmony_ci options[Options::IN_FILE] = inFile; 52254aa6d63Sopenharmony_ci options[Options::KEY_RIGHTS] = keypwd; 52354aa6d63Sopenharmony_ci options[Options::KEY_STORE_RIGHTS] = keyStorePwd; 52454aa6d63Sopenharmony_ci 52554aa6d63Sopenharmony_ci LocalizationAdapter adapter(&options); 52654aa6d63Sopenharmony_ci SignerFactory factory; 52754aa6d63Sopenharmony_ci std::shared_ptr<Signer> signer = factory.GetSigner(adapter); 52854aa6d63Sopenharmony_ci EXPECT_TRUE(signer != NULL); 52954aa6d63Sopenharmony_ci} 53054aa6d63Sopenharmony_ci 53154aa6d63Sopenharmony_ci/** 53254aa6d63Sopenharmony_ci * @tc.name: get_crls_test001 53354aa6d63Sopenharmony_ci * @tc.desc: Test function of LocalSigner::GetCrls() interface for SUCCESS . 53454aa6d63Sopenharmony_ci * @tc.size: MEDIUM 53554aa6d63Sopenharmony_ci * @tc.type: FUNC 53654aa6d63Sopenharmony_ci * @tc.level Level 1 53754aa6d63Sopenharmony_ci * @tc.require: SR000H63TL 53854aa6d63Sopenharmony_ci */ 53954aa6d63Sopenharmony_ciHWTEST_F(SignProfileTest, get_crls_test001, testing::ext::TestSize.Level1) 54054aa6d63Sopenharmony_ci{ 54154aa6d63Sopenharmony_ci Options options; 54254aa6d63Sopenharmony_ci std::string mode = SIGN_PROFILE_MODE; 54354aa6d63Sopenharmony_ci std::string keyAlias = SIGN_PROFILE_KEY_ALIAS; 54454aa6d63Sopenharmony_ci std::string profileCertFile = SIGN_PROFILE_PROFILE_CERT_FILE; 54554aa6d63Sopenharmony_ci std::string signAlg = SIGN_PROFILE_SIGN_ALG; 54654aa6d63Sopenharmony_ci std::string keystoreFile = SIGN_PROFILE_KEY_STORE_FILE; 54754aa6d63Sopenharmony_ci std::string outFile = SIGN_PROFILE_OUT_FILE; 54854aa6d63Sopenharmony_ci std::string inFile = SIGN_PROFILE_IN_FILE; 54954aa6d63Sopenharmony_ci char keyStorePwd[] = "123456"; 55054aa6d63Sopenharmony_ci char keypwd[] = "123456"; 55154aa6d63Sopenharmony_ci options[Options::KEY_ALIAS] = keyAlias; 55254aa6d63Sopenharmony_ci options[Options::MODE] = mode; 55354aa6d63Sopenharmony_ci options[Options::PROFILE_CERT_FILE] = profileCertFile; 55454aa6d63Sopenharmony_ci options[Options::SIGN_ALG] = signAlg; 55554aa6d63Sopenharmony_ci options[Options::KEY_STORE_FILE] = keystoreFile; 55654aa6d63Sopenharmony_ci options[Options::OUT_FILE] = outFile; 55754aa6d63Sopenharmony_ci options[Options::IN_FILE] = inFile; 55854aa6d63Sopenharmony_ci options[Options::KEY_RIGHTS] = keypwd; 55954aa6d63Sopenharmony_ci options[Options::KEY_STORE_RIGHTS] = keyStorePwd; 56054aa6d63Sopenharmony_ci 56154aa6d63Sopenharmony_ci LocalizationAdapter adapter(&options); 56254aa6d63Sopenharmony_ci SignerFactory factory; 56354aa6d63Sopenharmony_ci std::shared_ptr<Signer> signer = factory.GetSigner(adapter); 56454aa6d63Sopenharmony_ci STACK_OF(X509_CRL)* crls = signer->GetCrls(); 56554aa6d63Sopenharmony_ci EXPECT_TRUE(crls == NULL); 56654aa6d63Sopenharmony_ci} 56754aa6d63Sopenharmony_ci 56854aa6d63Sopenharmony_ci/** 56954aa6d63Sopenharmony_ci * @tc.name: get_certificates_test001 57054aa6d63Sopenharmony_ci * @tc.desc: Test function of LocalSigner::GetCertificates() interface for SUCCESS . 57154aa6d63Sopenharmony_ci * @tc.size: MEDIUM 57254aa6d63Sopenharmony_ci * @tc.type: FUNC 57354aa6d63Sopenharmony_ci * @tc.level Level 1 57454aa6d63Sopenharmony_ci * @tc.require: SR000H63TL 57554aa6d63Sopenharmony_ci */ 57654aa6d63Sopenharmony_ciHWTEST_F(SignProfileTest, get_certificates_test001, testing::ext::TestSize.Level1) 57754aa6d63Sopenharmony_ci{ 57854aa6d63Sopenharmony_ci Options options; 57954aa6d63Sopenharmony_ci std::string mode = SIGN_PROFILE_MODE; 58054aa6d63Sopenharmony_ci std::string keyAlias = SIGN_PROFILE_KEY_ALIAS; 58154aa6d63Sopenharmony_ci std::string profileCertFile = SIGN_PROFILE_PROFILE_CERT_FILE; 58254aa6d63Sopenharmony_ci std::string signAlg = SIGN_PROFILE_SIGN_ALG; 58354aa6d63Sopenharmony_ci std::string keystoreFile = SIGN_PROFILE_KEY_STORE_FILE; 58454aa6d63Sopenharmony_ci std::string outFile = SIGN_PROFILE_OUT_FILE; 58554aa6d63Sopenharmony_ci std::string inFile = SIGN_PROFILE_IN_FILE; 58654aa6d63Sopenharmony_ci char keyStorePwd[] = "123456"; 58754aa6d63Sopenharmony_ci char keypwd[] = "123456"; 58854aa6d63Sopenharmony_ci options[Options::KEY_ALIAS] = keyAlias; 58954aa6d63Sopenharmony_ci options[Options::MODE] = mode; 59054aa6d63Sopenharmony_ci options[Options::PROFILE_CERT_FILE] = profileCertFile; 59154aa6d63Sopenharmony_ci options[Options::SIGN_ALG] = signAlg; 59254aa6d63Sopenharmony_ci options[Options::KEY_STORE_FILE] = keystoreFile; 59354aa6d63Sopenharmony_ci options[Options::OUT_FILE] = outFile; 59454aa6d63Sopenharmony_ci options[Options::IN_FILE] = inFile; 59554aa6d63Sopenharmony_ci options[Options::KEY_RIGHTS] = keypwd; 59654aa6d63Sopenharmony_ci options[Options::KEY_STORE_RIGHTS] = keyStorePwd; 59754aa6d63Sopenharmony_ci 59854aa6d63Sopenharmony_ci LocalizationAdapter adapter(&options); 59954aa6d63Sopenharmony_ci SignerFactory factory; 60054aa6d63Sopenharmony_ci std::shared_ptr<Signer> signer = factory.GetSigner(adapter); 60154aa6d63Sopenharmony_ci STACK_OF(X509)* certs = signer->GetCertificates(); 60254aa6d63Sopenharmony_ci EXPECT_TRUE(certs != NULL); 60354aa6d63Sopenharmony_ci} 60454aa6d63Sopenharmony_ci 60554aa6d63Sopenharmony_ci/** 60654aa6d63Sopenharmony_ci * @tc.name: generate_signeddata_test001 60754aa6d63Sopenharmony_ci * @tc.desc: Test function of BCSignedDataGenerator::GenerateSignedData() interface for SUCCESS .set ownerid and 60854aa6d63Sopenharmony_ci * @tc.size: MEDIUM 60954aa6d63Sopenharmony_ci * @tc.type: FUNC 61054aa6d63Sopenharmony_ci * @tc.level Level 1 61154aa6d63Sopenharmony_ci * @tc.require: SR000H63TL 61254aa6d63Sopenharmony_ci */ 61354aa6d63Sopenharmony_ciHWTEST_F(SignProfileTest, generate_signeddata_test001, testing::ext::TestSize.Level1) 61454aa6d63Sopenharmony_ci{ 61554aa6d63Sopenharmony_ci Options options; 61654aa6d63Sopenharmony_ci options[Options::MODE] = SIGN_APP_MODE; 61754aa6d63Sopenharmony_ci options[Options::KEY_ALIAS] = SIGN_APP_KEY_ALIAS; 61854aa6d63Sopenharmony_ci options[Options::APP_CERT_FILE] = SIGN_APP_APP_CERT_FILE; 61954aa6d63Sopenharmony_ci options[Options::PROFILE_FILE] = SIGN_APP_PROFILE_FILE; 62054aa6d63Sopenharmony_ci options[Options::IN_FILE] = SIGN_APP_IN_FILE; 62154aa6d63Sopenharmony_ci options[Options::SIGN_ALG] = SIGN_APP_SIGN_ALG; 62254aa6d63Sopenharmony_ci options[Options::KEY_STORE_FILE] = SIGN_APP_KEY_STORE_FILE; 62354aa6d63Sopenharmony_ci options[Options::OUT_FILE] = SIGN_APP_OUT_FILE; 62454aa6d63Sopenharmony_ci char keyStorePwd[] = "123456"; 62554aa6d63Sopenharmony_ci char keypwd[] = "123456"; 62654aa6d63Sopenharmony_ci options[Options::KEY_RIGHTS] = keyStorePwd; 62754aa6d63Sopenharmony_ci options[Options::KEY_STORE_RIGHTS] = keypwd; 62854aa6d63Sopenharmony_ci 62954aa6d63Sopenharmony_ci // config设置算法 signer 63054aa6d63Sopenharmony_ci SignerConfig config; 63154aa6d63Sopenharmony_ci config.SetOptions(&options); 63254aa6d63Sopenharmony_ci SignatureAlgorithmHelper algClass; 63354aa6d63Sopenharmony_ci std::vector<SignatureAlgorithmHelper> sigs; 63454aa6d63Sopenharmony_ci sigs.resize(1); 63554aa6d63Sopenharmony_ci sigs[0].m_id = SignatureAlgorithmId::ECDSA_WITH_SHA256; 63654aa6d63Sopenharmony_ci config.SetSignatureAlgorithms(sigs); 63754aa6d63Sopenharmony_ci 63854aa6d63Sopenharmony_ci std::string content = "digest content"; 63954aa6d63Sopenharmony_ci std::string signedData; 64054aa6d63Sopenharmony_ci std::shared_ptr<BCSignedDataGenerator> signedDataGenerator = 64154aa6d63Sopenharmony_ci std::make_shared<BCSignedDataGenerator>(); 64254aa6d63Sopenharmony_ci signedDataGenerator->SetOwnerId(OWNERID_OID); 64354aa6d63Sopenharmony_ci int result = signedDataGenerator->GenerateSignedData(content, &config, signedData); 64454aa6d63Sopenharmony_ci EXPECT_EQ(result, 0); 64554aa6d63Sopenharmony_ci} 64654aa6d63Sopenharmony_ci 64754aa6d63Sopenharmony_ci/** 64854aa6d63Sopenharmony_ci * @tc.name: generate_signeddata_test002 64954aa6d63Sopenharmony_ci * @tc.desc: Test function of BCPkcs7Generator::GenerateSignedData() interface for SUCCESS 65054aa6d63Sopenharmony_ci * @tc.size: MEDIUM 65154aa6d63Sopenharmony_ci * @tc.type: FUNC 65254aa6d63Sopenharmony_ci * @tc.level Level 1 65354aa6d63Sopenharmony_ci * @tc.require: SR000H63TL 65454aa6d63Sopenharmony_ci */ 65554aa6d63Sopenharmony_ciHWTEST_F(SignProfileTest, generate_signeddata_test002, testing::ext::TestSize.Level1) 65654aa6d63Sopenharmony_ci{ 65754aa6d63Sopenharmony_ci Options options; 65854aa6d63Sopenharmony_ci options[Options::MODE] = SIGN_APP_MODE; 65954aa6d63Sopenharmony_ci options[Options::KEY_ALIAS] = SIGN_APP_KEY_ALIAS; 66054aa6d63Sopenharmony_ci options[Options::APP_CERT_FILE] = SIGN_APP_APP_CERT_FILE; 66154aa6d63Sopenharmony_ci options[Options::PROFILE_FILE] = SIGN_APP_PROFILE_FILE; 66254aa6d63Sopenharmony_ci options[Options::IN_FILE] = SIGN_APP_IN_FILE; 66354aa6d63Sopenharmony_ci options[Options::SIGN_ALG] = SIGN_APP_SIGN_ALG; 66454aa6d63Sopenharmony_ci options[Options::KEY_STORE_FILE] = SIGN_APP_KEY_STORE_FILE; 66554aa6d63Sopenharmony_ci options[Options::OUT_FILE] = SIGN_APP_OUT_FILE; 66654aa6d63Sopenharmony_ci char keyStorePwd[] = "123456"; 66754aa6d63Sopenharmony_ci char keypwd[] = "123456"; 66854aa6d63Sopenharmony_ci options[Options::KEY_RIGHTS] = keyStorePwd; 66954aa6d63Sopenharmony_ci options[Options::KEY_STORE_RIGHTS] = keypwd; 67054aa6d63Sopenharmony_ci 67154aa6d63Sopenharmony_ci // config设置算法 signer 67254aa6d63Sopenharmony_ci SignerConfig config; 67354aa6d63Sopenharmony_ci config.SetOptions(&options); 67454aa6d63Sopenharmony_ci SignatureAlgorithmHelper algClass; 67554aa6d63Sopenharmony_ci std::vector<SignatureAlgorithmHelper> sigs; 67654aa6d63Sopenharmony_ci sigs.resize(1); 67754aa6d63Sopenharmony_ci sigs[0].m_id = SignatureAlgorithmId::ECDSA_WITH_SHA256; 67854aa6d63Sopenharmony_ci config.SetSignatureAlgorithms(sigs); 67954aa6d63Sopenharmony_ci 68054aa6d63Sopenharmony_ci std::string content = "digest content"; 68154aa6d63Sopenharmony_ci std::string signedData; 68254aa6d63Sopenharmony_ci std::shared_ptr<Pkcs7Generator> pkcs7Generator = std::make_shared<BCPkcs7Generator>(); 68354aa6d63Sopenharmony_ci int result = pkcs7Generator->GenerateSignedData(content, &config, signedData); 68454aa6d63Sopenharmony_ci EXPECT_EQ(result, 0); 68554aa6d63Sopenharmony_ci} 68654aa6d63Sopenharmony_ci/** 68754aa6d63Sopenharmony_ci * @tc.name: run_sign_app_test001 68854aa6d63Sopenharmony_ci * @tc.desc: Test function of HapSignTool::RunSignApp() interface for SUCCESS. 68954aa6d63Sopenharmony_ci * @tc.size: MEDIUM 69054aa6d63Sopenharmony_ci * @tc.type: FUNC 69154aa6d63Sopenharmony_ci * @tc.level Level 1 69254aa6d63Sopenharmony_ci * @tc.require: SR000H63TL 69354aa6d63Sopenharmony_ci*/ 69454aa6d63Sopenharmony_ciHWTEST_F(SignProfileTest, run_sign_app_test001, testing::ext::TestSize.Level1) 69554aa6d63Sopenharmony_ci{ 69654aa6d63Sopenharmony_ci std::unique_ptr<SignToolServiceImpl> api = std::make_unique<SignToolServiceImpl>(); 69754aa6d63Sopenharmony_ci std::shared_ptr<Options> params = std::make_shared<Options>(); 69854aa6d63Sopenharmony_ci 69954aa6d63Sopenharmony_ci char keyPwd[] = "123456"; 70054aa6d63Sopenharmony_ci char keystorePwd[] = "123456"; 70154aa6d63Sopenharmony_ci 70254aa6d63Sopenharmony_ci (*params)["mode"] = SIGN_APP_MODE; 70354aa6d63Sopenharmony_ci (*params)["keyAlias"] = SIGN_APP_KEY_ALIAS; 70454aa6d63Sopenharmony_ci (*params)["signAlg"] = SIGN_APP_SIGN_ALG; 70554aa6d63Sopenharmony_ci (*params)["appCertFile"] = SIGN_APP_APP_CERT_FILE; 70654aa6d63Sopenharmony_ci (*params)["profileFile"] = SIGN_APP_PROFILE_FILE; 70754aa6d63Sopenharmony_ci (*params)["inFile"] = SIGN_APP_IN_FILE; 70854aa6d63Sopenharmony_ci (*params)["keystoreFile"] = SIGN_APP_KEY_STORE_FILE; 70954aa6d63Sopenharmony_ci (*params)["outFile"] = SIGN_APP_OUT_FILE; 71054aa6d63Sopenharmony_ci (*params)["keyPwd"] = keyPwd; 71154aa6d63Sopenharmony_ci (*params)["keystorePwd"] = keystorePwd; 71254aa6d63Sopenharmony_ci (*params)["inForm"] = std::string("zip"); 71354aa6d63Sopenharmony_ci (*params)["profileSigned"] = std::string("1"); 71454aa6d63Sopenharmony_ci (*params)["signCode"] = std::string("1"); 71554aa6d63Sopenharmony_ci 71654aa6d63Sopenharmony_ci bool ret = ParamsRunTool::RunSignApp(params.get(), *api); 71754aa6d63Sopenharmony_ci EXPECT_EQ(ret, true); 71854aa6d63Sopenharmony_ci} 71954aa6d63Sopenharmony_ci 72054aa6d63Sopenharmony_ci 72154aa6d63Sopenharmony_ci/** 72254aa6d63Sopenharmony_ci * @tc.name: run_sign_app_test002 72354aa6d63Sopenharmony_ci * @tc.desc: Test function of HapSignTool::RunSignApp() interface for SUCCESS. 72454aa6d63Sopenharmony_ci * @tc.size: MEDIUM 72554aa6d63Sopenharmony_ci * @tc.type: FUNC 72654aa6d63Sopenharmony_ci * @tc.level Level 1 72754aa6d63Sopenharmony_ci * @tc.require: SR000H63TL 72854aa6d63Sopenharmony_ci*/ 72954aa6d63Sopenharmony_ciHWTEST_F(SignProfileTest, run_sign_app_test002, testing::ext::TestSize.Level1) 73054aa6d63Sopenharmony_ci{ 73154aa6d63Sopenharmony_ci std::unique_ptr<SignToolServiceImpl> api = std::make_unique<SignToolServiceImpl>(); 73254aa6d63Sopenharmony_ci std::shared_ptr<Options> params = std::make_shared<Options>(); 73354aa6d63Sopenharmony_ci 73454aa6d63Sopenharmony_ci char keyPwd[] = "123456"; 73554aa6d63Sopenharmony_ci char keystorePwd[] = "123456"; 73654aa6d63Sopenharmony_ci 73754aa6d63Sopenharmony_ci (*params)["mode"] = SIGN_APP_MODE; 73854aa6d63Sopenharmony_ci (*params)["keyAlias"] = SIGN_APP_KEY_ALIAS; 73954aa6d63Sopenharmony_ci (*params)["signAlg"] = SIGN_APP_SIGN_ALG; 74054aa6d63Sopenharmony_ci (*params)["appCertFile"] = SIGN_APP_APP_CERT_FILE; 74154aa6d63Sopenharmony_ci (*params)["profileFile"] = SIGN_APP_PROFILE_FILE; 74254aa6d63Sopenharmony_ci (*params)["inFile"] = SIGN_APP_IN_FILE; 74354aa6d63Sopenharmony_ci (*params)["keystoreFile"] = SIGN_APP_KEY_STORE_FILE; 74454aa6d63Sopenharmony_ci (*params)["outFile"] = SIGN_APP_OUT_FILE; 74554aa6d63Sopenharmony_ci (*params)["keyPwd"] = keyPwd; 74654aa6d63Sopenharmony_ci (*params)["keystorePwd"] = keystorePwd; 74754aa6d63Sopenharmony_ci (*params)["inForm"] = std::string("zip"); 74854aa6d63Sopenharmony_ci (*params)["profileSigned"] = std::string("0"); 74954aa6d63Sopenharmony_ci (*params)["signCode"] = std::string("0"); 75054aa6d63Sopenharmony_ci 75154aa6d63Sopenharmony_ci bool ret = ParamsRunTool::RunSignApp(params.get(), *api); 75254aa6d63Sopenharmony_ci EXPECT_EQ(ret, false); 75354aa6d63Sopenharmony_ci} 75454aa6d63Sopenharmony_ci 75554aa6d63Sopenharmony_ci} 75654aa6d63Sopenharmony_ci}