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}