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 <filesystem>
1654aa6d63Sopenharmony_ci#include "params_run_tool.h"
1754aa6d63Sopenharmony_ci#include "local_sign_provider.h"
1854aa6d63Sopenharmony_ci#include "sign_hap.h"
1954aa6d63Sopenharmony_ci#include "sign_provider.h"
2054aa6d63Sopenharmony_ci#include "sign_tool_service_impl.h"
2154aa6d63Sopenharmony_ci#include "remote_sign_provider.h"
2254aa6d63Sopenharmony_ci#include "digest_common.h"
2354aa6d63Sopenharmony_ci#include "hap_sign_test.h"
2454aa6d63Sopenharmony_ci#include <unistd.h>
2554aa6d63Sopenharmony_ci
2654aa6d63Sopenharmony_cinamespace OHOS {
2754aa6d63Sopenharmony_cinamespace SignatureTools {
2854aa6d63Sopenharmony_ci
2954aa6d63Sopenharmony_civoid GenUnvaildUnSignHap(const std::string& path)
3054aa6d63Sopenharmony_ci{
3154aa6d63Sopenharmony_ci    std::ofstream outfile(path);
3254aa6d63Sopenharmony_ci    if (!outfile) {
3354aa6d63Sopenharmony_ci        SIGNATURE_TOOLS_LOGE("Unable to open file: %s", path.c_str());
3454aa6d63Sopenharmony_ci        return;
3554aa6d63Sopenharmony_ci    }
3654aa6d63Sopenharmony_ci    outfile << "Hello, this is a Unvaild un sign Hap.\n";
3754aa6d63Sopenharmony_ci    outfile.flush();
3854aa6d63Sopenharmony_ci    outfile.close();
3954aa6d63Sopenharmony_ci    return;
4054aa6d63Sopenharmony_ci}
4154aa6d63Sopenharmony_ci
4254aa6d63Sopenharmony_civoid HapSignTest::SetUpTestCase(void)
4354aa6d63Sopenharmony_ci{
4454aa6d63Sopenharmony_ci    GenUnvaildUnSignHap("./hapSign/phone-default-unsigned");
4554aa6d63Sopenharmony_ci    GenUnvaildUnSignHap("./hapSign/nohap.hap");
4654aa6d63Sopenharmony_ci
4754aa6d63Sopenharmony_ci    (void)rename("./hapSign/phone-default-unsigned-test.txt", "./hapSign/phone-default-unsigned-test.hap");
4854aa6d63Sopenharmony_ci    (void)rename("./hapSign/phone-default-unsigned.txt", "./hapSign/phone-default-unsigned.hap");
4954aa6d63Sopenharmony_ci    (void)rename("./hapSign/unsigned_with_cd_and_eocd.txt", "./hapSign/unsigned_with_cd_and_eocd.hap");
5054aa6d63Sopenharmony_ci    (void)rename("./hapSign/unsigned_with_eocd.txt", "./hapSign/unsigned_with_eocd.hap");
5154aa6d63Sopenharmony_ci    sync();
5254aa6d63Sopenharmony_ci}
5354aa6d63Sopenharmony_ci
5454aa6d63Sopenharmony_civoid HapSignTest::TearDownTestCase(void)
5554aa6d63Sopenharmony_ci{
5654aa6d63Sopenharmony_ci}
5754aa6d63Sopenharmony_ci/*
5854aa6d63Sopenharmony_ci * @tc.name: hap_sign_test_001
5954aa6d63Sopenharmony_ci * @tc.desc: This function tests success for interface SignHap
6054aa6d63Sopenharmony_ci * @tc.type: FUNC
6154aa6d63Sopenharmony_ci * @tc.require:
6254aa6d63Sopenharmony_ci */
6354aa6d63Sopenharmony_ciHWTEST_F(HapSignTest, hap_sign_test_001, testing::ext::TestSize.Level1)
6454aa6d63Sopenharmony_ci{
6554aa6d63Sopenharmony_ci    SIGNATURE_TOOLS_LOGI("hello world !!!");
6654aa6d63Sopenharmony_ci    std::unique_ptr<SignToolServiceImpl> api = std::make_unique<SignToolServiceImpl>();
6754aa6d63Sopenharmony_ci    std::shared_ptr<Options> params = std::make_shared<Options>();
6854aa6d63Sopenharmony_ci
6954aa6d63Sopenharmony_ci    std::string mode = "localSign";
7054aa6d63Sopenharmony_ci    std::string keyAlias = "oh-app1-key-v1";
7154aa6d63Sopenharmony_ci    std::string signAlg = "SHA256withECDSA";
7254aa6d63Sopenharmony_ci    std::string signCode = "0";
7354aa6d63Sopenharmony_ci    std::string appCertFile = "./hapSign/app-release1.pem";
7454aa6d63Sopenharmony_ci    std::string profileFile = "./hapSign/signed-profile.p7b";
7554aa6d63Sopenharmony_ci    std::string inFile = "./hapSign/phone-default-unsigned.hap";
7654aa6d63Sopenharmony_ci    std::string keystoreFile = "./hapSign/ohtest.p12";
7754aa6d63Sopenharmony_ci    std::string outFile = "./hapSign/phone-default-signed.hap";
7854aa6d63Sopenharmony_ci    char keyPwd[] = "123456";
7954aa6d63Sopenharmony_ci    char keystorePwd[] = "123456";
8054aa6d63Sopenharmony_ci
8154aa6d63Sopenharmony_ci    (*params)["mode"] = mode;
8254aa6d63Sopenharmony_ci    (*params)["keyAlias"] = keyAlias;
8354aa6d63Sopenharmony_ci    (*params)["signAlg"] = signAlg;
8454aa6d63Sopenharmony_ci    (*params)["signCode"] = signCode;
8554aa6d63Sopenharmony_ci    (*params)["appCertFile"] = appCertFile;
8654aa6d63Sopenharmony_ci    (*params)["profileFile"] = profileFile;
8754aa6d63Sopenharmony_ci    (*params)["inFile"] = inFile;
8854aa6d63Sopenharmony_ci    (*params)["keystoreFile"] = keystoreFile;
8954aa6d63Sopenharmony_ci    (*params)["outFile"] = outFile;
9054aa6d63Sopenharmony_ci    (*params)["keyPwd"] = keyPwd;
9154aa6d63Sopenharmony_ci    (*params)["keystorePwd"] = keystorePwd;
9254aa6d63Sopenharmony_ci
9354aa6d63Sopenharmony_ci    bool ret = api->SignHap(params.get());
9454aa6d63Sopenharmony_ci    EXPECT_EQ(ret, true);
9554aa6d63Sopenharmony_ci}
9654aa6d63Sopenharmony_ci/*
9754aa6d63Sopenharmony_ci * @tc.name: hap_sign_test_002
9854aa6d63Sopenharmony_ci * @tc.desc: This function tests success for interface SignHap
9954aa6d63Sopenharmony_ci * @tc.type: FUNC
10054aa6d63Sopenharmony_ci * @tc.require:
10154aa6d63Sopenharmony_ci */
10254aa6d63Sopenharmony_ciHWTEST_F(HapSignTest, hap_sign_test_002, testing::ext::TestSize.Level1)
10354aa6d63Sopenharmony_ci{
10454aa6d63Sopenharmony_ci    SIGNATURE_TOOLS_LOGI("hello world !!!");
10554aa6d63Sopenharmony_ci    std::unique_ptr<SignToolServiceImpl> api = std::make_unique<SignToolServiceImpl>();
10654aa6d63Sopenharmony_ci    std::shared_ptr<Options> params = std::make_shared<Options>();
10754aa6d63Sopenharmony_ci
10854aa6d63Sopenharmony_ci    std::string mode = "localSign";
10954aa6d63Sopenharmony_ci    std::string keyAlias = "oh-app1-key-v1";
11054aa6d63Sopenharmony_ci    std::string signAlg = "SHA256withECDSA";
11154aa6d63Sopenharmony_ci    std::string signCode = "1";
11254aa6d63Sopenharmony_ci    std::string appCertFile = "./hapSign/app-release1.pem";
11354aa6d63Sopenharmony_ci    std::string profileFile = "./hapSign/signed-profile.p7b";
11454aa6d63Sopenharmony_ci    std::string inFile = "./hapSign/phone-default-unsigned.hap";
11554aa6d63Sopenharmony_ci    std::string keystoreFile = "./hapSign/ohtest.p12";
11654aa6d63Sopenharmony_ci    std::string outFile = "./hapSign/phone-default-signed.hap";
11754aa6d63Sopenharmony_ci    char keyPwd[] = "123456";
11854aa6d63Sopenharmony_ci    char keystorePwd[] = "123456";
11954aa6d63Sopenharmony_ci
12054aa6d63Sopenharmony_ci    (*params)["mode"] = mode;
12154aa6d63Sopenharmony_ci    (*params)["keyAlias"] = keyAlias;
12254aa6d63Sopenharmony_ci    (*params)["signAlg"] = signAlg;
12354aa6d63Sopenharmony_ci    (*params)["signCode"] = signCode;
12454aa6d63Sopenharmony_ci    (*params)["appCertFile"] = appCertFile;
12554aa6d63Sopenharmony_ci    (*params)["profileFile"] = profileFile;
12654aa6d63Sopenharmony_ci    (*params)["inFile"] = inFile;
12754aa6d63Sopenharmony_ci    (*params)["keystoreFile"] = keystoreFile;
12854aa6d63Sopenharmony_ci    (*params)["outFile"] = outFile;
12954aa6d63Sopenharmony_ci    (*params)["keyPwd"] = keyPwd;
13054aa6d63Sopenharmony_ci    (*params)["keystorePwd"] = keystorePwd;
13154aa6d63Sopenharmony_ci
13254aa6d63Sopenharmony_ci    bool ret = api->SignHap(params.get());
13354aa6d63Sopenharmony_ci    EXPECT_EQ(ret, true);
13454aa6d63Sopenharmony_ci}
13554aa6d63Sopenharmony_ci/*
13654aa6d63Sopenharmony_ci * @tc.name: hap_sign_test_003
13754aa6d63Sopenharmony_ci * @tc.desc: This function tests success for interface SignHap
13854aa6d63Sopenharmony_ci * @tc.type: FUNC
13954aa6d63Sopenharmony_ci * @tc.require:
14054aa6d63Sopenharmony_ci */
14154aa6d63Sopenharmony_ciHWTEST_F(HapSignTest, hap_sign_test_003, testing::ext::TestSize.Level1)
14254aa6d63Sopenharmony_ci{
14354aa6d63Sopenharmony_ci    SIGNATURE_TOOLS_LOGI("hello world !!!");
14454aa6d63Sopenharmony_ci    std::unique_ptr<SignToolServiceImpl> api = std::make_unique<SignToolServiceImpl>();
14554aa6d63Sopenharmony_ci    std::shared_ptr<Options> params = std::make_shared<Options>();
14654aa6d63Sopenharmony_ci
14754aa6d63Sopenharmony_ci    std::string mode = "localSign";
14854aa6d63Sopenharmony_ci    std::string keyAlias = "oh-app1-key-v1";
14954aa6d63Sopenharmony_ci    std::string signAlg = "SHA256withECDSA";
15054aa6d63Sopenharmony_ci    std::string signCode = "1";
15154aa6d63Sopenharmony_ci    std::string appCertFile = "./hapSign/app-release1.pem";
15254aa6d63Sopenharmony_ci    std::string profileFile = "./hapSign/signed-profile.p7b";
15354aa6d63Sopenharmony_ci    std::string profileSigned = "0";
15454aa6d63Sopenharmony_ci    std::string inFile = "./hapSign/phone-default-unsigned.hap";
15554aa6d63Sopenharmony_ci    std::string keystoreFile = "./hapSign/ohtest.p12";
15654aa6d63Sopenharmony_ci    std::string outFile = "./hapSign/phone-default-signed.hap";
15754aa6d63Sopenharmony_ci    char keyPwd[] = "123456";
15854aa6d63Sopenharmony_ci    char keystorePwd[] = "123456";
15954aa6d63Sopenharmony_ci
16054aa6d63Sopenharmony_ci    (*params)["mode"] = mode;
16154aa6d63Sopenharmony_ci    (*params)["keyAlias"] = keyAlias;
16254aa6d63Sopenharmony_ci    (*params)["signAlg"] = signAlg;
16354aa6d63Sopenharmony_ci    (*params)["signCode"] = signCode;
16454aa6d63Sopenharmony_ci    (*params)["appCertFile"] = appCertFile;
16554aa6d63Sopenharmony_ci    (*params)["profileFile"] = profileFile;
16654aa6d63Sopenharmony_ci    (*params)["profileSigned"] = profileSigned;
16754aa6d63Sopenharmony_ci    (*params)["inFile"] = inFile;
16854aa6d63Sopenharmony_ci    (*params)["keystoreFile"] = keystoreFile;
16954aa6d63Sopenharmony_ci    (*params)["outFile"] = outFile;
17054aa6d63Sopenharmony_ci    (*params)["keyPwd"] = keyPwd;
17154aa6d63Sopenharmony_ci    (*params)["keystorePwd"] = keystorePwd;
17254aa6d63Sopenharmony_ci
17354aa6d63Sopenharmony_ci    bool ret = api->SignHap(params.get());
17454aa6d63Sopenharmony_ci    EXPECT_EQ(ret, false);
17554aa6d63Sopenharmony_ci}
17654aa6d63Sopenharmony_ci/*
17754aa6d63Sopenharmony_ci * @tc.name: hap_sign_test_004
17854aa6d63Sopenharmony_ci * @tc.desc: This function tests success for interface SignHap
17954aa6d63Sopenharmony_ci * @tc.type: FUNC
18054aa6d63Sopenharmony_ci * @tc.require:
18154aa6d63Sopenharmony_ci */
18254aa6d63Sopenharmony_ciHWTEST_F(HapSignTest, hap_sign_test_004, testing::ext::TestSize.Level1)
18354aa6d63Sopenharmony_ci{
18454aa6d63Sopenharmony_ci    SIGNATURE_TOOLS_LOGI("hello world !!!");
18554aa6d63Sopenharmony_ci    std::unique_ptr<SignToolServiceImpl> api = std::make_unique<SignToolServiceImpl>();
18654aa6d63Sopenharmony_ci    std::shared_ptr<Options> params = std::make_shared<Options>();
18754aa6d63Sopenharmony_ci
18854aa6d63Sopenharmony_ci    std::string mode = "localSign";
18954aa6d63Sopenharmony_ci    std::string keyAlias = "oh-app1-key-v1";
19054aa6d63Sopenharmony_ci    std::string signAlg = "SHA256withECDSA";
19154aa6d63Sopenharmony_ci    std::string signCode = "1";
19254aa6d63Sopenharmony_ci    std::string appCertFile = "./hapSign/app-release1.pem";
19354aa6d63Sopenharmony_ci    std::string profileFile = "./hapSign/signed-profile.p7b";
19454aa6d63Sopenharmony_ci    std::string profileSigned = "1";
19554aa6d63Sopenharmony_ci    std::string inFile = "./hapSign/phone-default-unsigned.hap";
19654aa6d63Sopenharmony_ci    std::string keystoreFile = "./hapSign/ohtest.p12";
19754aa6d63Sopenharmony_ci    std::string outFile = "./hapSign/phone-default-signed.hap";
19854aa6d63Sopenharmony_ci    char keyPwd[] = "123456";
19954aa6d63Sopenharmony_ci    char keystorePwd[] = "123456";
20054aa6d63Sopenharmony_ci
20154aa6d63Sopenharmony_ci    (*params)["mode"] = mode;
20254aa6d63Sopenharmony_ci    (*params)["keyAlias"] = keyAlias;
20354aa6d63Sopenharmony_ci    (*params)["signAlg"] = signAlg;
20454aa6d63Sopenharmony_ci    (*params)["signCode"] = signCode;
20554aa6d63Sopenharmony_ci    (*params)["appCertFile"] = appCertFile;
20654aa6d63Sopenharmony_ci    (*params)["profileFile"] = profileFile;
20754aa6d63Sopenharmony_ci    (*params)["profileSigned"] = profileSigned;
20854aa6d63Sopenharmony_ci    (*params)["inFile"] = inFile;
20954aa6d63Sopenharmony_ci    (*params)["keystoreFile"] = keystoreFile;
21054aa6d63Sopenharmony_ci    (*params)["outFile"] = outFile;
21154aa6d63Sopenharmony_ci    (*params)["keyPwd"] = keyPwd;
21254aa6d63Sopenharmony_ci    (*params)["keystorePwd"] = keystorePwd;
21354aa6d63Sopenharmony_ci
21454aa6d63Sopenharmony_ci    bool ret = api->SignHap(params.get());
21554aa6d63Sopenharmony_ci    EXPECT_EQ(ret, true);
21654aa6d63Sopenharmony_ci}
21754aa6d63Sopenharmony_ci/*
21854aa6d63Sopenharmony_ci * @tc.name: hap_sign_test_005
21954aa6d63Sopenharmony_ci * @tc.desc: This function tests success for interface Sign
22054aa6d63Sopenharmony_ci * @tc.type: FUNC
22154aa6d63Sopenharmony_ci * @tc.require:
22254aa6d63Sopenharmony_ci */
22354aa6d63Sopenharmony_ciHWTEST_F(HapSignTest, hap_sign_test_005, testing::ext::TestSize.Level1)
22454aa6d63Sopenharmony_ci{
22554aa6d63Sopenharmony_ci    SIGNATURE_TOOLS_LOGI("hello world !!!");
22654aa6d63Sopenharmony_ci    std::unique_ptr<SignProvider> signProvider = std::make_unique<LocalSignProvider>();
22754aa6d63Sopenharmony_ci    std::shared_ptr<Options> params = std::make_shared<Options>();
22854aa6d63Sopenharmony_ci
22954aa6d63Sopenharmony_ci    std::string mode = "localSign";
23054aa6d63Sopenharmony_ci    std::string keyAlias = "oh-app1-key-v1";
23154aa6d63Sopenharmony_ci    std::string signAlg = "SHA256withECDSA";
23254aa6d63Sopenharmony_ci    std::string signCode = "0";
23354aa6d63Sopenharmony_ci    std::string appCertFile = "./hapSign/app-release1.pem";
23454aa6d63Sopenharmony_ci    std::string profileFile = "./hapSign/signed-profile.p7b";
23554aa6d63Sopenharmony_ci    std::string inFile = "./hapSign/phone-default-unsigned.hap";
23654aa6d63Sopenharmony_ci    std::string keystoreFile = "./hapSign/ohtest.p12";
23754aa6d63Sopenharmony_ci    std::string outFile = "./hapSign/phone-default-signed.hap";
23854aa6d63Sopenharmony_ci    char keyPwd[] = "123456";
23954aa6d63Sopenharmony_ci    char keystorePwd[] = "123456";
24054aa6d63Sopenharmony_ci
24154aa6d63Sopenharmony_ci    (*params)["mode"] = mode;
24254aa6d63Sopenharmony_ci    (*params)["keyAlias"] = keyAlias;
24354aa6d63Sopenharmony_ci    (*params)["signAlg"] = signAlg;
24454aa6d63Sopenharmony_ci    (*params)["signCode"] = signCode;
24554aa6d63Sopenharmony_ci    (*params)["appCertFile"] = appCertFile;
24654aa6d63Sopenharmony_ci    (*params)["profileFile"] = profileFile;
24754aa6d63Sopenharmony_ci    (*params)["inFile"] = inFile;
24854aa6d63Sopenharmony_ci    (*params)["keystoreFile"] = keystoreFile;
24954aa6d63Sopenharmony_ci    (*params)["outFile"] = outFile;
25054aa6d63Sopenharmony_ci    (*params)["keyPwd"] = keyPwd;
25154aa6d63Sopenharmony_ci    (*params)["keystorePwd"] = keystorePwd;
25254aa6d63Sopenharmony_ci
25354aa6d63Sopenharmony_ci    signProvider->CheckInputCertMatchWithProfile(nullptr, nullptr);
25454aa6d63Sopenharmony_ci    bool retParam = signProvider->CheckParams(params.get());
25554aa6d63Sopenharmony_ci    EXPECT_EQ(retParam, true);
25654aa6d63Sopenharmony_ci
25754aa6d63Sopenharmony_ci    std::optional<X509_CRL*> crl = signProvider->GetCrl();
25854aa6d63Sopenharmony_ci    EXPECT_EQ(crl.has_value(), false);
25954aa6d63Sopenharmony_ci
26054aa6d63Sopenharmony_ci    bool ret = signProvider->Sign(params.get());
26154aa6d63Sopenharmony_ci    EXPECT_EQ(ret, true);
26254aa6d63Sopenharmony_ci}
26354aa6d63Sopenharmony_ci
26454aa6d63Sopenharmony_ci/*
26554aa6d63Sopenharmony_ci * @tc.name: hap_sign_test_006
26654aa6d63Sopenharmony_ci * @tc.desc: This function tests failure for interface CheckParams due to parameter signCode is 3
26754aa6d63Sopenharmony_ci * @tc.type: FUNC
26854aa6d63Sopenharmony_ci * @tc.require:
26954aa6d63Sopenharmony_ci */
27054aa6d63Sopenharmony_ciHWTEST_F(HapSignTest, hap_sign_test_006, testing::ext::TestSize.Level1)
27154aa6d63Sopenharmony_ci{
27254aa6d63Sopenharmony_ci    SIGNATURE_TOOLS_LOGI("hello world !!!");
27354aa6d63Sopenharmony_ci    std::unique_ptr<SignProvider> signProvider = std::make_unique<LocalSignProvider>();
27454aa6d63Sopenharmony_ci    std::shared_ptr<Options> params = std::make_shared<Options>();
27554aa6d63Sopenharmony_ci
27654aa6d63Sopenharmony_ci    std::string mode = "localSign";
27754aa6d63Sopenharmony_ci    std::string keyAlias = "oh-app1-key-v1";
27854aa6d63Sopenharmony_ci    std::string signAlg = "SHA256withECDSA";
27954aa6d63Sopenharmony_ci    std::string signCode = "3";
28054aa6d63Sopenharmony_ci    std::string appCertFile = "./hapSign/app-release1.pem";
28154aa6d63Sopenharmony_ci    std::string profileFile = "./hapSign/signed-profile.p7b";
28254aa6d63Sopenharmony_ci    std::string inFile = "./hapSign/phone-default-unsigned.hap";
28354aa6d63Sopenharmony_ci    std::string keystoreFile = "./hapSign/ohtest.p12";
28454aa6d63Sopenharmony_ci    std::string outFile = "./hapSign/phone-default-signed.hap";
28554aa6d63Sopenharmony_ci    char keyPwd[] = "123456";
28654aa6d63Sopenharmony_ci    char keystorePwd[] = "123456";
28754aa6d63Sopenharmony_ci
28854aa6d63Sopenharmony_ci    (*params)["mode"] = mode;
28954aa6d63Sopenharmony_ci    (*params)["keyAlias"] = keyAlias;
29054aa6d63Sopenharmony_ci    (*params)["signAlg"] = signAlg;
29154aa6d63Sopenharmony_ci    (*params)["signCode"] = signCode;
29254aa6d63Sopenharmony_ci    (*params)["appCertFile"] = appCertFile;
29354aa6d63Sopenharmony_ci    (*params)["profileFile"] = profileFile;
29454aa6d63Sopenharmony_ci    (*params)["inFile"] = inFile;
29554aa6d63Sopenharmony_ci    (*params)["keystoreFile"] = keystoreFile;
29654aa6d63Sopenharmony_ci    (*params)["outFile"] = outFile;
29754aa6d63Sopenharmony_ci    (*params)["keyPwd"] = keyPwd;
29854aa6d63Sopenharmony_ci    (*params)["keystorePwd"] = keystorePwd;
29954aa6d63Sopenharmony_ci
30054aa6d63Sopenharmony_ci    bool retParam = signProvider->CheckParams(params.get());
30154aa6d63Sopenharmony_ci    EXPECT_EQ(retParam, false);
30254aa6d63Sopenharmony_ci}
30354aa6d63Sopenharmony_ci
30454aa6d63Sopenharmony_ci/*
30554aa6d63Sopenharmony_ci * @tc.name: hap_sign_test_007
30654aa6d63Sopenharmony_ci * @tc.desc: This function tests failure for interface CheckParams due to parameter signCode and appCertFile
30754aa6d63Sopenharmony_ci * @tc.type: FUNC
30854aa6d63Sopenharmony_ci * @tc.require:
30954aa6d63Sopenharmony_ci */
31054aa6d63Sopenharmony_ciHWTEST_F(HapSignTest, hap_sign_test_007, testing::ext::TestSize.Level1)
31154aa6d63Sopenharmony_ci{
31254aa6d63Sopenharmony_ci    SIGNATURE_TOOLS_LOGI("hello world !!!");
31354aa6d63Sopenharmony_ci    std::unique_ptr<SignProvider> signProvider = std::make_unique<LocalSignProvider>();
31454aa6d63Sopenharmony_ci    std::shared_ptr<Options> params = std::make_shared<Options>();
31554aa6d63Sopenharmony_ci
31654aa6d63Sopenharmony_ci    std::string mode = "localSign";
31754aa6d63Sopenharmony_ci    std::string keyAlias = "oh-app1-key-v1";
31854aa6d63Sopenharmony_ci    std::string signAlg = "SHA256withECDSA";
31954aa6d63Sopenharmony_ci    std::string signCode = "0";
32054aa6d63Sopenharmony_ci    std::string appCertFile = "./hapSign/app-release1.pem";
32154aa6d63Sopenharmony_ci    std::string profileFile = "./hapSign/signed-profile.p7b";
32254aa6d63Sopenharmony_ci    std::string inFile = "./hapSign/phone-default-unsigned.hap";
32354aa6d63Sopenharmony_ci    std::string keystoreFile = "./hapSign/ohtest.p12";
32454aa6d63Sopenharmony_ci    std::string outFile = "./hapSign/phone-default-signed.hap";
32554aa6d63Sopenharmony_ci    char keyPwd[] = "123456";
32654aa6d63Sopenharmony_ci    char keystorePwd[] = "123456";
32754aa6d63Sopenharmony_ci
32854aa6d63Sopenharmony_ci    (*params)["mode"] = mode;
32954aa6d63Sopenharmony_ci    (*params)["keyAlias"] = keyAlias;
33054aa6d63Sopenharmony_ci    (*params)["signAlg"] = signAlg;
33154aa6d63Sopenharmony_ci    (*params)["appCertFile"] = appCertFile;
33254aa6d63Sopenharmony_ci    (*params)["profileFile"] = profileFile;
33354aa6d63Sopenharmony_ci    (*params)["inFile"] = inFile;
33454aa6d63Sopenharmony_ci    (*params)["keystoreFile"] = keystoreFile;
33554aa6d63Sopenharmony_ci    (*params)["outFile"] = outFile;
33654aa6d63Sopenharmony_ci    (*params)["keyPwd"] = keyPwd;
33754aa6d63Sopenharmony_ci    (*params)["keystorePwd"] = keystorePwd;
33854aa6d63Sopenharmony_ci
33954aa6d63Sopenharmony_ci    (*params)["signCode"] = std::string("3");
34054aa6d63Sopenharmony_ci    bool retParamT = signProvider->CheckParams(params.get());
34154aa6d63Sopenharmony_ci    EXPECT_EQ(retParamT, false);
34254aa6d63Sopenharmony_ci
34354aa6d63Sopenharmony_ci    (*params)["signCode"] = signCode;
34454aa6d63Sopenharmony_ci    (*params)["appCertFile"] = std::string("");
34554aa6d63Sopenharmony_ci    bool ret = signProvider->Sign(params.get());
34654aa6d63Sopenharmony_ci    EXPECT_EQ(ret, false);
34754aa6d63Sopenharmony_ci}
34854aa6d63Sopenharmony_ci
34954aa6d63Sopenharmony_ci/*
35054aa6d63Sopenharmony_ci * @tc.name: hap_sign_test_008
35154aa6d63Sopenharmony_ci * @tc.desc: This function tests sucess for interface Sign
35254aa6d63Sopenharmony_ci * @tc.type: FUNC
35354aa6d63Sopenharmony_ci * @tc.require:
35454aa6d63Sopenharmony_ci */
35554aa6d63Sopenharmony_ciHWTEST_F(HapSignTest, hap_sign_test_008, testing::ext::TestSize.Level1)
35654aa6d63Sopenharmony_ci{
35754aa6d63Sopenharmony_ci    SIGNATURE_TOOLS_LOGI("hello world !!!");
35854aa6d63Sopenharmony_ci    std::unique_ptr<SignProvider> signProvider = std::make_unique<LocalSignProvider>();
35954aa6d63Sopenharmony_ci    std::shared_ptr<Options> params = std::make_shared<Options>();
36054aa6d63Sopenharmony_ci
36154aa6d63Sopenharmony_ci    std::string mode = "localSign";
36254aa6d63Sopenharmony_ci    std::string keyAlias = "oh-app1-key-v1";
36354aa6d63Sopenharmony_ci    std::string signAlg = "SHA256withECDSA";
36454aa6d63Sopenharmony_ci    std::string signCode = "1";
36554aa6d63Sopenharmony_ci    std::string appCertFile = "./hapSign/app-release1.pem";
36654aa6d63Sopenharmony_ci    std::string profileFile = "./hapSign/signed-profile.p7b";
36754aa6d63Sopenharmony_ci    std::string inFile = "./hapSign/phone-default-unsigned.hap";
36854aa6d63Sopenharmony_ci    std::string keystoreFile = "./hapSign/ohtest.p12";
36954aa6d63Sopenharmony_ci    std::string outFile = "./hapSign/phone-default-signed.hap";
37054aa6d63Sopenharmony_ci    char keyPwd[] = "123456";
37154aa6d63Sopenharmony_ci    char keystorePwd[] = "123456";
37254aa6d63Sopenharmony_ci
37354aa6d63Sopenharmony_ci    (*params)["mode"] = mode;
37454aa6d63Sopenharmony_ci    (*params)["keyAlias"] = keyAlias;
37554aa6d63Sopenharmony_ci    (*params)["signAlg"] = signAlg;
37654aa6d63Sopenharmony_ci    (*params)["signCode"] = signCode;
37754aa6d63Sopenharmony_ci    (*params)["appCertFile"] = appCertFile;
37854aa6d63Sopenharmony_ci    (*params)["profileFile"] = profileFile;
37954aa6d63Sopenharmony_ci    (*params)["inFile"] = inFile;
38054aa6d63Sopenharmony_ci    (*params)["keystoreFile"] = keystoreFile;
38154aa6d63Sopenharmony_ci    (*params)["outFile"] = outFile;
38254aa6d63Sopenharmony_ci    (*params)["keyPwd"] = keyPwd;
38354aa6d63Sopenharmony_ci    (*params)["keystorePwd"] = keystorePwd;
38454aa6d63Sopenharmony_ci    bool retParam = signProvider->CheckParams(params.get());
38554aa6d63Sopenharmony_ci    EXPECT_EQ(retParam, true);
38654aa6d63Sopenharmony_ci
38754aa6d63Sopenharmony_ci    std::optional<X509_CRL*> crl = signProvider->GetCrl();
38854aa6d63Sopenharmony_ci    EXPECT_EQ(crl.has_value(), false);
38954aa6d63Sopenharmony_ci
39054aa6d63Sopenharmony_ci    bool ret = signProvider->Sign(params.get());
39154aa6d63Sopenharmony_ci    EXPECT_EQ(ret, true);
39254aa6d63Sopenharmony_ci}
39354aa6d63Sopenharmony_ci
39454aa6d63Sopenharmony_ci/*
39554aa6d63Sopenharmony_ci * @tc.name: hap_sign_test_009
39654aa6d63Sopenharmony_ci * @tc.desc: This function tests failure for interface Sign due to parameter profileSigned
39754aa6d63Sopenharmony_ci * @tc.type: FUNC
39854aa6d63Sopenharmony_ci * @tc.require:
39954aa6d63Sopenharmony_ci */
40054aa6d63Sopenharmony_ciHWTEST_F(HapSignTest, hap_sign_test_009, testing::ext::TestSize.Level1)
40154aa6d63Sopenharmony_ci{
40254aa6d63Sopenharmony_ci    SIGNATURE_TOOLS_LOGI("hello world !!!");
40354aa6d63Sopenharmony_ci    std::unique_ptr<SignProvider> signProvider = std::make_unique<LocalSignProvider>();
40454aa6d63Sopenharmony_ci    std::shared_ptr<Options> params = std::make_shared<Options>();
40554aa6d63Sopenharmony_ci
40654aa6d63Sopenharmony_ci    std::string mode = "localSign";
40754aa6d63Sopenharmony_ci    std::string keyAlias = "oh-app1-key-v1";
40854aa6d63Sopenharmony_ci    std::string signAlg = "SHA256withECDSA";
40954aa6d63Sopenharmony_ci    std::string signCode = "1";
41054aa6d63Sopenharmony_ci    std::string appCertFile = "./hapSign/app-release1.pem";
41154aa6d63Sopenharmony_ci    std::string profileFile = "./hapSign/signed-profile.p7b";
41254aa6d63Sopenharmony_ci    std::string profileSigned = "0";
41354aa6d63Sopenharmony_ci    std::string inFile = "./hapSign/phone-default-unsigned.hap";
41454aa6d63Sopenharmony_ci    std::string keystoreFile = "./hapSign/ohtest.p12";
41554aa6d63Sopenharmony_ci    std::string outFile = "./hapSign/phone-default-signed.hap";
41654aa6d63Sopenharmony_ci    char keyPwd[] = "123456";
41754aa6d63Sopenharmony_ci    char keystorePwd[] = "123456";
41854aa6d63Sopenharmony_ci
41954aa6d63Sopenharmony_ci    (*params)["mode"] = mode;
42054aa6d63Sopenharmony_ci    (*params)["keyAlias"] = keyAlias;
42154aa6d63Sopenharmony_ci    (*params)["signAlg"] = signAlg;
42254aa6d63Sopenharmony_ci    (*params)["signCode"] = signCode;
42354aa6d63Sopenharmony_ci    (*params)["appCertFile"] = appCertFile;
42454aa6d63Sopenharmony_ci    (*params)["profileFile"] = profileFile;
42554aa6d63Sopenharmony_ci    (*params)["profileSigned"] = profileSigned;
42654aa6d63Sopenharmony_ci    (*params)["inFile"] = inFile;
42754aa6d63Sopenharmony_ci    (*params)["keystoreFile"] = keystoreFile;
42854aa6d63Sopenharmony_ci    (*params)["outFile"] = outFile;
42954aa6d63Sopenharmony_ci    (*params)["keyPwd"] = keyPwd;
43054aa6d63Sopenharmony_ci    (*params)["keystorePwd"] = keystorePwd;
43154aa6d63Sopenharmony_ci    bool retParam = signProvider->CheckParams(params.get());
43254aa6d63Sopenharmony_ci    EXPECT_EQ(retParam, true);
43354aa6d63Sopenharmony_ci
43454aa6d63Sopenharmony_ci    std::optional<X509_CRL*> crl = signProvider->GetCrl();
43554aa6d63Sopenharmony_ci    EXPECT_EQ(crl.has_value(), false);
43654aa6d63Sopenharmony_ci
43754aa6d63Sopenharmony_ci    bool ret = signProvider->Sign(params.get());
43854aa6d63Sopenharmony_ci    EXPECT_EQ(ret, false);
43954aa6d63Sopenharmony_ci}
44054aa6d63Sopenharmony_ci
44154aa6d63Sopenharmony_ci/*
44254aa6d63Sopenharmony_ci * @tc.name: hap_sign_test_010
44354aa6d63Sopenharmony_ci * @tc.desc: This function tests sucess for interface Sign
44454aa6d63Sopenharmony_ci * @tc.type: FUNC
44554aa6d63Sopenharmony_ci * @tc.require:
44654aa6d63Sopenharmony_ci */
44754aa6d63Sopenharmony_ciHWTEST_F(HapSignTest, hap_sign_test_010, testing::ext::TestSize.Level1)
44854aa6d63Sopenharmony_ci{
44954aa6d63Sopenharmony_ci    SIGNATURE_TOOLS_LOGI("hello world !!!");
45054aa6d63Sopenharmony_ci    std::unique_ptr<SignProvider> signProvider = std::make_unique<LocalSignProvider>();
45154aa6d63Sopenharmony_ci    std::shared_ptr<Options> params = std::make_shared<Options>();
45254aa6d63Sopenharmony_ci
45354aa6d63Sopenharmony_ci    std::string mode = "localSign";
45454aa6d63Sopenharmony_ci    std::string keyAlias = "oh-app1-key-v1";
45554aa6d63Sopenharmony_ci    std::string signAlg = "SHA256withECDSA";
45654aa6d63Sopenharmony_ci    std::string signCode = "1";
45754aa6d63Sopenharmony_ci    std::string appCertFile = "./hapSign/app-release1.pem";
45854aa6d63Sopenharmony_ci    std::string profileFile = "./hapSign/signed-profile.p7b";
45954aa6d63Sopenharmony_ci    std::string profileSigned = "1";
46054aa6d63Sopenharmony_ci    std::string inFile = "./hapSign/phone-default-unsigned.hap";
46154aa6d63Sopenharmony_ci    std::string keystoreFile = "./hapSign/ohtest.p12";
46254aa6d63Sopenharmony_ci    std::string outFile = "./hapSign/phone-default-signed.hap";
46354aa6d63Sopenharmony_ci    char keyPwd[] = "123456";
46454aa6d63Sopenharmony_ci    char keystorePwd[] = "123456";
46554aa6d63Sopenharmony_ci
46654aa6d63Sopenharmony_ci    (*params)["mode"] = mode;
46754aa6d63Sopenharmony_ci    (*params)["keyAlias"] = keyAlias;
46854aa6d63Sopenharmony_ci    (*params)["signAlg"] = signAlg;
46954aa6d63Sopenharmony_ci    (*params)["signCode"] = signCode;
47054aa6d63Sopenharmony_ci    (*params)["appCertFile"] = appCertFile;
47154aa6d63Sopenharmony_ci    (*params)["profileFile"] = profileFile;
47254aa6d63Sopenharmony_ci    (*params)["profileSigned"] = profileSigned;
47354aa6d63Sopenharmony_ci    (*params)["inFile"] = inFile;
47454aa6d63Sopenharmony_ci    (*params)["keystoreFile"] = keystoreFile;
47554aa6d63Sopenharmony_ci    (*params)["outFile"] = outFile;
47654aa6d63Sopenharmony_ci    (*params)["keyPwd"] = keyPwd;
47754aa6d63Sopenharmony_ci    (*params)["keystorePwd"] = keystorePwd;
47854aa6d63Sopenharmony_ci
47954aa6d63Sopenharmony_ci    bool retParam = signProvider->CheckParams(params.get());
48054aa6d63Sopenharmony_ci    EXPECT_EQ(retParam, true);
48154aa6d63Sopenharmony_ci
48254aa6d63Sopenharmony_ci    std::optional<X509_CRL*> crl = signProvider->GetCrl();
48354aa6d63Sopenharmony_ci    EXPECT_EQ(crl.has_value(), false);
48454aa6d63Sopenharmony_ci
48554aa6d63Sopenharmony_ci    bool ret = signProvider->Sign(params.get());
48654aa6d63Sopenharmony_ci    EXPECT_EQ(ret, true);
48754aa6d63Sopenharmony_ci}
48854aa6d63Sopenharmony_ci
48954aa6d63Sopenharmony_ci/*
49054aa6d63Sopenharmony_ci * @tc.name: hap_sign_test_011
49154aa6d63Sopenharmony_ci * @tc.desc: This function tests sucess for interface GetDigestOutputByteSize
49254aa6d63Sopenharmony_ci * @tc.type: FUNC
49354aa6d63Sopenharmony_ci * @tc.require:
49454aa6d63Sopenharmony_ci */
49554aa6d63Sopenharmony_ciHWTEST_F(HapSignTest, hap_sign_test_011, testing::ext::TestSize.Level1)
49654aa6d63Sopenharmony_ci{
49754aa6d63Sopenharmony_ci    SIGNATURE_TOOLS_LOGI("hello world !!!");
49854aa6d63Sopenharmony_ci    ContentDigestAlgorithm alg_tmp;
49954aa6d63Sopenharmony_ci    ContentDigestAlgorithm alg_1 = ContentDigestAlgorithm::SHA256;
50054aa6d63Sopenharmony_ci    ContentDigestAlgorithm* alg_2 = &alg_1;
50154aa6d63Sopenharmony_ci    *alg_2 = alg_1;
50254aa6d63Sopenharmony_ci    alg_tmp = alg_1;
50354aa6d63Sopenharmony_ci    ContentDigestAlgorithm alg = ContentDigestAlgorithm::SHA256;
50454aa6d63Sopenharmony_ci    std::string algname = alg.GetDigestAlgorithm();
50554aa6d63Sopenharmony_ci    EXPECT_EQ(algname, std::string("SHA-256"));
50654aa6d63Sopenharmony_ci    int size = alg.GetDigestOutputByteSize();
50754aa6d63Sopenharmony_ci    EXPECT_EQ(size, 256 / 8);
50854aa6d63Sopenharmony_ci
50954aa6d63Sopenharmony_ci    ContentDigestAlgorithm alg_384 = ContentDigestAlgorithm::SHA384;
51054aa6d63Sopenharmony_ci    std::string algname_384 = alg_384.GetDigestAlgorithm();
51154aa6d63Sopenharmony_ci    EXPECT_EQ(algname_384, std::string("SHA-384"));
51254aa6d63Sopenharmony_ci    int size384 = alg_384.GetDigestOutputByteSize();
51354aa6d63Sopenharmony_ci    EXPECT_EQ(size384, 384 / 8);
51454aa6d63Sopenharmony_ci
51554aa6d63Sopenharmony_ci    ContentDigestAlgorithm alg_512 = ContentDigestAlgorithm::SHA512;
51654aa6d63Sopenharmony_ci    alg_512 = ContentDigestAlgorithm::SHA512;
51754aa6d63Sopenharmony_ci    std::string algname_512 = alg_512.GetDigestAlgorithm();
51854aa6d63Sopenharmony_ci    EXPECT_EQ(algname_512, std::string("SHA-512"));
51954aa6d63Sopenharmony_ci    int size512 = alg_512.GetDigestOutputByteSize();
52054aa6d63Sopenharmony_ci    EXPECT_EQ(size512, 512 / 8);
52154aa6d63Sopenharmony_ci}
52254aa6d63Sopenharmony_ci/*
52354aa6d63Sopenharmony_ci * @tc.name: hap_sign_test_012
52454aa6d63Sopenharmony_ci * @tc.desc: This function tests sucess for interface ComputeDigests
52554aa6d63Sopenharmony_ci * @tc.type: FUNC
52654aa6d63Sopenharmony_ci * @tc.require:
52754aa6d63Sopenharmony_ci */
52854aa6d63Sopenharmony_ciHWTEST_F(HapSignTest, hap_sign_test_012, testing::ext::TestSize.Level1)
52954aa6d63Sopenharmony_ci{
53054aa6d63Sopenharmony_ci    SIGNATURE_TOOLS_LOGI("hello world !!!");
53154aa6d63Sopenharmony_ci    ByteBuffer bf1("123456789", 9);
53254aa6d63Sopenharmony_ci    ByteBuffer bf2("123456789", 9);
53354aa6d63Sopenharmony_ci    ByteBuffer bf3("123456789", 9);
53454aa6d63Sopenharmony_ci    ByteBuffer bf4("123456789", 9);
53554aa6d63Sopenharmony_ci    ByteBufferDataSource ds1(bf1);
53654aa6d63Sopenharmony_ci    ByteBufferDataSource ds2(bf2);
53754aa6d63Sopenharmony_ci    ByteBufferDataSource ds3(bf3);
53854aa6d63Sopenharmony_ci
53954aa6d63Sopenharmony_ci    DataSource* contents[] = {&ds1, &ds2, &ds3};
54054aa6d63Sopenharmony_ci    int32_t len = 3;
54154aa6d63Sopenharmony_ci
54254aa6d63Sopenharmony_ci    std::vector<OptionalBlock> optionalBlocks;
54354aa6d63Sopenharmony_ci    optionalBlocks.push_back({HapUtils::HAP_PROFILE_BLOCK_ID, bf4});
54454aa6d63Sopenharmony_ci    ByteBuffer dig_context;
54554aa6d63Sopenharmony_ci
54654aa6d63Sopenharmony_ci    SignatureAlgorithm algo = SignatureAlgorithm::ALGORITHM_SHA256_WITH_ECDSA;
54754aa6d63Sopenharmony_ci    int32_t nId = DigestCommon::GetDigestAlgorithmId(algo);
54854aa6d63Sopenharmony_ci    DigestParameter digestParam = HapSignerBlockUtils::GetDigestParameter(nId);
54954aa6d63Sopenharmony_ci
55054aa6d63Sopenharmony_ci    bool ret = SignHap::ComputeDigests(digestParam, contents, len, optionalBlocks, dig_context);
55154aa6d63Sopenharmony_ci    EXPECT_EQ(ret, true);
55254aa6d63Sopenharmony_ci}
55354aa6d63Sopenharmony_ci/*
55454aa6d63Sopenharmony_ci * @tc.name: hap_sign_test_013
55554aa6d63Sopenharmony_ci * @tc.desc: This function tests failure for interface Sign due to parameter appCertFile
55654aa6d63Sopenharmony_ci * @tc.type: FUNC
55754aa6d63Sopenharmony_ci * @tc.require:
55854aa6d63Sopenharmony_ci */
55954aa6d63Sopenharmony_ciHWTEST_F(HapSignTest, hap_sign_test_013, testing::ext::TestSize.Level1)
56054aa6d63Sopenharmony_ci{
56154aa6d63Sopenharmony_ci    SIGNATURE_TOOLS_LOGI("hello world !!!");
56254aa6d63Sopenharmony_ci    std::unique_ptr<SignProvider> signProvider = std::make_unique<LocalSignProvider>();
56354aa6d63Sopenharmony_ci    std::shared_ptr<Options> params = std::make_shared<Options>();
56454aa6d63Sopenharmony_ci
56554aa6d63Sopenharmony_ci    std::string mode = "localSign";
56654aa6d63Sopenharmony_ci    std::string keyAlias = "oh-app1-key-v1";
56754aa6d63Sopenharmony_ci    std::string signAlg = "SHA256withECDSA";
56854aa6d63Sopenharmony_ci    std::string signCode = "1";
56954aa6d63Sopenharmony_ci    std::string appCertFile = "./hapSign/app-release-nohave.pem";
57054aa6d63Sopenharmony_ci    std::string profileFile = "./hapSign/signed-profile.p7b";
57154aa6d63Sopenharmony_ci    std::string profileSigned = "1";
57254aa6d63Sopenharmony_ci    std::string keystoreFile = "./hapSign/ohtest.p12";
57354aa6d63Sopenharmony_ci    std::string outFile = "./hapSign/phone-default-signed.hap";
57454aa6d63Sopenharmony_ci    char keyPwd[] = "123456";
57554aa6d63Sopenharmony_ci    char keystorePwd[] = "123456";
57654aa6d63Sopenharmony_ci
57754aa6d63Sopenharmony_ci    (*params)["mode"] = mode;
57854aa6d63Sopenharmony_ci    (*params)["keyAlias"] = keyAlias;
57954aa6d63Sopenharmony_ci    (*params)["signAlg"] = signAlg;
58054aa6d63Sopenharmony_ci    (*params)["signCode"] = signCode;
58154aa6d63Sopenharmony_ci    (*params)["appCertFile"] = appCertFile;
58254aa6d63Sopenharmony_ci    (*params)["profileFile"] = profileFile;
58354aa6d63Sopenharmony_ci    (*params)["profileSigned"] = profileSigned;
58454aa6d63Sopenharmony_ci    (*params)["keystoreFile"] = keystoreFile;
58554aa6d63Sopenharmony_ci    (*params)["outFile"] = outFile;
58654aa6d63Sopenharmony_ci    (*params)["keyPwd"] = keyPwd;
58754aa6d63Sopenharmony_ci    (*params)["keystorePwd"] = keystorePwd;
58854aa6d63Sopenharmony_ci
58954aa6d63Sopenharmony_ci    std::optional<X509_CRL*> crl = signProvider->GetCrl();
59054aa6d63Sopenharmony_ci    EXPECT_EQ(crl.has_value(), false);
59154aa6d63Sopenharmony_ci
59254aa6d63Sopenharmony_ci    bool ret = signProvider->Sign(params.get());
59354aa6d63Sopenharmony_ci    EXPECT_EQ(ret, false);
59454aa6d63Sopenharmony_ci}
59554aa6d63Sopenharmony_ci/*
59654aa6d63Sopenharmony_ci * @tc.name: hap_sign_test_014
59754aa6d63Sopenharmony_ci * @tc.desc: This function tests failure for interface Sign due to parameter inFile
59854aa6d63Sopenharmony_ci * @tc.type: FUNC
59954aa6d63Sopenharmony_ci * @tc.require:
60054aa6d63Sopenharmony_ci */
60154aa6d63Sopenharmony_ciHWTEST_F(HapSignTest, hap_sign_test_014, testing::ext::TestSize.Level1)
60254aa6d63Sopenharmony_ci{
60354aa6d63Sopenharmony_ci    SIGNATURE_TOOLS_LOGI("hello world !!!");
60454aa6d63Sopenharmony_ci    std::unique_ptr<SignProvider> signProvider = std::make_unique<LocalSignProvider>();
60554aa6d63Sopenharmony_ci    std::shared_ptr<Options> params = std::make_shared<Options>();
60654aa6d63Sopenharmony_ci
60754aa6d63Sopenharmony_ci    std::string mode = "localSign";
60854aa6d63Sopenharmony_ci    std::string keyAlias = "oh-app1-key-v1";
60954aa6d63Sopenharmony_ci    std::string signAlg = "SHA256withECDSA";
61054aa6d63Sopenharmony_ci    std::string signCode = "1";
61154aa6d63Sopenharmony_ci    std::string appCertFile = "./hapSign/app-release1.pem";
61254aa6d63Sopenharmony_ci    std::string profileFile = "./hapSign/signed-profile.p7b";
61354aa6d63Sopenharmony_ci    std::string profileSigned = "1";
61454aa6d63Sopenharmony_ci    std::string inFile = "./hapSign/nohave.hap";
61554aa6d63Sopenharmony_ci    std::string keystoreFile = "./hapSign/ohtest.p12";
61654aa6d63Sopenharmony_ci    std::string outFile = "./hapSign/phone-default-signed.hap";
61754aa6d63Sopenharmony_ci    char keyPwd[] = "123456";
61854aa6d63Sopenharmony_ci    char keystorePwd[] = "123456";
61954aa6d63Sopenharmony_ci
62054aa6d63Sopenharmony_ci    (*params)["mode"] = mode;
62154aa6d63Sopenharmony_ci    (*params)["keyAlias"] = keyAlias;
62254aa6d63Sopenharmony_ci    (*params)["signAlg"] = signAlg;
62354aa6d63Sopenharmony_ci    (*params)["signCode"] = signCode;
62454aa6d63Sopenharmony_ci    (*params)["appCertFile"] = appCertFile;
62554aa6d63Sopenharmony_ci    (*params)["profileFile"] = profileFile;
62654aa6d63Sopenharmony_ci    (*params)["profileSigned"] = profileSigned;
62754aa6d63Sopenharmony_ci    (*params)["inFile"] = inFile;
62854aa6d63Sopenharmony_ci    (*params)["keystoreFile"] = keystoreFile;
62954aa6d63Sopenharmony_ci    (*params)["outFile"] = outFile;
63054aa6d63Sopenharmony_ci    (*params)["keyPwd"] = keyPwd;
63154aa6d63Sopenharmony_ci    (*params)["keystorePwd"] = keystorePwd;
63254aa6d63Sopenharmony_ci
63354aa6d63Sopenharmony_ci    bool retParam = signProvider->CheckParams(params.get());
63454aa6d63Sopenharmony_ci    EXPECT_EQ(retParam, true);
63554aa6d63Sopenharmony_ci
63654aa6d63Sopenharmony_ci    std::optional<X509_CRL*> crl = signProvider->GetCrl();
63754aa6d63Sopenharmony_ci    EXPECT_EQ(crl.has_value(), false);
63854aa6d63Sopenharmony_ci
63954aa6d63Sopenharmony_ci    bool ret = signProvider->Sign(params.get());
64054aa6d63Sopenharmony_ci    EXPECT_EQ(ret, false);
64154aa6d63Sopenharmony_ci}
64254aa6d63Sopenharmony_ci
64354aa6d63Sopenharmony_ci/*
64454aa6d63Sopenharmony_ci * @tc.name: hap_sign_test_015
64554aa6d63Sopenharmony_ci * @tc.desc: This function tests failure for interface Sign due to parameter appCertFile
64654aa6d63Sopenharmony_ci * @tc.type: FUNC
64754aa6d63Sopenharmony_ci * @tc.require:
64854aa6d63Sopenharmony_ci */
64954aa6d63Sopenharmony_ciHWTEST_F(HapSignTest, hap_sign_test_015, testing::ext::TestSize.Level1)
65054aa6d63Sopenharmony_ci{
65154aa6d63Sopenharmony_ci    SIGNATURE_TOOLS_LOGI("hello world !!!");
65254aa6d63Sopenharmony_ci    std::unique_ptr<SignProvider> signProvider = std::make_unique<LocalSignProvider>();
65354aa6d63Sopenharmony_ci    std::shared_ptr<Options> params = std::make_shared<Options>();
65454aa6d63Sopenharmony_ci
65554aa6d63Sopenharmony_ci    std::string mode = "localSign";
65654aa6d63Sopenharmony_ci    std::string keyAlias = "oh-app1-key-v1";
65754aa6d63Sopenharmony_ci    std::string signAlg = "SHA256withECDSA";
65854aa6d63Sopenharmony_ci    std::string signCode = "1";
65954aa6d63Sopenharmony_ci    std::string appCertFile = "./hapSign/app-release-.pem";
66054aa6d63Sopenharmony_ci    std::string profileFile = "./hapSign/signed-profile.p7b";
66154aa6d63Sopenharmony_ci    std::string profileSigned = "1";
66254aa6d63Sopenharmony_ci    std::string inFile = "./hapSign/phone-default-unsigned.hap";
66354aa6d63Sopenharmony_ci    std::string keystoreFile = "./hapSign/ohtest.p12";
66454aa6d63Sopenharmony_ci    std::string outFile = "./hapSign/phone-default-signed.hap";
66554aa6d63Sopenharmony_ci    char keyPwd[] = "123456";
66654aa6d63Sopenharmony_ci    char keystorePwd[] = "123456";
66754aa6d63Sopenharmony_ci
66854aa6d63Sopenharmony_ci    (*params)["mode"] = mode;
66954aa6d63Sopenharmony_ci    (*params)["keyAlias"] = keyAlias;
67054aa6d63Sopenharmony_ci    (*params)["signAlg"] = signAlg;
67154aa6d63Sopenharmony_ci    (*params)["signCode"] = signCode;
67254aa6d63Sopenharmony_ci    (*params)["appCertFile"] = appCertFile;
67354aa6d63Sopenharmony_ci    (*params)["profileFile"] = profileFile;
67454aa6d63Sopenharmony_ci    (*params)["profileSigned"] = profileSigned;
67554aa6d63Sopenharmony_ci    (*params)["inFile"] = inFile;
67654aa6d63Sopenharmony_ci    (*params)["keystoreFile"] = keystoreFile;
67754aa6d63Sopenharmony_ci    (*params)["outFile"] = outFile;
67854aa6d63Sopenharmony_ci    (*params)["keyPwd"] = keyPwd;
67954aa6d63Sopenharmony_ci    (*params)["keystorePwd"] = keystorePwd;
68054aa6d63Sopenharmony_ci
68154aa6d63Sopenharmony_ci    signProvider->CheckParams(params.get());
68254aa6d63Sopenharmony_ci
68354aa6d63Sopenharmony_ci    signProvider->GetCrl();
68454aa6d63Sopenharmony_ci
68554aa6d63Sopenharmony_ci    bool ret = signProvider->Sign(params.get());
68654aa6d63Sopenharmony_ci    EXPECT_EQ(ret, false);
68754aa6d63Sopenharmony_ci}
68854aa6d63Sopenharmony_ci
68954aa6d63Sopenharmony_ci/*
69054aa6d63Sopenharmony_ci * @tc.name: hap_sign_test_016
69154aa6d63Sopenharmony_ci * @tc.desc: This function tests failure for interface Sign due to parameter outFile
69254aa6d63Sopenharmony_ci * @tc.type: FUNC
69354aa6d63Sopenharmony_ci * @tc.require:
69454aa6d63Sopenharmony_ci */
69554aa6d63Sopenharmony_ciHWTEST_F(HapSignTest, hap_sign_test_016, testing::ext::TestSize.Level1)
69654aa6d63Sopenharmony_ci{
69754aa6d63Sopenharmony_ci    SIGNATURE_TOOLS_LOGI("hello world !!!");
69854aa6d63Sopenharmony_ci    std::unique_ptr<SignProvider> signProvider = std::make_unique<LocalSignProvider>();
69954aa6d63Sopenharmony_ci    std::shared_ptr<Options> params = std::make_shared<Options>();
70054aa6d63Sopenharmony_ci
70154aa6d63Sopenharmony_ci    std::string mode = "localSign";
70254aa6d63Sopenharmony_ci    std::string keyAlias = "oh-app1-key-v1";
70354aa6d63Sopenharmony_ci    std::string signAlg = "SHA256withECDSA";
70454aa6d63Sopenharmony_ci    std::string signCode = "1";
70554aa6d63Sopenharmony_ci    std::string appCertFile = "./hapSign/app-release1.pem";
70654aa6d63Sopenharmony_ci    std::string profileFile = "./hapSign/signed-profile.p7b";
70754aa6d63Sopenharmony_ci    std::string profileSigned = "1";
70854aa6d63Sopenharmony_ci    std::string inFile = "./hapSign/phone-default-unsigned.hap";
70954aa6d63Sopenharmony_ci    std::string keystoreFile = "./hapSign/ohtest.p12";
71054aa6d63Sopenharmony_ci    std::string outFile = "/d/phone-default-signed.hap";
71154aa6d63Sopenharmony_ci    char keyPwd[] = "123456";
71254aa6d63Sopenharmony_ci    char keystorePwd[] = "123456";
71354aa6d63Sopenharmony_ci
71454aa6d63Sopenharmony_ci    (*params)["mode"] = mode;
71554aa6d63Sopenharmony_ci    (*params)["keyAlias"] = keyAlias;
71654aa6d63Sopenharmony_ci    (*params)["signAlg"] = signAlg;
71754aa6d63Sopenharmony_ci    (*params)["signCode"] = signCode;
71854aa6d63Sopenharmony_ci    (*params)["appCertFile"] = appCertFile;
71954aa6d63Sopenharmony_ci    (*params)["profileFile"] = profileFile;
72054aa6d63Sopenharmony_ci    (*params)["profileSigned"] = profileSigned;
72154aa6d63Sopenharmony_ci    (*params)["inFile"] = inFile;
72254aa6d63Sopenharmony_ci    (*params)["keystoreFile"] = keystoreFile;
72354aa6d63Sopenharmony_ci    (*params)["outFile"] = outFile;
72454aa6d63Sopenharmony_ci    (*params)["keyPwd"] = keyPwd;
72554aa6d63Sopenharmony_ci    (*params)["keystorePwd"] = keystorePwd;
72654aa6d63Sopenharmony_ci
72754aa6d63Sopenharmony_ci    bool retParam = signProvider->CheckParams(params.get());
72854aa6d63Sopenharmony_ci    EXPECT_EQ(retParam, true);
72954aa6d63Sopenharmony_ci
73054aa6d63Sopenharmony_ci    std::optional<X509_CRL*> crl = signProvider->GetCrl();
73154aa6d63Sopenharmony_ci    EXPECT_EQ(crl.has_value(), false);
73254aa6d63Sopenharmony_ci
73354aa6d63Sopenharmony_ci    bool ret = signProvider->Sign(params.get());
73454aa6d63Sopenharmony_ci    EXPECT_EQ(ret, false);
73554aa6d63Sopenharmony_ci}
73654aa6d63Sopenharmony_ci
73754aa6d63Sopenharmony_ci/*
73854aa6d63Sopenharmony_ci * @tc.name: hap_sign_test_017
73954aa6d63Sopenharmony_ci * @tc.desc: This function tests failure for interface Sign due to parameter outFile
74054aa6d63Sopenharmony_ci * @tc.type: FUNC
74154aa6d63Sopenharmony_ci * @tc.require:
74254aa6d63Sopenharmony_ci */
74354aa6d63Sopenharmony_ciHWTEST_F(HapSignTest, hap_sign_test_017, testing::ext::TestSize.Level1)
74454aa6d63Sopenharmony_ci{
74554aa6d63Sopenharmony_ci    SIGNATURE_TOOLS_LOGI("hello world !!!");
74654aa6d63Sopenharmony_ci    std::unique_ptr<SignProvider> signProvider = std::make_unique<LocalSignProvider>();
74754aa6d63Sopenharmony_ci    std::shared_ptr<Options> params = std::make_shared<Options>();
74854aa6d63Sopenharmony_ci
74954aa6d63Sopenharmony_ci    std::string mode = "localSign";
75054aa6d63Sopenharmony_ci    std::string keyAlias = "oh-app1-key-v1";
75154aa6d63Sopenharmony_ci    std::string signAlg = "SHA256withECDSA";
75254aa6d63Sopenharmony_ci    std::string signCode = "1";
75354aa6d63Sopenharmony_ci    std::string appCertFile = "./hapSign/app-release1.pem";
75454aa6d63Sopenharmony_ci    std::string profileFile = "./hapSign/signed-profile.p7b";
75554aa6d63Sopenharmony_ci    std::string profileSigned = "1";
75654aa6d63Sopenharmony_ci    std::string inFile = "./hapSign/phone-default-unsigned.hap";
75754aa6d63Sopenharmony_ci    std::string keystoreFile = "./hapSign/ohtest.p12";
75854aa6d63Sopenharmony_ci    std::string outFile = "./hapSign/phone-default-unsigned.hap";
75954aa6d63Sopenharmony_ci    char keyPwd[] = "123456";
76054aa6d63Sopenharmony_ci    char keystorePwd[] = "123456";
76154aa6d63Sopenharmony_ci
76254aa6d63Sopenharmony_ci    (*params)["mode"] = mode;
76354aa6d63Sopenharmony_ci    (*params)["keyAlias"] = keyAlias;
76454aa6d63Sopenharmony_ci    (*params)["signAlg"] = signAlg;
76554aa6d63Sopenharmony_ci    (*params)["signCode"] = signCode;
76654aa6d63Sopenharmony_ci    (*params)["appCertFile"] = appCertFile;
76754aa6d63Sopenharmony_ci    (*params)["profileFile"] = profileFile;
76854aa6d63Sopenharmony_ci    (*params)["profileSigned"] = profileSigned;
76954aa6d63Sopenharmony_ci    (*params)["inFile"] = inFile;
77054aa6d63Sopenharmony_ci    (*params)["keystoreFile"] = keystoreFile;
77154aa6d63Sopenharmony_ci    (*params)["outFile"] = outFile;
77254aa6d63Sopenharmony_ci    (*params)["keyPwd"] = keyPwd;
77354aa6d63Sopenharmony_ci    (*params)["keystorePwd"] = keystorePwd;
77454aa6d63Sopenharmony_ci
77554aa6d63Sopenharmony_ci    bool retParam = signProvider->CheckParams(params.get());
77654aa6d63Sopenharmony_ci    EXPECT_EQ(retParam, true);
77754aa6d63Sopenharmony_ci
77854aa6d63Sopenharmony_ci    std::optional<X509_CRL*> crl = signProvider->GetCrl();
77954aa6d63Sopenharmony_ci    EXPECT_EQ(crl.has_value(), false);
78054aa6d63Sopenharmony_ci
78154aa6d63Sopenharmony_ci    bool ret = signProvider->Sign(params.get());
78254aa6d63Sopenharmony_ci    EXPECT_EQ(ret, true);
78354aa6d63Sopenharmony_ci}
78454aa6d63Sopenharmony_ci
78554aa6d63Sopenharmony_ci/*
78654aa6d63Sopenharmony_ci * @tc.name: hap_sign_test_018
78754aa6d63Sopenharmony_ci * @tc.desc: This function tests failure for interface Sign due to parameter signAlg
78854aa6d63Sopenharmony_ci * @tc.type: FUNC
78954aa6d63Sopenharmony_ci * @tc.require:
79054aa6d63Sopenharmony_ci */
79154aa6d63Sopenharmony_ciHWTEST_F(HapSignTest, hap_sign_test_018, testing::ext::TestSize.Level1)
79254aa6d63Sopenharmony_ci{
79354aa6d63Sopenharmony_ci    SIGNATURE_TOOLS_LOGI("hello world !!!");
79454aa6d63Sopenharmony_ci    std::unique_ptr<SignProvider> signProvider = std::make_unique<LocalSignProvider>();
79554aa6d63Sopenharmony_ci    std::shared_ptr<Options> params = std::make_shared<Options>();
79654aa6d63Sopenharmony_ci
79754aa6d63Sopenharmony_ci    std::string mode = "localSign";
79854aa6d63Sopenharmony_ci    std::string keyAlias = "oh-app1-key-v1";
79954aa6d63Sopenharmony_ci    std::string signAlg = "SHA256withEA";
80054aa6d63Sopenharmony_ci    std::string signCode = "1";
80154aa6d63Sopenharmony_ci    std::string appCertFile = "./hapSign/app-release1.pem";
80254aa6d63Sopenharmony_ci    std::string profileFile = "./hapSign/signed-profile.p7b";
80354aa6d63Sopenharmony_ci    std::string profileSigned = "1";
80454aa6d63Sopenharmony_ci    std::string inFile = "./hapSign/phone-default-unsigned.hap";
80554aa6d63Sopenharmony_ci    std::string keystoreFile = "./hapSign/ohtest.p12";
80654aa6d63Sopenharmony_ci    std::string outFile = "./hapSign/phone-default-signed.hap";
80754aa6d63Sopenharmony_ci    char keyPwd[] = "123456";
80854aa6d63Sopenharmony_ci    char keystorePwd[] = "123456";
80954aa6d63Sopenharmony_ci
81054aa6d63Sopenharmony_ci    (*params)["mode"] = mode;
81154aa6d63Sopenharmony_ci    (*params)["keyAlias"] = keyAlias;
81254aa6d63Sopenharmony_ci    (*params)["signAlg"] = signAlg;
81354aa6d63Sopenharmony_ci    (*params)["signCode"] = signCode;
81454aa6d63Sopenharmony_ci    (*params)["appCertFile"] = appCertFile;
81554aa6d63Sopenharmony_ci    (*params)["profileFile"] = profileFile;
81654aa6d63Sopenharmony_ci    (*params)["profileSigned"] = profileSigned;
81754aa6d63Sopenharmony_ci    (*params)["inFile"] = inFile;
81854aa6d63Sopenharmony_ci    (*params)["keystoreFile"] = keystoreFile;
81954aa6d63Sopenharmony_ci    (*params)["outFile"] = outFile;
82054aa6d63Sopenharmony_ci    (*params)["keyPwd"] = keyPwd;
82154aa6d63Sopenharmony_ci    (*params)["keystorePwd"] = keystorePwd;
82254aa6d63Sopenharmony_ci
82354aa6d63Sopenharmony_ci    std::optional<X509_CRL*> crl = signProvider->GetCrl();
82454aa6d63Sopenharmony_ci    EXPECT_EQ(crl.has_value(), false);
82554aa6d63Sopenharmony_ci
82654aa6d63Sopenharmony_ci    bool ret = signProvider->Sign(params.get());
82754aa6d63Sopenharmony_ci    EXPECT_EQ(ret, false);
82854aa6d63Sopenharmony_ci}
82954aa6d63Sopenharmony_ci
83054aa6d63Sopenharmony_ci/*
83154aa6d63Sopenharmony_ci * @tc.name: hap_sign_test_019
83254aa6d63Sopenharmony_ci * @tc.desc: This function tests failure for interface Sign due to parameter inFile
83354aa6d63Sopenharmony_ci * @tc.type: FUNC
83454aa6d63Sopenharmony_ci * @tc.require:
83554aa6d63Sopenharmony_ci */
83654aa6d63Sopenharmony_ciHWTEST_F(HapSignTest, hap_sign_test_019, testing::ext::TestSize.Level1)
83754aa6d63Sopenharmony_ci{
83854aa6d63Sopenharmony_ci    SIGNATURE_TOOLS_LOGI("hello world !!!");
83954aa6d63Sopenharmony_ci    std::unique_ptr<SignProvider> signProvider = std::make_unique<LocalSignProvider>();
84054aa6d63Sopenharmony_ci    std::shared_ptr<Options> params = std::make_shared<Options>();
84154aa6d63Sopenharmony_ci
84254aa6d63Sopenharmony_ci    std::string mode = "localSign";
84354aa6d63Sopenharmony_ci    std::string keyAlias = "oh-app1-key-v1";
84454aa6d63Sopenharmony_ci    std::string signAlg = "SHA256withECDSA";
84554aa6d63Sopenharmony_ci    std::string signCode = "0";
84654aa6d63Sopenharmony_ci    std::string appCertFile = "./hapSign/app-release1.pem";
84754aa6d63Sopenharmony_ci    std::string profileFile = "./hapSign/signed-profile.p7b";
84854aa6d63Sopenharmony_ci    std::string inFile = "./hapSign/phone-default-unsigned";
84954aa6d63Sopenharmony_ci    std::string keystoreFile = "./hapSign/ohtest.p12";
85054aa6d63Sopenharmony_ci    std::string outFile = "./hapSign/phone-default-signed.hap";
85154aa6d63Sopenharmony_ci    char keyPwd[] = "123456";
85254aa6d63Sopenharmony_ci    char keystorePwd[] = "123456";
85354aa6d63Sopenharmony_ci
85454aa6d63Sopenharmony_ci    (*params)["mode"] = mode;
85554aa6d63Sopenharmony_ci    (*params)["keyAlias"] = keyAlias;
85654aa6d63Sopenharmony_ci    (*params)["signAlg"] = signAlg;
85754aa6d63Sopenharmony_ci    (*params)["signCode"] = signCode;
85854aa6d63Sopenharmony_ci    (*params)["appCertFile"] = appCertFile;
85954aa6d63Sopenharmony_ci    (*params)["profileFile"] = profileFile;
86054aa6d63Sopenharmony_ci    (*params)["inFile"] = inFile;
86154aa6d63Sopenharmony_ci    (*params)["keystoreFile"] = keystoreFile;
86254aa6d63Sopenharmony_ci    (*params)["outFile"] = outFile;
86354aa6d63Sopenharmony_ci    (*params)["keyPwd"] = keyPwd;
86454aa6d63Sopenharmony_ci    (*params)["keystorePwd"] = keystorePwd;
86554aa6d63Sopenharmony_ci
86654aa6d63Sopenharmony_ci    bool ret = signProvider->Sign(params.get());
86754aa6d63Sopenharmony_ci    EXPECT_EQ(ret, false);
86854aa6d63Sopenharmony_ci}
86954aa6d63Sopenharmony_ci
87054aa6d63Sopenharmony_ci/*
87154aa6d63Sopenharmony_ci * @tc.name: hap_sign_test_020
87254aa6d63Sopenharmony_ci * @tc.desc: This function tests failure for interface Sign due to parameter inFile
87354aa6d63Sopenharmony_ci * @tc.type: FUNC
87454aa6d63Sopenharmony_ci * @tc.require:
87554aa6d63Sopenharmony_ci */
87654aa6d63Sopenharmony_ciHWTEST_F(HapSignTest, hap_sign_test_020, testing::ext::TestSize.Level1)
87754aa6d63Sopenharmony_ci{
87854aa6d63Sopenharmony_ci    SIGNATURE_TOOLS_LOGI("hello world !!!");
87954aa6d63Sopenharmony_ci    std::unique_ptr<SignProvider> signProvider = std::make_unique<LocalSignProvider>();
88054aa6d63Sopenharmony_ci    std::shared_ptr<Options> params = std::make_shared<Options>();
88154aa6d63Sopenharmony_ci
88254aa6d63Sopenharmony_ci    std::string mode = "localSign";
88354aa6d63Sopenharmony_ci    std::string keyAlias = "oh-app1-key-v1";
88454aa6d63Sopenharmony_ci    std::string signAlg = "SHA256withECDSA";
88554aa6d63Sopenharmony_ci    std::string signCode = "0";
88654aa6d63Sopenharmony_ci    std::string appCertFile = "./hapSign/app-release1.pem";
88754aa6d63Sopenharmony_ci    std::string profileFile = "./hapSign/signed-profile.p7b";
88854aa6d63Sopenharmony_ci    std::string inFile = "./hapSign/phone-default-unsigned";
88954aa6d63Sopenharmony_ci    std::string keystoreFile = "./hapSign/ohtest.p12";
89054aa6d63Sopenharmony_ci    std::string outFile = "./hapSign/phone-default-signed.hap";
89154aa6d63Sopenharmony_ci    char keyPwd[] = "123456";
89254aa6d63Sopenharmony_ci    char keystorePwd[] = "123456";
89354aa6d63Sopenharmony_ci
89454aa6d63Sopenharmony_ci    (*params)["mode"] = mode;
89554aa6d63Sopenharmony_ci    (*params)["keyAlias"] = keyAlias;
89654aa6d63Sopenharmony_ci    (*params)["signAlg"] = signAlg;
89754aa6d63Sopenharmony_ci    (*params)["signCode"] = signCode;
89854aa6d63Sopenharmony_ci    (*params)["appCertFile"] = appCertFile;
89954aa6d63Sopenharmony_ci    (*params)["profileFile"] = profileFile;
90054aa6d63Sopenharmony_ci    (*params)["inFile"] = inFile;
90154aa6d63Sopenharmony_ci    (*params)["keystoreFile"] = keystoreFile;
90254aa6d63Sopenharmony_ci    (*params)["outFile"] = outFile;
90354aa6d63Sopenharmony_ci    (*params)["keyPwd"] = keyPwd;
90454aa6d63Sopenharmony_ci    (*params)["keystorePwd"] = keystorePwd;
90554aa6d63Sopenharmony_ci
90654aa6d63Sopenharmony_ci    bool ret = signProvider->Sign(params.get());
90754aa6d63Sopenharmony_ci    EXPECT_EQ(ret, false);
90854aa6d63Sopenharmony_ci}
90954aa6d63Sopenharmony_ci
91054aa6d63Sopenharmony_ci/*
91154aa6d63Sopenharmony_ci * @tc.name: hap_sign_test_021
91254aa6d63Sopenharmony_ci * @tc.desc: This function tests failure for interface Sign due to parameter inFile
91354aa6d63Sopenharmony_ci * @tc.type: FUNC
91454aa6d63Sopenharmony_ci * @tc.require:
91554aa6d63Sopenharmony_ci */
91654aa6d63Sopenharmony_ciHWTEST_F(HapSignTest, hap_sign_test_021, testing::ext::TestSize.Level1)
91754aa6d63Sopenharmony_ci{
91854aa6d63Sopenharmony_ci    SIGNATURE_TOOLS_LOGI("hello world !!!");
91954aa6d63Sopenharmony_ci    std::unique_ptr<SignProvider> signProvider = std::make_unique<LocalSignProvider>();
92054aa6d63Sopenharmony_ci    std::shared_ptr<Options> params = std::make_shared<Options>();
92154aa6d63Sopenharmony_ci
92254aa6d63Sopenharmony_ci    std::string mode = "localSign";
92354aa6d63Sopenharmony_ci    std::string keyAlias = "oh-app1-key-v1";
92454aa6d63Sopenharmony_ci    std::string signAlg = "SHA256withECDSA";
92554aa6d63Sopenharmony_ci    std::string signCode = "0";
92654aa6d63Sopenharmony_ci    std::string appCertFile = "./hapSign/app-release1.pem";
92754aa6d63Sopenharmony_ci    std::string profileFile = "./hapSign/signed-profile.p7b";
92854aa6d63Sopenharmony_ci    std::string inFile = "./hapSign/nohap.hap";
92954aa6d63Sopenharmony_ci    std::string keystoreFile = "./hapSign/ohtest.p12";
93054aa6d63Sopenharmony_ci    std::string outFile = "./hapSign/phone-default-signed.hap";
93154aa6d63Sopenharmony_ci    char keyPwd[] = "123456";
93254aa6d63Sopenharmony_ci    char keystorePwd[] = "123456";
93354aa6d63Sopenharmony_ci
93454aa6d63Sopenharmony_ci    (*params)["mode"] = mode;
93554aa6d63Sopenharmony_ci    (*params)["keyAlias"] = keyAlias;
93654aa6d63Sopenharmony_ci    (*params)["signAlg"] = signAlg;
93754aa6d63Sopenharmony_ci    (*params)["signCode"] = signCode;
93854aa6d63Sopenharmony_ci    (*params)["appCertFile"] = appCertFile;
93954aa6d63Sopenharmony_ci    (*params)["profileFile"] = profileFile;
94054aa6d63Sopenharmony_ci    (*params)["inFile"] = inFile;
94154aa6d63Sopenharmony_ci    (*params)["keystoreFile"] = keystoreFile;
94254aa6d63Sopenharmony_ci    (*params)["outFile"] = outFile;
94354aa6d63Sopenharmony_ci    (*params)["keyPwd"] = keyPwd;
94454aa6d63Sopenharmony_ci    (*params)["keystorePwd"] = keystorePwd;
94554aa6d63Sopenharmony_ci
94654aa6d63Sopenharmony_ci    bool ret = signProvider->Sign(params.get());
94754aa6d63Sopenharmony_ci    EXPECT_EQ(ret, false);
94854aa6d63Sopenharmony_ci}
94954aa6d63Sopenharmony_ci
95054aa6d63Sopenharmony_ci/*
95154aa6d63Sopenharmony_ci * @tc.name: hap_sign_test_022
95254aa6d63Sopenharmony_ci * @tc.desc: This function tests failure for interface Sign due to parameter inFile
95354aa6d63Sopenharmony_ci * @tc.type: FUNC
95454aa6d63Sopenharmony_ci * @tc.require:
95554aa6d63Sopenharmony_ci */
95654aa6d63Sopenharmony_ciHWTEST_F(HapSignTest, hap_sign_test_022, testing::ext::TestSize.Level1)
95754aa6d63Sopenharmony_ci{
95854aa6d63Sopenharmony_ci    SIGNATURE_TOOLS_LOGI("hello world !!!");
95954aa6d63Sopenharmony_ci    std::unique_ptr<SignProvider> signProvider = std::make_unique<LocalSignProvider>();
96054aa6d63Sopenharmony_ci    std::shared_ptr<Options> params = std::make_shared<Options>();
96154aa6d63Sopenharmony_ci
96254aa6d63Sopenharmony_ci    std::string mode = "localSign";
96354aa6d63Sopenharmony_ci    std::string keyAlias = "oh-app1-key-v1";
96454aa6d63Sopenharmony_ci    std::string signAlg = "SHA256withECDSA";
96554aa6d63Sopenharmony_ci    std::string signCode = "0";
96654aa6d63Sopenharmony_ci    std::string appCertFile = "./hapSign/app-release1.pem";
96754aa6d63Sopenharmony_ci    std::string profileFile = "./hapSign/signed-profile.p7b";
96854aa6d63Sopenharmony_ci    std::string inFile = "./hapSign/unsigned_with_eocd.hap";
96954aa6d63Sopenharmony_ci    std::string keystoreFile = "./hapSign/ohtest.p12";
97054aa6d63Sopenharmony_ci    std::string outFile = "./hapSign/phone-default-signed.hap";
97154aa6d63Sopenharmony_ci    char keyPwd[] = "123456";
97254aa6d63Sopenharmony_ci    char keystorePwd[] = "123456";
97354aa6d63Sopenharmony_ci
97454aa6d63Sopenharmony_ci    (*params)["mode"] = mode;
97554aa6d63Sopenharmony_ci    (*params)["keyAlias"] = keyAlias;
97654aa6d63Sopenharmony_ci    (*params)["signAlg"] = signAlg;
97754aa6d63Sopenharmony_ci    (*params)["signCode"] = signCode;
97854aa6d63Sopenharmony_ci    (*params)["appCertFile"] = appCertFile;
97954aa6d63Sopenharmony_ci    (*params)["profileFile"] = profileFile;
98054aa6d63Sopenharmony_ci    (*params)["inFile"] = inFile;
98154aa6d63Sopenharmony_ci    (*params)["keystoreFile"] = keystoreFile;
98254aa6d63Sopenharmony_ci    (*params)["outFile"] = outFile;
98354aa6d63Sopenharmony_ci    (*params)["keyPwd"] = keyPwd;
98454aa6d63Sopenharmony_ci    (*params)["keystorePwd"] = keystorePwd;
98554aa6d63Sopenharmony_ci
98654aa6d63Sopenharmony_ci    bool ret = signProvider->Sign(params.get());
98754aa6d63Sopenharmony_ci    EXPECT_EQ(ret, false);
98854aa6d63Sopenharmony_ci}
98954aa6d63Sopenharmony_ci
99054aa6d63Sopenharmony_ci/*
99154aa6d63Sopenharmony_ci * @tc.name: hap_sign_test_023
99254aa6d63Sopenharmony_ci * @tc.desc: This function tests failure for interface SignHap due to parameter mode not support
99354aa6d63Sopenharmony_ci * @tc.type: FUNC
99454aa6d63Sopenharmony_ci * @tc.require:
99554aa6d63Sopenharmony_ci */
99654aa6d63Sopenharmony_ciHWTEST_F(HapSignTest, hap_sign_test_023, testing::ext::TestSize.Level1)
99754aa6d63Sopenharmony_ci{
99854aa6d63Sopenharmony_ci    SIGNATURE_TOOLS_LOGI("hello world !!!");
99954aa6d63Sopenharmony_ci    std::unique_ptr<SignToolServiceImpl> api = std::make_unique<SignToolServiceImpl>();
100054aa6d63Sopenharmony_ci    std::shared_ptr<Options> params = std::make_shared<Options>();
100154aa6d63Sopenharmony_ci
100254aa6d63Sopenharmony_ci    std::string mode = "remoteSign";
100354aa6d63Sopenharmony_ci    std::string keyAlias = "oh-app1-key-v1";
100454aa6d63Sopenharmony_ci    std::string signAlg = "SHA256withECDSA";
100554aa6d63Sopenharmony_ci    std::string signCode = "0";
100654aa6d63Sopenharmony_ci    std::string appCertFile = "./hapSign/app-release1.pem";
100754aa6d63Sopenharmony_ci    std::string profileFile = "./hapSign/signed-profile.p7b";
100854aa6d63Sopenharmony_ci    std::string inFile = "./hapSign/phone-default-unsigned.hap";
100954aa6d63Sopenharmony_ci    std::string keystoreFile = "./hapSign/ohtest.p12";
101054aa6d63Sopenharmony_ci    std::string outFile = "./hapSign/phone-default-signed.hap";
101154aa6d63Sopenharmony_ci    char keyPwd[] = "123456";
101254aa6d63Sopenharmony_ci    char keystorePwd[] = "123456";
101354aa6d63Sopenharmony_ci
101454aa6d63Sopenharmony_ci    (*params)["mode"] = mode;
101554aa6d63Sopenharmony_ci    (*params)["keyAlias"] = keyAlias;
101654aa6d63Sopenharmony_ci    (*params)["signAlg"] = signAlg;
101754aa6d63Sopenharmony_ci    (*params)["signCode"] = signCode;
101854aa6d63Sopenharmony_ci    (*params)["appCertFile"] = appCertFile;
101954aa6d63Sopenharmony_ci    (*params)["profileFile"] = profileFile;
102054aa6d63Sopenharmony_ci    (*params)["inFile"] = inFile;
102154aa6d63Sopenharmony_ci    (*params)["keystoreFile"] = keystoreFile;
102254aa6d63Sopenharmony_ci    (*params)["outFile"] = outFile;
102354aa6d63Sopenharmony_ci    (*params)["keyPwd"] = keyPwd;
102454aa6d63Sopenharmony_ci    (*params)["keystorePwd"] = keystorePwd;
102554aa6d63Sopenharmony_ci
102654aa6d63Sopenharmony_ci    bool ret = api->SignHap(params.get());
102754aa6d63Sopenharmony_ci    EXPECT_EQ(ret, false);
102854aa6d63Sopenharmony_ci}
102954aa6d63Sopenharmony_ci
103054aa6d63Sopenharmony_ci/*
103154aa6d63Sopenharmony_ci * @tc.name: hap_sign_test_024
103254aa6d63Sopenharmony_ci * @tc.desc: This function tests failure for interface SignHap due to parameter mode not support
103354aa6d63Sopenharmony_ci * @tc.type: FUNC
103454aa6d63Sopenharmony_ci * @tc.require:
103554aa6d63Sopenharmony_ci */
103654aa6d63Sopenharmony_ciHWTEST_F(HapSignTest, hap_sign_test_024, testing::ext::TestSize.Level1)
103754aa6d63Sopenharmony_ci{
103854aa6d63Sopenharmony_ci    SIGNATURE_TOOLS_LOGI("hello world !!!");
103954aa6d63Sopenharmony_ci    std::unique_ptr<SignToolServiceImpl> api = std::make_unique<SignToolServiceImpl>();
104054aa6d63Sopenharmony_ci    std::shared_ptr<Options> params = std::make_shared<Options>();
104154aa6d63Sopenharmony_ci
104254aa6d63Sopenharmony_ci    std::string mode = "remoteResign";
104354aa6d63Sopenharmony_ci    std::string keyAlias = "oh-app1-key-v1";
104454aa6d63Sopenharmony_ci    std::string signAlg = "SHA256withECDSA";
104554aa6d63Sopenharmony_ci    std::string signCode = "0";
104654aa6d63Sopenharmony_ci    std::string appCertFile = "./hapSign/app-release1.pem";
104754aa6d63Sopenharmony_ci    std::string profileFile = "./hapSign/signed-profile.p7b";
104854aa6d63Sopenharmony_ci    std::string inFile = "./hapSign/phone-default-unsigned.hap";
104954aa6d63Sopenharmony_ci    std::string keystoreFile = "./hapSign/ohtest.p12";
105054aa6d63Sopenharmony_ci    std::string outFile = "./hapSign/phone-default-signed.hap";
105154aa6d63Sopenharmony_ci    char keyPwd[] = "123456";
105254aa6d63Sopenharmony_ci    char keystorePwd[] = "123456";
105354aa6d63Sopenharmony_ci
105454aa6d63Sopenharmony_ci    (*params)["mode"] = mode;
105554aa6d63Sopenharmony_ci    (*params)["keyAlias"] = keyAlias;
105654aa6d63Sopenharmony_ci    (*params)["signAlg"] = signAlg;
105754aa6d63Sopenharmony_ci    (*params)["signCode"] = signCode;
105854aa6d63Sopenharmony_ci    (*params)["appCertFile"] = appCertFile;
105954aa6d63Sopenharmony_ci    (*params)["profileFile"] = profileFile;
106054aa6d63Sopenharmony_ci    (*params)["inFile"] = inFile;
106154aa6d63Sopenharmony_ci    (*params)["keystoreFile"] = keystoreFile;
106254aa6d63Sopenharmony_ci    (*params)["outFile"] = outFile;
106354aa6d63Sopenharmony_ci    (*params)["keyPwd"] = keyPwd;
106454aa6d63Sopenharmony_ci    (*params)["keystorePwd"] = keystorePwd;
106554aa6d63Sopenharmony_ci
106654aa6d63Sopenharmony_ci    bool ret = api->SignHap(params.get());
106754aa6d63Sopenharmony_ci    EXPECT_EQ(ret, false);
106854aa6d63Sopenharmony_ci}
106954aa6d63Sopenharmony_ci
107054aa6d63Sopenharmony_ci/*
107154aa6d63Sopenharmony_ci * @tc.name: hap_sign_test_025
107254aa6d63Sopenharmony_ci * @tc.desc: This function tests success for interface SignHap
107354aa6d63Sopenharmony_ci * @tc.type: FUNC
107454aa6d63Sopenharmony_ci * @tc.require:
107554aa6d63Sopenharmony_ci */
107654aa6d63Sopenharmony_ciHWTEST_F(HapSignTest, hap_sign_test_025, testing::ext::TestSize.Level1)
107754aa6d63Sopenharmony_ci{
107854aa6d63Sopenharmony_ci    SIGNATURE_TOOLS_LOGI("hello world !!!");
107954aa6d63Sopenharmony_ci    std::unique_ptr<SignToolServiceImpl> api = std::make_unique<SignToolServiceImpl>();
108054aa6d63Sopenharmony_ci    std::shared_ptr<Options> params = std::make_shared<Options>();
108154aa6d63Sopenharmony_ci
108254aa6d63Sopenharmony_ci    std::string mode = "localSign";
108354aa6d63Sopenharmony_ci    std::string keyAlias = "oh-app1-key-v1";
108454aa6d63Sopenharmony_ci    std::string signAlg = "SHA256withECDSA";
108554aa6d63Sopenharmony_ci    std::string signCode = "0";
108654aa6d63Sopenharmony_ci    std::string appCertFile = "./hapSign/app-release1.pem";
108754aa6d63Sopenharmony_ci    std::string profileFile = "./hapSign/signed-profile.p7b";
108854aa6d63Sopenharmony_ci    std::string inFile = "./hapSign/phone-default-unsigned";
108954aa6d63Sopenharmony_ci    std::string keystoreFile = "./hapSign/ohtest.p12";
109054aa6d63Sopenharmony_ci    std::string outFile = "./hapSign/phone-default-signed.hap";
109154aa6d63Sopenharmony_ci    char keyPwd[] = "123456";
109254aa6d63Sopenharmony_ci    char keystorePwd[] = "123456";
109354aa6d63Sopenharmony_ci
109454aa6d63Sopenharmony_ci    (*params)["mode"] = mode;
109554aa6d63Sopenharmony_ci    (*params)["keyAlias"] = keyAlias;
109654aa6d63Sopenharmony_ci    (*params)["signAlg"] = signAlg;
109754aa6d63Sopenharmony_ci    (*params)["signCode"] = signCode;
109854aa6d63Sopenharmony_ci    (*params)["appCertFile"] = appCertFile;
109954aa6d63Sopenharmony_ci    (*params)["profileFile"] = profileFile;
110054aa6d63Sopenharmony_ci    (*params)["inFile"] = inFile;
110154aa6d63Sopenharmony_ci    (*params)["keystoreFile"] = keystoreFile;
110254aa6d63Sopenharmony_ci    (*params)["outFile"] = outFile;
110354aa6d63Sopenharmony_ci    (*params)["keyPwd"] = keyPwd;
110454aa6d63Sopenharmony_ci    (*params)["keystorePwd"] = keystorePwd;
110554aa6d63Sopenharmony_ci
110654aa6d63Sopenharmony_ci    bool ret = api->SignHap(params.get());
110754aa6d63Sopenharmony_ci    EXPECT_EQ(ret, true);
110854aa6d63Sopenharmony_ci}
110954aa6d63Sopenharmony_ci
111054aa6d63Sopenharmony_ci/*
111154aa6d63Sopenharmony_ci * @tc.name: hap_sign_test_026
111254aa6d63Sopenharmony_ci * @tc.desc: This function tests success and failure for interface Sign & ComputeDigests
111354aa6d63Sopenharmony_ci * @tc.type: FUNC
111454aa6d63Sopenharmony_ci * @tc.require:
111554aa6d63Sopenharmony_ci */
111654aa6d63Sopenharmony_ciHWTEST_F(HapSignTest, hap_sign_test_026, testing::ext::TestSize.Level1)
111754aa6d63Sopenharmony_ci{
111854aa6d63Sopenharmony_ci    SIGNATURE_TOOLS_LOGI("hello world !!!");
111954aa6d63Sopenharmony_ci    ByteBuffer bf1("123456789", 9);
112054aa6d63Sopenharmony_ci    ByteBuffer bf2("123456789", 9);
112154aa6d63Sopenharmony_ci    ByteBuffer bf3("123456789", 9);
112254aa6d63Sopenharmony_ci    ByteBuffer bf4("123456789", 9);
112354aa6d63Sopenharmony_ci    ByteBufferDataSource ds1(bf1);
112454aa6d63Sopenharmony_ci    ByteBufferDataSource ds2(bf2);
112554aa6d63Sopenharmony_ci    ByteBufferDataSource ds3(bf3);
112654aa6d63Sopenharmony_ci
112754aa6d63Sopenharmony_ci    DataSource* contents[] = {&ds1, &ds2, &ds3};
112854aa6d63Sopenharmony_ci    DataSource* contents_t[] = {nullptr, nullptr, nullptr};
112954aa6d63Sopenharmony_ci    int32_t len = 3;
113054aa6d63Sopenharmony_ci
113154aa6d63Sopenharmony_ci    std::vector<OptionalBlock> optionalBlocks;
113254aa6d63Sopenharmony_ci    std::vector<OptionalBlock> optionalBlockSTest;
113354aa6d63Sopenharmony_ci    optionalBlocks.push_back({HapUtils::HAP_PROFILE_BLOCK_ID, bf4});
113454aa6d63Sopenharmony_ci    ByteBuffer dig_context;
113554aa6d63Sopenharmony_ci
113654aa6d63Sopenharmony_ci    SignatureAlgorithm algo = SignatureAlgorithm::ALGORITHM_SHA256_WITH_ECDSA;
113754aa6d63Sopenharmony_ci    int32_t nId = DigestCommon::GetDigestAlgorithmId(algo);
113854aa6d63Sopenharmony_ci    DigestParameter digestParam = HapSignerBlockUtils::GetDigestParameter(nId);
113954aa6d63Sopenharmony_ci
114054aa6d63Sopenharmony_ci    SignerConfig config;
114154aa6d63Sopenharmony_ci    ByteBuffer result;
114254aa6d63Sopenharmony_ci    ByteBuffer result1;
114354aa6d63Sopenharmony_ci    bool ret1 = SignHap::Sign(contents, 2, config, optionalBlocks, result);
114454aa6d63Sopenharmony_ci    EXPECT_EQ(ret1, false);
114554aa6d63Sopenharmony_ci
114654aa6d63Sopenharmony_ci    ret1 = SignHap::Sign(contents_t, 3, config, optionalBlocks, result1);
114754aa6d63Sopenharmony_ci    EXPECT_EQ(ret1, false);
114854aa6d63Sopenharmony_ci
114954aa6d63Sopenharmony_ci    std::vector<SignatureAlgorithmHelper> sig{SignatureAlgorithmHelper::ECDSA_WITH_SHA256_INSTANCE};
115054aa6d63Sopenharmony_ci    config.SetSignatureAlgorithms(sig);
115154aa6d63Sopenharmony_ci    ret1 = SignHap::Sign(contents_t, 3, config, optionalBlocks, result1);
115254aa6d63Sopenharmony_ci    EXPECT_EQ(ret1, false);
115354aa6d63Sopenharmony_ci    bool ret = SignHap::ComputeDigests(digestParam, contents, len, optionalBlockSTest, dig_context);
115454aa6d63Sopenharmony_ci    ret = SignHap::ComputeDigests(digestParam, contents_t, len, optionalBlocks, dig_context);
115554aa6d63Sopenharmony_ci    EXPECT_EQ(ret, false);
115654aa6d63Sopenharmony_ci}
115754aa6d63Sopenharmony_ci
115854aa6d63Sopenharmony_ci/*
115954aa6d63Sopenharmony_ci * @tc.name: hap_sign_test_027
116054aa6d63Sopenharmony_ci * @tc.desc: This function tests failure for interface SignHap due to parameter inFile not exist
116154aa6d63Sopenharmony_ci * @tc.type: FUNC
116254aa6d63Sopenharmony_ci * @tc.require:
116354aa6d63Sopenharmony_ci */
116454aa6d63Sopenharmony_ciHWTEST_F(HapSignTest, hap_sign_test_027, testing::ext::TestSize.Level1)
116554aa6d63Sopenharmony_ci{
116654aa6d63Sopenharmony_ci    SIGNATURE_TOOLS_LOGI("hello world !!!");
116754aa6d63Sopenharmony_ci    std::unique_ptr<SignToolServiceImpl> api = std::make_unique<SignToolServiceImpl>();
116854aa6d63Sopenharmony_ci    std::shared_ptr<Options> params = std::make_shared<Options>();
116954aa6d63Sopenharmony_ci
117054aa6d63Sopenharmony_ci    std::string mode = "localSign";
117154aa6d63Sopenharmony_ci    std::string keyAlias = "oh-app1-key-v1";
117254aa6d63Sopenharmony_ci    std::string signAlg = "SHA256withECDSA";
117354aa6d63Sopenharmony_ci    std::string signCode = "0";
117454aa6d63Sopenharmony_ci    std::string appCertFile = "./hapSign/app-release1.pem";
117554aa6d63Sopenharmony_ci    std::string profileFile = "./hapSign/signed-profile.p7b";
117654aa6d63Sopenharmony_ci    std::string inFile = "./hapSign/phone-default.hap";
117754aa6d63Sopenharmony_ci    std::string keystoreFile = "./hapSign/ohtest.p12";
117854aa6d63Sopenharmony_ci    std::string outFile = "./hapSign/phone-default-signed.hap";
117954aa6d63Sopenharmony_ci    char keyPwd[] = "123456";
118054aa6d63Sopenharmony_ci    char keystorePwd[] = "123456";
118154aa6d63Sopenharmony_ci
118254aa6d63Sopenharmony_ci    (*params)["mode"] = mode;
118354aa6d63Sopenharmony_ci    (*params)["keyAlias"] = keyAlias;
118454aa6d63Sopenharmony_ci    (*params)["signAlg"] = signAlg;
118554aa6d63Sopenharmony_ci    (*params)["signCode"] = signCode;
118654aa6d63Sopenharmony_ci    (*params)["appCertFile"] = appCertFile;
118754aa6d63Sopenharmony_ci    (*params)["profileFile"] = profileFile;
118854aa6d63Sopenharmony_ci    (*params)["inFile"] = inFile;
118954aa6d63Sopenharmony_ci    (*params)["keystoreFile"] = keystoreFile;
119054aa6d63Sopenharmony_ci    (*params)["outFile"] = outFile;
119154aa6d63Sopenharmony_ci    (*params)["keyPwd"] = keyPwd;
119254aa6d63Sopenharmony_ci    (*params)["keystorePwd"] = keystorePwd;
119354aa6d63Sopenharmony_ci
119454aa6d63Sopenharmony_ci    bool ret = api->SignHap(params.get());
119554aa6d63Sopenharmony_ci    EXPECT_EQ(ret, false);
119654aa6d63Sopenharmony_ci}
119754aa6d63Sopenharmony_ci
119854aa6d63Sopenharmony_ci/*
119954aa6d63Sopenharmony_ci * @tc.name: hap_sign_test_028
120054aa6d63Sopenharmony_ci * @tc.desc: This function tests failure for interface SignHap due to parameter inFile damage
120154aa6d63Sopenharmony_ci * @tc.type: FUNC
120254aa6d63Sopenharmony_ci * @tc.require:
120354aa6d63Sopenharmony_ci */
120454aa6d63Sopenharmony_ciHWTEST_F(HapSignTest, hap_sign_test_028, testing::ext::TestSize.Level1)
120554aa6d63Sopenharmony_ci{
120654aa6d63Sopenharmony_ci    SIGNATURE_TOOLS_LOGI("hello world !!!");
120754aa6d63Sopenharmony_ci    std::unique_ptr<SignToolServiceImpl> api = std::make_unique<SignToolServiceImpl>();
120854aa6d63Sopenharmony_ci    std::shared_ptr<Options> params = std::make_shared<Options>();
120954aa6d63Sopenharmony_ci
121054aa6d63Sopenharmony_ci    std::string mode = "localSign";
121154aa6d63Sopenharmony_ci    std::string keyAlias = "oh-app1-key-v1";
121254aa6d63Sopenharmony_ci    std::string signAlg = "SHA256withECDSA";
121354aa6d63Sopenharmony_ci    std::string signCode = "0";
121454aa6d63Sopenharmony_ci    std::string appCertFile = "./hapSign/app-release1.pem";
121554aa6d63Sopenharmony_ci    std::string profileFile = "./hapSign/signed-profile.p7b";
121654aa6d63Sopenharmony_ci    std::string inFile = "./hapSign/unsigned_with_cd_and_eocd.hap";
121754aa6d63Sopenharmony_ci    std::string keystoreFile = "./hapSign/ohtest.p12";
121854aa6d63Sopenharmony_ci    std::string outFile = "./hapSign/phone-default-signed.hap";
121954aa6d63Sopenharmony_ci    char keyPwd[] = "123456";
122054aa6d63Sopenharmony_ci    char keystorePwd[] = "123456";
122154aa6d63Sopenharmony_ci
122254aa6d63Sopenharmony_ci    (*params)["mode"] = mode;
122354aa6d63Sopenharmony_ci    (*params)["keyAlias"] = keyAlias;
122454aa6d63Sopenharmony_ci    (*params)["signAlg"] = signAlg;
122554aa6d63Sopenharmony_ci    (*params)["signCode"] = signCode;
122654aa6d63Sopenharmony_ci    (*params)["appCertFile"] = appCertFile;
122754aa6d63Sopenharmony_ci    (*params)["profileFile"] = profileFile;
122854aa6d63Sopenharmony_ci    (*params)["inFile"] = inFile;
122954aa6d63Sopenharmony_ci    (*params)["keystoreFile"] = keystoreFile;
123054aa6d63Sopenharmony_ci    (*params)["outFile"] = outFile;
123154aa6d63Sopenharmony_ci    (*params)["keyPwd"] = keyPwd;
123254aa6d63Sopenharmony_ci    (*params)["keystorePwd"] = keystorePwd;
123354aa6d63Sopenharmony_ci
123454aa6d63Sopenharmony_ci    bool ret = api->SignHap(params.get());
123554aa6d63Sopenharmony_ci    EXPECT_EQ(ret, true);
123654aa6d63Sopenharmony_ci}
123754aa6d63Sopenharmony_ci
123854aa6d63Sopenharmony_ci/*
123954aa6d63Sopenharmony_ci * @tc.name: hap_sign_test_029
124054aa6d63Sopenharmony_ci * @tc.desc: This function tests failure for interface SignHap due to parameter signAlg not suport
124154aa6d63Sopenharmony_ci * @tc.type: FUNC
124254aa6d63Sopenharmony_ci * @tc.require:
124354aa6d63Sopenharmony_ci */
124454aa6d63Sopenharmony_ciHWTEST_F(HapSignTest, hap_sign_test_029, testing::ext::TestSize.Level1)
124554aa6d63Sopenharmony_ci{
124654aa6d63Sopenharmony_ci    SIGNATURE_TOOLS_LOGI("hello world !!!");
124754aa6d63Sopenharmony_ci    std::unique_ptr<SignToolServiceImpl> api = std::make_unique<SignToolServiceImpl>();
124854aa6d63Sopenharmony_ci    std::shared_ptr<Options> params = std::make_shared<Options>();
124954aa6d63Sopenharmony_ci
125054aa6d63Sopenharmony_ci    std::string mode = "localSign";
125154aa6d63Sopenharmony_ci    std::string keyAlias = "oh-app1-key-v1";
125254aa6d63Sopenharmony_ci    std::string signAlg = "SHA256w";
125354aa6d63Sopenharmony_ci    std::string signCode = "0";
125454aa6d63Sopenharmony_ci    std::string appCertFile = "./hapSign/app-release1.pem";
125554aa6d63Sopenharmony_ci    std::string profileFile = "./hapSign/signed-profile.p7b";
125654aa6d63Sopenharmony_ci    std::string inFile = "./hapSign/unsigned_with_cd_and_eocd.hap";
125754aa6d63Sopenharmony_ci    std::string keystoreFile = "./hapSign/ohtest.p12";
125854aa6d63Sopenharmony_ci    std::string outFile = "./hapSign/phone-default-signed.hap";
125954aa6d63Sopenharmony_ci    char keyPwd[] = "123456";
126054aa6d63Sopenharmony_ci    char keystorePwd[] = "123456";
126154aa6d63Sopenharmony_ci
126254aa6d63Sopenharmony_ci    (*params)["mode"] = mode;
126354aa6d63Sopenharmony_ci    (*params)["keyAlias"] = keyAlias;
126454aa6d63Sopenharmony_ci    (*params)["signAlg"] = signAlg;
126554aa6d63Sopenharmony_ci    (*params)["signCode"] = signCode;
126654aa6d63Sopenharmony_ci    (*params)["appCertFile"] = appCertFile;
126754aa6d63Sopenharmony_ci    (*params)["profileFile"] = profileFile;
126854aa6d63Sopenharmony_ci    (*params)["inFile"] = inFile;
126954aa6d63Sopenharmony_ci    (*params)["keystoreFile"] = keystoreFile;
127054aa6d63Sopenharmony_ci    (*params)["outFile"] = outFile;
127154aa6d63Sopenharmony_ci    (*params)["keyPwd"] = keyPwd;
127254aa6d63Sopenharmony_ci    (*params)["keystorePwd"] = keystorePwd;
127354aa6d63Sopenharmony_ci
127454aa6d63Sopenharmony_ci    bool ret = api->SignHap(params.get());
127554aa6d63Sopenharmony_ci    EXPECT_EQ(ret, false);
127654aa6d63Sopenharmony_ci}
127754aa6d63Sopenharmony_ci
127854aa6d63Sopenharmony_ci/**
127954aa6d63Sopenharmony_ci * @tc.name: get_options_test_001
128054aa6d63Sopenharmony_ci * @tc.desc: This function tests success for interface SetOptions
128154aa6d63Sopenharmony_ci * @tc.type: FUNC
128254aa6d63Sopenharmony_ci * @tc.require: SR000H63TL
128354aa6d63Sopenharmony_ci */
128454aa6d63Sopenharmony_ciHWTEST_F(HapSignTest, get_options_test_001, testing::ext::TestSize.Level1)
128554aa6d63Sopenharmony_ci{
128654aa6d63Sopenharmony_ci    std::shared_ptr<Options> params = std::make_shared<Options>();
128754aa6d63Sopenharmony_ci    std::string keyAlias = "oh-app1-key-v1";
128854aa6d63Sopenharmony_ci    (*params)["keyAlias"] = keyAlias;
128954aa6d63Sopenharmony_ci    SignerConfig signerConfig;
129054aa6d63Sopenharmony_ci    signerConfig.SetOptions(params.get());
129154aa6d63Sopenharmony_ci    EXPECT_EQ(params.get(), signerConfig.GetOptions());
129254aa6d63Sopenharmony_ci}
129354aa6d63Sopenharmony_ci
129454aa6d63Sopenharmony_ci/**
129554aa6d63Sopenharmony_ci * @tc.name: get_certificates_test_001
129654aa6d63Sopenharmony_ci * @tc.desc: Test function of GetCertificates()  interface for SUCCESS.
129754aa6d63Sopenharmony_ci * @tc.type: FUNC
129854aa6d63Sopenharmony_ci * @tc.require: SR000H63TL
129954aa6d63Sopenharmony_ci */
130054aa6d63Sopenharmony_ciHWTEST_F(HapSignTest, get_certificates_test_001, testing::ext::TestSize.Level1)
130154aa6d63Sopenharmony_ci{
130254aa6d63Sopenharmony_ci    X509* newCert = X509_new();
130354aa6d63Sopenharmony_ci    EXPECT_TRUE(X509_set_version(newCert, 2));
130454aa6d63Sopenharmony_ci    SignerConfig signerConfig;
130554aa6d63Sopenharmony_ci    signerConfig.SetX509CRLs(nullptr);
130654aa6d63Sopenharmony_ci    signerConfig.GetX509CRLs();
130754aa6d63Sopenharmony_ci    signerConfig.SetCertificates(nullptr);
130854aa6d63Sopenharmony_ci    signerConfig.GetCertificates();
130954aa6d63Sopenharmony_ci    signerConfig.GetSignParamMap();
131054aa6d63Sopenharmony_ci    STACK_OF(X509) *certs = sk_X509_new_null();
131154aa6d63Sopenharmony_ci    sk_X509_push(certs, newCert);
131254aa6d63Sopenharmony_ci    signerConfig.SetCertificates(certs);
131354aa6d63Sopenharmony_ci
131454aa6d63Sopenharmony_ci    EXPECT_NE(signerConfig.GetCertificates(), nullptr);
131554aa6d63Sopenharmony_ci}
131654aa6d63Sopenharmony_ci
131754aa6d63Sopenharmony_ci/**
131854aa6d63Sopenharmony_ci * @tc.name: get_X509_CRLs_test_001
131954aa6d63Sopenharmony_ci * @tc.desc: Test function of GetX509CRLs()  interface for SUCCESS.
132054aa6d63Sopenharmony_ci * @tc.type: FUNC
132154aa6d63Sopenharmony_ci * @tc.require: SR000H63TL
132254aa6d63Sopenharmony_ci */
132354aa6d63Sopenharmony_ciHWTEST_F(HapSignTest, get_X509_CRLs_test_001, testing::ext::TestSize.Level1)
132454aa6d63Sopenharmony_ci{
132554aa6d63Sopenharmony_ci    STACK_OF(X509_CRL)* x509CRLs = nullptr;
132654aa6d63Sopenharmony_ci    SignerConfig signerConfig;
132754aa6d63Sopenharmony_ci    signerConfig.SetX509CRLs(x509CRLs);
132854aa6d63Sopenharmony_ci    EXPECT_EQ(x509CRLs, signerConfig.GetX509CRLs());
132954aa6d63Sopenharmony_ci}
133054aa6d63Sopenharmony_ci
133154aa6d63Sopenharmony_ci/**
133254aa6d63Sopenharmony_ci * @tc.name: get_X509_CRLs_test_002
133354aa6d63Sopenharmony_ci * @tc.desc: This function tests failure for interface GetX509CRLs
133454aa6d63Sopenharmony_ci * @tc.type: FUNC
133554aa6d63Sopenharmony_ci * @tc.require: SR000H63TL
133654aa6d63Sopenharmony_ci */
133754aa6d63Sopenharmony_ciHWTEST_F(HapSignTest, get_X509_CRLs_test_002, testing::ext::TestSize.Level1)
133854aa6d63Sopenharmony_ci{
133954aa6d63Sopenharmony_ci    STACK_OF(X509_CRL)* x509CRLs = nullptr;
134054aa6d63Sopenharmony_ci    std::shared_ptr<Options> params = std::make_shared<Options>();
134154aa6d63Sopenharmony_ci
134254aa6d63Sopenharmony_ci    std::string mode = "localSign";
134354aa6d63Sopenharmony_ci    std::string keyAlias = "oh-app1-key-v1";
134454aa6d63Sopenharmony_ci    std::string signAlg = "SHA256w";
134554aa6d63Sopenharmony_ci    std::string signCode = "0";
134654aa6d63Sopenharmony_ci    std::string appCertFile = "./hapSign/app-release1.pem";
134754aa6d63Sopenharmony_ci    std::string profileFile = "./hapSign/signed-profile.p7b";
134854aa6d63Sopenharmony_ci    std::string inFile = "./hapSign/unsigned_with_cd_and_eocd.hap";
134954aa6d63Sopenharmony_ci    std::string keystoreFile = "./hapSign/ohtest.p12";
135054aa6d63Sopenharmony_ci    std::string outFile = "./hapSign/phone-default-signed.hap";
135154aa6d63Sopenharmony_ci    char keyPwd[] = "123456";
135254aa6d63Sopenharmony_ci    char keystorePwd[] = "123456";
135354aa6d63Sopenharmony_ci
135454aa6d63Sopenharmony_ci    (*params)["mode"] = mode;
135554aa6d63Sopenharmony_ci    (*params)["keyAlias"] = keyAlias;
135654aa6d63Sopenharmony_ci    (*params)["signAlg"] = signAlg;
135754aa6d63Sopenharmony_ci    (*params)["signCode"] = signCode;
135854aa6d63Sopenharmony_ci    (*params)["appCertFile"] = appCertFile;
135954aa6d63Sopenharmony_ci    (*params)["profileFile"] = profileFile;
136054aa6d63Sopenharmony_ci    (*params)["inFile"] = inFile;
136154aa6d63Sopenharmony_ci    (*params)["keystoreFile"] = keystoreFile;
136254aa6d63Sopenharmony_ci    (*params)["outFile"] = outFile;
136354aa6d63Sopenharmony_ci    (*params)["keyPwd"] = keyPwd;
136454aa6d63Sopenharmony_ci    (*params)["keystorePwd"] = keystorePwd;
136554aa6d63Sopenharmony_ci
136654aa6d63Sopenharmony_ci    SignerConfig signerConfig;
136754aa6d63Sopenharmony_ci    signerConfig.SetOptions(params.get());
136854aa6d63Sopenharmony_ci
136954aa6d63Sopenharmony_ci    signerConfig.GetX509CRLs();
137054aa6d63Sopenharmony_ci    STACK_OF(X509_CRL)* crls = sk_X509_CRL_new_null();
137154aa6d63Sopenharmony_ci    signerConfig.SetX509CRLs(crls);
137254aa6d63Sopenharmony_ci    signerConfig.GetX509CRLs();
137354aa6d63Sopenharmony_ci
137454aa6d63Sopenharmony_ci    signerConfig.SetCertificates(nullptr);
137554aa6d63Sopenharmony_ci    signerConfig.SetX509CRLs(x509CRLs);
137654aa6d63Sopenharmony_ci    signerConfig.GetX509CRLs();
137754aa6d63Sopenharmony_ci
137854aa6d63Sopenharmony_ci    X509* newCert = X509_new();
137954aa6d63Sopenharmony_ci    X509_set_version(newCert, 2);
138054aa6d63Sopenharmony_ci    signerConfig.SetCertificates((STACK_OF(X509)*)newCert);
138154aa6d63Sopenharmony_ci    signerConfig.GetX509CRLs();
138254aa6d63Sopenharmony_ci
138354aa6d63Sopenharmony_ci    signerConfig.GetSigner();
138454aa6d63Sopenharmony_ci    signerConfig.SetX509CRLs(x509CRLs);
138554aa6d63Sopenharmony_ci    signerConfig.SetCertificates(nullptr);
138654aa6d63Sopenharmony_ci    signerConfig.GetCertificates();
138754aa6d63Sopenharmony_ci    EXPECT_EQ(false, (signerConfig.GetX509CRLs() != nullptr));
138854aa6d63Sopenharmony_ci}
138954aa6d63Sopenharmony_ci
139054aa6d63Sopenharmony_ci/**
139154aa6d63Sopenharmony_ci * @tc.name: get_compatible_version_test_001
139254aa6d63Sopenharmony_ci * @tc.desc: Test function of GetCompatibleVersion()  interface for SUCCESS.
139354aa6d63Sopenharmony_ci * @tc.type: FUNC
139454aa6d63Sopenharmony_ci * @tc.require: SR000H63TL
139554aa6d63Sopenharmony_ci */
139654aa6d63Sopenharmony_ciHWTEST_F(HapSignTest, get_compatible_version_test_001, testing::ext::TestSize.Level1)
139754aa6d63Sopenharmony_ci{
139854aa6d63Sopenharmony_ci    int n = 5;
139954aa6d63Sopenharmony_ci    SignerConfig signerConfig;
140054aa6d63Sopenharmony_ci    signerConfig.SetCompatibleVersion(n);
140154aa6d63Sopenharmony_ci    EXPECT_EQ(5, signerConfig.GetCompatibleVersion());
140254aa6d63Sopenharmony_ci}
140354aa6d63Sopenharmony_ci
140454aa6d63Sopenharmony_ci/**
140554aa6d63Sopenharmony_ci * @tc.name: find_by_id_test_001
140654aa6d63Sopenharmony_ci * @tc.desc: Test function of FindById()  interface for SUCCESS.
140754aa6d63Sopenharmony_ci * @tc.type: FUNC
140854aa6d63Sopenharmony_ci * @tc.require: SR000H63TL
140954aa6d63Sopenharmony_ci */
141054aa6d63Sopenharmony_ciHWTEST_F(HapSignTest, find_by_id_test_001, testing::ext::TestSize.Level1)
141154aa6d63Sopenharmony_ci{
141254aa6d63Sopenharmony_ci    const SignatureAlgorithmHelper* tmp = SignatureAlgorithmHelper::FindById(SignatureAlgorithmId::ECDSA_WITH_SHA256);
141354aa6d63Sopenharmony_ci    EXPECT_EQ(&(SignatureAlgorithmHelper::ECDSA_WITH_SHA256_INSTANCE), tmp);
141454aa6d63Sopenharmony_ci    const SignatureAlgorithmHelper* tmp1 = SignatureAlgorithmHelper::FindById(SignatureAlgorithmId::ECDSA_WITH_SHA384);
141554aa6d63Sopenharmony_ci    EXPECT_EQ(&(SignatureAlgorithmHelper::ECDSA_WITH_SHA384_INSTANCE), tmp1);
141654aa6d63Sopenharmony_ci}
141754aa6d63Sopenharmony_ci
141854aa6d63Sopenharmony_ci/**
141954aa6d63Sopenharmony_ci * @tc.name: find_by_id_test_002
142054aa6d63Sopenharmony_ci * @tc.desc: Test function of FindById()  interface for SUCCESS.
142154aa6d63Sopenharmony_ci * @tc.type: FUNC
142254aa6d63Sopenharmony_ci * @tc.require: SR000H63TL
142354aa6d63Sopenharmony_ci */
142454aa6d63Sopenharmony_ciHWTEST_F(HapSignTest, find_by_id_test_002, testing::ext::TestSize.Level1)
142554aa6d63Sopenharmony_ci{
142654aa6d63Sopenharmony_ci    SignatureAlgorithmHelper tmp1 = SignatureAlgorithmHelper::ECDSA_WITH_SHA256_INSTANCE;
142754aa6d63Sopenharmony_ci    SignatureAlgorithmHelper tmp3 = SignatureAlgorithmHelper::ECDSA_WITH_SHA384_INSTANCE;
142854aa6d63Sopenharmony_ci    SignatureAlgorithmHelper* tmp2 = &tmp1;
142954aa6d63Sopenharmony_ci    *tmp2 = tmp1;
143054aa6d63Sopenharmony_ci    tmp3 = tmp1;
143154aa6d63Sopenharmony_ci    const SignatureAlgorithmHelper* tmp = SignatureAlgorithmHelper::FindById(SignatureAlgorithmId::DSA_WITH_SHA512);
143254aa6d63Sopenharmony_ci    EXPECT_EQ(nullptr, tmp);
143354aa6d63Sopenharmony_ci}
143454aa6d63Sopenharmony_ci
143554aa6d63Sopenharmony_ci/*
143654aa6d63Sopenharmony_ci * @tc.name: remote_sign_provider_001
143754aa6d63Sopenharmony_ci * @tc.desc: This function tests failure for interface CheckParams due to signCode is 3
143854aa6d63Sopenharmony_ci * @tc.type: FUNC
143954aa6d63Sopenharmony_ci * @tc.require:
144054aa6d63Sopenharmony_ci */
144154aa6d63Sopenharmony_ciHWTEST_F(HapSignTest, remote_sign_provider_001, testing::ext::TestSize.Level1)
144254aa6d63Sopenharmony_ci{
144354aa6d63Sopenharmony_ci    SIGNATURE_TOOLS_LOGI("hello world !!!");
144454aa6d63Sopenharmony_ci    std::unique_ptr<SignProvider> signProvider = std::make_unique<RemoteSignProvider>();
144554aa6d63Sopenharmony_ci    std::shared_ptr<Options> params = std::make_shared<Options>();
144654aa6d63Sopenharmony_ci
144754aa6d63Sopenharmony_ci    std::string mode = "remoteSign";
144854aa6d63Sopenharmony_ci    std::string keyAlias = "oh-app1-key-v1";
144954aa6d63Sopenharmony_ci    std::string signAlg = "SHA256withECDSA";
145054aa6d63Sopenharmony_ci    std::string profileFile = "./hapSign/signed-profile.p7b";
145154aa6d63Sopenharmony_ci    std::string inFile = "./hapSign/phone-default-unsigned.hap";
145254aa6d63Sopenharmony_ci    std::string outFile = "./hapSign/phone-default-signed.hap";
145354aa6d63Sopenharmony_ci    std::string onlineAuthMode = "/mnt/d/testcpuls/OpenHarmony.p12";
145454aa6d63Sopenharmony_ci    std::string compatibleVersion = "8";
145554aa6d63Sopenharmony_ci    std::string signerPlugin = "/mnt/d/libRemoteSigner.so";
145654aa6d63Sopenharmony_ci    std::string signServer = "/mnt/d/testcpuls/app-release1.pem";
145754aa6d63Sopenharmony_ci    std::string username = "test";
145854aa6d63Sopenharmony_ci    char userPwd[] = "123456";
145954aa6d63Sopenharmony_ci
146054aa6d63Sopenharmony_ci    (*params)["mode"] = mode;
146154aa6d63Sopenharmony_ci    (*params)["keyAlias"] = keyAlias;
146254aa6d63Sopenharmony_ci    (*params)["signAlg"] = signAlg;
146354aa6d63Sopenharmony_ci    (*params)["profileFile"] = profileFile;
146454aa6d63Sopenharmony_ci    (*params)["inFile"] = inFile;
146554aa6d63Sopenharmony_ci    (*params)["outFile"] = outFile;
146654aa6d63Sopenharmony_ci    (*params)["onlineAuthMode"] = onlineAuthMode;
146754aa6d63Sopenharmony_ci    (*params)["compatibleVersion"] = compatibleVersion;
146854aa6d63Sopenharmony_ci    (*params)["signerPlugin"] = signerPlugin;
146954aa6d63Sopenharmony_ci    (*params)["signServer"] = signServer;
147054aa6d63Sopenharmony_ci    (*params)["username"] = username;
147154aa6d63Sopenharmony_ci    (*params)["userPwd"] = userPwd;
147254aa6d63Sopenharmony_ci
147354aa6d63Sopenharmony_ci    (*params)["signCode"] = std::string("3");
147454aa6d63Sopenharmony_ci    bool retParam = signProvider->CheckParams(params.get());
147554aa6d63Sopenharmony_ci    EXPECT_EQ(retParam, false);
147654aa6d63Sopenharmony_ci}
147754aa6d63Sopenharmony_ci
147854aa6d63Sopenharmony_ci/*
147954aa6d63Sopenharmony_ci * @tc.name: remote_sign_provider_002
148054aa6d63Sopenharmony_ci * @tc.desc: This function tests failure for interface CheckInputCertMatchWithProfile due to X509 error
148154aa6d63Sopenharmony_ci * @tc.type: FUNC
148254aa6d63Sopenharmony_ci * @tc.require:
148354aa6d63Sopenharmony_ci */
148454aa6d63Sopenharmony_ciHWTEST_F(HapSignTest, remote_sign_provider_002, testing::ext::TestSize.Level1)
148554aa6d63Sopenharmony_ci{
148654aa6d63Sopenharmony_ci    SIGNATURE_TOOLS_LOGI("hello world !!!");
148754aa6d63Sopenharmony_ci    std::unique_ptr<RemoteSignProvider> signProvider = std::make_unique<RemoteSignProvider>();
148854aa6d63Sopenharmony_ci
148954aa6d63Sopenharmony_ci    bool ret = signProvider->CheckInputCertMatchWithProfile(nullptr, nullptr);
149054aa6d63Sopenharmony_ci    EXPECT_EQ(ret, false);
149154aa6d63Sopenharmony_ci
149254aa6d63Sopenharmony_ci    X509* cert = nullptr;
149354aa6d63Sopenharmony_ci    STACK_OF(X509)* skCert = sk_X509_new(nullptr);
149454aa6d63Sopenharmony_ci    BIO* certBio = BIO_new_file("./hapSign/app-release1.pem", "rb");
149554aa6d63Sopenharmony_ci    if (certBio == nullptr) {
149654aa6d63Sopenharmony_ci        sk_X509_pop_free(skCert, X509_free);
149754aa6d63Sopenharmony_ci        EXPECT_NE(certBio, nullptr);
149854aa6d63Sopenharmony_ci    }
149954aa6d63Sopenharmony_ci    // 读取
150054aa6d63Sopenharmony_ci    while (1) {
150154aa6d63Sopenharmony_ci        cert = PEM_read_bio_X509(certBio, nullptr, nullptr, nullptr);
150254aa6d63Sopenharmony_ci        if (cert == nullptr) {
150354aa6d63Sopenharmony_ci            break;
150454aa6d63Sopenharmony_ci        }
150554aa6d63Sopenharmony_ci        sk_X509_push(skCert, cert);
150654aa6d63Sopenharmony_ci    }
150754aa6d63Sopenharmony_ci    BIO_free(certBio);
150854aa6d63Sopenharmony_ci    if (sk_X509_num(skCert) > 1) {
150954aa6d63Sopenharmony_ci        X509* firstCert = sk_X509_value(skCert, 0);
151054aa6d63Sopenharmony_ci        X509* secondCert = sk_X509_value(skCert, 1);
151154aa6d63Sopenharmony_ci        bool val = signProvider->CheckInputCertMatchWithProfile(firstCert, firstCert);
151254aa6d63Sopenharmony_ci        val = signProvider->CheckInputCertMatchWithProfile(firstCert, secondCert);
151354aa6d63Sopenharmony_ci        EXPECT_EQ(val, false);
151454aa6d63Sopenharmony_ci    }
151554aa6d63Sopenharmony_ci    sk_X509_pop_free(skCert, X509_free);
151654aa6d63Sopenharmony_ci}
151754aa6d63Sopenharmony_ci
151854aa6d63Sopenharmony_ci/*
151954aa6d63Sopenharmony_ci * @tc.name: remote_sign_provider_003
152054aa6d63Sopenharmony_ci * @tc.desc: This function tests failure for interface CheckInputCertMatchWithProfile due to x509 error
152154aa6d63Sopenharmony_ci * @tc.type: FUNC
152254aa6d63Sopenharmony_ci * @tc.require:
152354aa6d63Sopenharmony_ci */
152454aa6d63Sopenharmony_ciHWTEST_F(HapSignTest, remote_sign_provider_003, testing::ext::TestSize.Level1)
152554aa6d63Sopenharmony_ci{
152654aa6d63Sopenharmony_ci    SIGNATURE_TOOLS_LOGI("hello world !!!");
152754aa6d63Sopenharmony_ci    std::unique_ptr<RemoteSignProvider> signProvider = std::make_unique<RemoteSignProvider>();
152854aa6d63Sopenharmony_ci
152954aa6d63Sopenharmony_ci    X509* cert = X509_new();
153054aa6d63Sopenharmony_ci    X509_REQ* issuerReq = X509_REQ_new();
153154aa6d63Sopenharmony_ci    std::string issuername = "C=CN,O=OpenHarmony,OU=OpenHarmony Community,CN=Application Signature Service CA";
153254aa6d63Sopenharmony_ci    CertTools::SetCertIssuerName(cert, BuildDN(issuername, issuerReq));
153354aa6d63Sopenharmony_ci
153454aa6d63Sopenharmony_ci    std::string subjectname = "C=CN,O=OpenHarmony,OU=OpenHarmony Community,CN=Application Signature Service CA";
153554aa6d63Sopenharmony_ci    X509_set_subject_name(cert, BuildDN(subjectname, issuerReq));
153654aa6d63Sopenharmony_ci
153754aa6d63Sopenharmony_ci    X509* cert1 = X509_new();
153854aa6d63Sopenharmony_ci    X509_REQ* issuerReq1 = X509_REQ_new();
153954aa6d63Sopenharmony_ci    std::string issuername1 = "C=wc,O=OpenHarmony,OU=OpenHarmony Community,CN=Application Signature Service CA";
154054aa6d63Sopenharmony_ci    CertTools::SetCertIssuerName(cert1, BuildDN(issuername1, issuerReq1));
154154aa6d63Sopenharmony_ci
154254aa6d63Sopenharmony_ci    std::string subjectname1 = "C=CN,O=OpenHarmony,OU=OpenHarmony Community,CN=Application Signature Service CA";
154354aa6d63Sopenharmony_ci    X509_set_subject_name(cert1, BuildDN(subjectname1, issuerReq1));
154454aa6d63Sopenharmony_ci
154554aa6d63Sopenharmony_ci    bool ret = signProvider->CheckInputCertMatchWithProfile(cert1, cert);
154654aa6d63Sopenharmony_ci    X509_free(cert);
154754aa6d63Sopenharmony_ci    X509_free(cert1);
154854aa6d63Sopenharmony_ci    X509_REQ_free(issuerReq);
154954aa6d63Sopenharmony_ci    X509_REQ_free(issuerReq1);
155054aa6d63Sopenharmony_ci    EXPECT_EQ(ret, false);
155154aa6d63Sopenharmony_ci}
155254aa6d63Sopenharmony_ci
155354aa6d63Sopenharmony_ci/*
155454aa6d63Sopenharmony_ci * @tc.name: remote_sign_provider_004
155554aa6d63Sopenharmony_ci * @tc.desc: This function tests failure for interface CheckInputCertMatchWithProfile due to subjectname error
155654aa6d63Sopenharmony_ci * @tc.type: FUNC
155754aa6d63Sopenharmony_ci * @tc.require:
155854aa6d63Sopenharmony_ci */
155954aa6d63Sopenharmony_ciHWTEST_F(HapSignTest, remote_sign_provider_004, testing::ext::TestSize.Level1)
156054aa6d63Sopenharmony_ci{
156154aa6d63Sopenharmony_ci    SIGNATURE_TOOLS_LOGI("hello world !!!");
156254aa6d63Sopenharmony_ci    std::unique_ptr<RemoteSignProvider> signProvider = std::make_unique<RemoteSignProvider>();
156354aa6d63Sopenharmony_ci
156454aa6d63Sopenharmony_ci    X509* cert = X509_new();
156554aa6d63Sopenharmony_ci    X509_REQ* issuerReq = X509_REQ_new();
156654aa6d63Sopenharmony_ci    std::string issuername = "C=CN,O=OpenHarmony,OU=OpenHarmony Community,CN=Application Signature Service CA";
156754aa6d63Sopenharmony_ci    CertTools::SetCertIssuerName(cert, BuildDN(issuername, issuerReq));
156854aa6d63Sopenharmony_ci    CertTools::SetCertSerialNum(cert);
156954aa6d63Sopenharmony_ci    std::string subjectname = "C=CN,O=OpenHarmony,OU=OpenHarmony Community,CN=Application Signature Service CA";
157054aa6d63Sopenharmony_ci    X509_set_subject_name(cert, BuildDN(subjectname, issuerReq));
157154aa6d63Sopenharmony_ci
157254aa6d63Sopenharmony_ci    X509* cert1 = X509_new();
157354aa6d63Sopenharmony_ci    X509_REQ* issuerReq1 = X509_REQ_new();
157454aa6d63Sopenharmony_ci    std::string issuername1 = "C=CN,O=OpenHarmony,OU=OpenHarmony Community,CN=Application Signature Service CA";
157554aa6d63Sopenharmony_ci    CertTools::SetCertIssuerName(cert1, BuildDN(issuername1, issuerReq1));
157654aa6d63Sopenharmony_ci    CertTools::SetCertSerialNum(cert1);
157754aa6d63Sopenharmony_ci    std::string subjectname1 = "C=CN,O=OpenHarmony,OU=OpenHarmony Community,CN=Application Signature Service CA";
157854aa6d63Sopenharmony_ci    X509_set_subject_name(cert1, BuildDN(subjectname1, issuerReq1));
157954aa6d63Sopenharmony_ci
158054aa6d63Sopenharmony_ci    bool ret = signProvider->CheckInputCertMatchWithProfile(cert1, cert);
158154aa6d63Sopenharmony_ci    X509_free(cert);
158254aa6d63Sopenharmony_ci    X509_free(cert1);
158354aa6d63Sopenharmony_ci    X509_REQ_free(issuerReq);
158454aa6d63Sopenharmony_ci    X509_REQ_free(issuerReq1);
158554aa6d63Sopenharmony_ci    EXPECT_EQ(ret, false);
158654aa6d63Sopenharmony_ci}
158754aa6d63Sopenharmony_ci
158854aa6d63Sopenharmony_ci/*
158954aa6d63Sopenharmony_ci * @tc.name: remote_sign_provider_005
159054aa6d63Sopenharmony_ci * @tc.desc: This function tests failure for interface CheckParams due to signCode is 3
159154aa6d63Sopenharmony_ci * @tc.type: FUNC
159254aa6d63Sopenharmony_ci * @tc.require:
159354aa6d63Sopenharmony_ci */
159454aa6d63Sopenharmony_ciHWTEST_F(HapSignTest, remote_sign_provider_005, testing::ext::TestSize.Level1)
159554aa6d63Sopenharmony_ci{
159654aa6d63Sopenharmony_ci    SIGNATURE_TOOLS_LOGI("hello world !!!");
159754aa6d63Sopenharmony_ci    std::unique_ptr<SignProvider> signProvider = std::make_unique<RemoteSignProvider>();
159854aa6d63Sopenharmony_ci    std::shared_ptr<Options> params = std::make_shared<Options>();
159954aa6d63Sopenharmony_ci
160054aa6d63Sopenharmony_ci    std::string mode = "remoteSign";
160154aa6d63Sopenharmony_ci    std::string keyAlias = "oh-app1-key-v1";
160254aa6d63Sopenharmony_ci    std::string signAlg = "SHA256withECDSA";
160354aa6d63Sopenharmony_ci    std::string profileFile = "./hapSign/signed-profile.p7b";
160454aa6d63Sopenharmony_ci    std::string inFile = "./hapSign/phone-default-unsigned.hap";
160554aa6d63Sopenharmony_ci    std::string outFile = "./hapSign/phone-default-signed.hap";
160654aa6d63Sopenharmony_ci    std::string onlineAuthMode = "/mnt/d/testcpuls/OpenHarmony.p12";
160754aa6d63Sopenharmony_ci    std::string compatibleVersion = "8";
160854aa6d63Sopenharmony_ci    std::string signerPlugin = "/mnt/d/libRemoteSigner.so";
160954aa6d63Sopenharmony_ci    std::string signServer = "/mnt/d/testcpuls/app-release1.pem";
161054aa6d63Sopenharmony_ci    std::string username = "test";
161154aa6d63Sopenharmony_ci    char userPwd[] = "123456";
161254aa6d63Sopenharmony_ci
161354aa6d63Sopenharmony_ci    (*params)["mode"] = mode;
161454aa6d63Sopenharmony_ci    (*params)["keyAlias"] = keyAlias;
161554aa6d63Sopenharmony_ci    (*params)["signAlg"] = signAlg;
161654aa6d63Sopenharmony_ci    (*params)["profileFile"] = profileFile;
161754aa6d63Sopenharmony_ci    (*params)["inFile"] = inFile;
161854aa6d63Sopenharmony_ci    (*params)["outFile"] = outFile;
161954aa6d63Sopenharmony_ci    (*params)["onlineAuthMode"] = onlineAuthMode;
162054aa6d63Sopenharmony_ci    (*params)["compatibleVersion"] = compatibleVersion;
162154aa6d63Sopenharmony_ci    (*params)["signerPlugin"] = signerPlugin;
162254aa6d63Sopenharmony_ci    (*params)["signServer"] = signServer;
162354aa6d63Sopenharmony_ci    (*params)["username"] = username;
162454aa6d63Sopenharmony_ci    (*params)["userPwd"] = userPwd;
162554aa6d63Sopenharmony_ci
162654aa6d63Sopenharmony_ci    (*params)["signCode"] = std::string("3");
162754aa6d63Sopenharmony_ci    bool retParam = signProvider->CheckParams(params.get());
162854aa6d63Sopenharmony_ci    EXPECT_EQ(retParam, false);
162954aa6d63Sopenharmony_ci}
163054aa6d63Sopenharmony_ci
163154aa6d63Sopenharmony_ci/*
163254aa6d63Sopenharmony_ci * @tc.name: remote_sign_provider_006
163354aa6d63Sopenharmony_ci * @tc.desc: This function tests success for interface CheckParams
163454aa6d63Sopenharmony_ci * @tc.type: FUNC
163554aa6d63Sopenharmony_ci * @tc.require:
163654aa6d63Sopenharmony_ci */
163754aa6d63Sopenharmony_ciHWTEST_F(HapSignTest, remote_sign_provider_006, testing::ext::TestSize.Level1)
163854aa6d63Sopenharmony_ci{
163954aa6d63Sopenharmony_ci    SIGNATURE_TOOLS_LOGI("hello world !!!");
164054aa6d63Sopenharmony_ci    std::unique_ptr<SignProvider> signProvider = std::make_unique<RemoteSignProvider>();
164154aa6d63Sopenharmony_ci    std::shared_ptr<Options> params = std::make_shared<Options>();
164254aa6d63Sopenharmony_ci
164354aa6d63Sopenharmony_ci    std::string mode = "remoteSign";
164454aa6d63Sopenharmony_ci    std::string keyAlias = "oh-app1-key-v1";
164554aa6d63Sopenharmony_ci    std::string signAlg = "SHA256withECDSA";
164654aa6d63Sopenharmony_ci    std::string profileFile = "./hapSign/signed-profile.p7b";
164754aa6d63Sopenharmony_ci    std::string inFile = "./hapSign/phone-default-unsigned.hap";
164854aa6d63Sopenharmony_ci    std::string outFile = "./hapSign/phone-default-signed.hap";
164954aa6d63Sopenharmony_ci    std::string onlineAuthMode = "/mnt/d/testcpuls/OpenHarmony.p12";
165054aa6d63Sopenharmony_ci    std::string compatibleVersion = "8";
165154aa6d63Sopenharmony_ci    std::string signerPlugin = "/mnt/d/libRemoteSigner.so";
165254aa6d63Sopenharmony_ci    std::string signServer = "/mnt/d/testcpuls/app-release1.pem";
165354aa6d63Sopenharmony_ci    std::string username = "test";
165454aa6d63Sopenharmony_ci    char userPwd[] = "123456";
165554aa6d63Sopenharmony_ci
165654aa6d63Sopenharmony_ci    (*params)["mode"] = mode;
165754aa6d63Sopenharmony_ci    (*params)["keyAlias"] = keyAlias;
165854aa6d63Sopenharmony_ci    (*params)["signAlg"] = signAlg;
165954aa6d63Sopenharmony_ci    (*params)["profileFile"] = profileFile;
166054aa6d63Sopenharmony_ci    (*params)["inFile"] = inFile;
166154aa6d63Sopenharmony_ci    (*params)["outFile"] = outFile;
166254aa6d63Sopenharmony_ci    (*params)["onlineAuthMode"] = onlineAuthMode;
166354aa6d63Sopenharmony_ci    (*params)["compatibleVersion"] = compatibleVersion;
166454aa6d63Sopenharmony_ci    (*params)["signerPlugin"] = signerPlugin;
166554aa6d63Sopenharmony_ci    (*params)["signServer"] = signServer;
166654aa6d63Sopenharmony_ci    (*params)["username"] = username;
166754aa6d63Sopenharmony_ci    (*params)["userPwd"] = userPwd;
166854aa6d63Sopenharmony_ci    bool retParam = signProvider->CheckParams(params.get());
166954aa6d63Sopenharmony_ci    EXPECT_EQ(retParam, true);
167054aa6d63Sopenharmony_ci}
167154aa6d63Sopenharmony_ci
167254aa6d63Sopenharmony_ci/*
167354aa6d63Sopenharmony_ci * @tc.name: remote_sign_provider_007
167454aa6d63Sopenharmony_ci * @tc.desc: This function tests failed  for interface CheckInputCertMatchWithProfile due to X509_NAME error
167554aa6d63Sopenharmony_ci * @tc.type: FUNC
167654aa6d63Sopenharmony_ci * @tc.require:
167754aa6d63Sopenharmony_ci */
167854aa6d63Sopenharmony_ciHWTEST_F(HapSignTest, remote_sign_provider_007, testing::ext::TestSize.Level1)
167954aa6d63Sopenharmony_ci{
168054aa6d63Sopenharmony_ci    SIGNATURE_TOOLS_LOGI("hello world !!!");
168154aa6d63Sopenharmony_ci    std::unique_ptr<RemoteSignProvider> signProvider = std::make_unique<RemoteSignProvider>();
168254aa6d63Sopenharmony_ci
168354aa6d63Sopenharmony_ci    X509* cert = X509_new();
168454aa6d63Sopenharmony_ci    X509* cert1 = X509_new();
168554aa6d63Sopenharmony_ci    X509_REQ* issuerReq = X509_REQ_new();
168654aa6d63Sopenharmony_ci    std::string issuername = "C=CN,O=OpenHarmony,OU=OpenHarmony Community,CN=Application Signature Service CA";
168754aa6d63Sopenharmony_ci    CertTools::SetCertIssuerName(cert, BuildDN(issuername, issuerReq));
168854aa6d63Sopenharmony_ci
168954aa6d63Sopenharmony_ci    std::string subjectname = "C=CN,O=OpenHarmony,OU=OpenHarmony Community,CN=Application Signature Service CA";
169054aa6d63Sopenharmony_ci    X509_NAME* subName = BuildDN(subjectname, issuerReq);
169154aa6d63Sopenharmony_ci    X509_set_subject_name(cert, subName);
169254aa6d63Sopenharmony_ci    X509_set_subject_name(cert1, subName);
169354aa6d63Sopenharmony_ci
169454aa6d63Sopenharmony_ci    X509_REQ* issuerReq1 = X509_REQ_new();
169554aa6d63Sopenharmony_ci    std::string issuername1 = "C=wc,O=OpenHarmony,OU=OpenHarmony Community,CN=Application Signature Service CA";
169654aa6d63Sopenharmony_ci    CertTools::SetCertIssuerName(cert1, BuildDN(issuername1, issuerReq1));
169754aa6d63Sopenharmony_ci
169854aa6d63Sopenharmony_ci    std::string subjectname1 = "C=CN,O=OpenHarmony,OU=OpenHarmony Community,CN=Application Signature Service CA";
169954aa6d63Sopenharmony_ci
170054aa6d63Sopenharmony_ci    bool ret = signProvider->CheckInputCertMatchWithProfile(cert1, cert);
170154aa6d63Sopenharmony_ci    X509_free(cert);
170254aa6d63Sopenharmony_ci    X509_free(cert1);
170354aa6d63Sopenharmony_ci    X509_REQ_free(issuerReq);
170454aa6d63Sopenharmony_ci    X509_REQ_free(issuerReq1);
170554aa6d63Sopenharmony_ci    EXPECT_EQ(ret, false);
170654aa6d63Sopenharmony_ci}
170754aa6d63Sopenharmony_ci
170854aa6d63Sopenharmony_ci/*
170954aa6d63Sopenharmony_ci * @tc.name: remote_sign_provider_008
171054aa6d63Sopenharmony_ci * @tc.desc: This function tests failed  for interface CheckInputCertMatchWithProfile due to EVP_PKEY error
171154aa6d63Sopenharmony_ci * @tc.type: FUNC
171254aa6d63Sopenharmony_ci * @tc.require:
171354aa6d63Sopenharmony_ci */
171454aa6d63Sopenharmony_ciHWTEST_F(HapSignTest, remote_sign_provider_008, testing::ext::TestSize.Level1)
171554aa6d63Sopenharmony_ci{
171654aa6d63Sopenharmony_ci    SIGNATURE_TOOLS_LOGI("hello world !!!");
171754aa6d63Sopenharmony_ci    std::unique_ptr<RemoteSignProvider> signProvider = std::make_unique<RemoteSignProvider>();
171854aa6d63Sopenharmony_ci
171954aa6d63Sopenharmony_ci    X509* cert = X509_new();
172054aa6d63Sopenharmony_ci    X509* cert1 = X509_new();
172154aa6d63Sopenharmony_ci    X509_REQ* issuerReq = X509_REQ_new();
172254aa6d63Sopenharmony_ci    std::string issuername = "C=CN,O=OpenHarmony,OU=OpenHarmony Community,CN=Application Signature Service CA";
172354aa6d63Sopenharmony_ci    X509_NAME* issName = BuildDN(issuername, issuerReq);
172454aa6d63Sopenharmony_ci    CertTools::SetCertIssuerName(cert, issName);
172554aa6d63Sopenharmony_ci    CertTools::SetCertIssuerName(cert1, issName);
172654aa6d63Sopenharmony_ci
172754aa6d63Sopenharmony_ci    std::string subjectname = "C=CN,O=OpenHarmony,OU=OpenHarmony Community,CN=Application Signature Service CA";
172854aa6d63Sopenharmony_ci    X509_NAME* subName = BuildDN(subjectname, issuerReq);
172954aa6d63Sopenharmony_ci    X509_set_subject_name(cert, subName);
173054aa6d63Sopenharmony_ci    X509_set_subject_name(cert1, subName);
173154aa6d63Sopenharmony_ci    KeyStoreHelper stroe;
173254aa6d63Sopenharmony_ci    EVP_PKEY* key1 = stroe.GenerateKeyPair("ECC", 256);
173354aa6d63Sopenharmony_ci    EVP_PKEY* key2 = stroe.GenerateKeyPair("ECC", 256);
173454aa6d63Sopenharmony_ci
173554aa6d63Sopenharmony_ci    X509_set_pubkey(cert, key1);
173654aa6d63Sopenharmony_ci    X509_set_pubkey(cert1, key2);
173754aa6d63Sopenharmony_ci
173854aa6d63Sopenharmony_ci    bool ret = signProvider->CheckInputCertMatchWithProfile(cert1, cert);
173954aa6d63Sopenharmony_ci    X509_free(cert);
174054aa6d63Sopenharmony_ci    X509_free(cert1);
174154aa6d63Sopenharmony_ci    X509_REQ_free(issuerReq);
174254aa6d63Sopenharmony_ci    EVP_PKEY_free(key1);
174354aa6d63Sopenharmony_ci    EVP_PKEY_free(key2);
174454aa6d63Sopenharmony_ci    EXPECT_EQ(ret, false);
174554aa6d63Sopenharmony_ci}
174654aa6d63Sopenharmony_ci/*
174754aa6d63Sopenharmony_ci * @tc.name: remote_sign_provider_009
174854aa6d63Sopenharmony_ci * @tc.desc: This function tests failed for interface CheckInputCertMatchWithProfile due to EVP_PKEY error
174954aa6d63Sopenharmony_ci * @tc.type: FUNC
175054aa6d63Sopenharmony_ci * @tc.require:
175154aa6d63Sopenharmony_ci */
175254aa6d63Sopenharmony_ciHWTEST_F(HapSignTest, remote_sign_provider_009, testing::ext::TestSize.Level1)
175354aa6d63Sopenharmony_ci{
175454aa6d63Sopenharmony_ci    SIGNATURE_TOOLS_LOGI("hello world !!!");
175554aa6d63Sopenharmony_ci    std::unique_ptr<RemoteSignProvider> signProvider = std::make_unique<RemoteSignProvider>();
175654aa6d63Sopenharmony_ci
175754aa6d63Sopenharmony_ci    X509* cert = X509_new();
175854aa6d63Sopenharmony_ci    X509* cert1 = X509_new();
175954aa6d63Sopenharmony_ci    X509_REQ* issuerReq = X509_REQ_new();
176054aa6d63Sopenharmony_ci    std::string issuername = "C=CN,O=OpenHarmony,OU=OpenHarmony Community,CN=Application Signature Service CA";
176154aa6d63Sopenharmony_ci    X509_NAME* issName = BuildDN(issuername, issuerReq);
176254aa6d63Sopenharmony_ci    CertTools::SetCertIssuerName(cert, issName);
176354aa6d63Sopenharmony_ci    CertTools::SetCertIssuerName(cert1, issName);
176454aa6d63Sopenharmony_ci
176554aa6d63Sopenharmony_ci    std::string subjectname = "C=CN,O=OpenHarmony,OU=OpenHarmony Community,CN=Application Signature Service CA";
176654aa6d63Sopenharmony_ci    X509_NAME* subName = BuildDN(subjectname, issuerReq);
176754aa6d63Sopenharmony_ci    X509_set_subject_name(cert, subName);
176854aa6d63Sopenharmony_ci    X509_set_subject_name(cert1, subName);
176954aa6d63Sopenharmony_ci    KeyStoreHelper stroe;
177054aa6d63Sopenharmony_ci    EVP_PKEY* key1 = stroe.GenerateKeyPair("ECC", 256);
177154aa6d63Sopenharmony_ci    EVP_PKEY* key2 = stroe.GenerateKeyPair("ECC", 256);
177254aa6d63Sopenharmony_ci
177354aa6d63Sopenharmony_ci    X509_set_pubkey(cert, key1);
177454aa6d63Sopenharmony_ci    X509_set_pubkey(cert1, key2);
177554aa6d63Sopenharmony_ci
177654aa6d63Sopenharmony_ci    bool ret = signProvider->CheckInputCertMatchWithProfile(cert1, nullptr);
177754aa6d63Sopenharmony_ci    X509_free(cert);
177854aa6d63Sopenharmony_ci    X509_free(cert1);
177954aa6d63Sopenharmony_ci    X509_REQ_free(issuerReq);
178054aa6d63Sopenharmony_ci    EVP_PKEY_free(key1);
178154aa6d63Sopenharmony_ci    EVP_PKEY_free(key2);
178254aa6d63Sopenharmony_ci    EXPECT_EQ(ret, false);
178354aa6d63Sopenharmony_ci}
178454aa6d63Sopenharmony_ci
178554aa6d63Sopenharmony_ci/*
178654aa6d63Sopenharmony_ci * @tc.name: remote_sign_provider_010
178754aa6d63Sopenharmony_ci * @tc.desc: This function tests failed for interface CheckInputCertMatchWithProfile due to EVP_PKEY error
178854aa6d63Sopenharmony_ci * @tc.type: FUNC
178954aa6d63Sopenharmony_ci * @tc.require:
179054aa6d63Sopenharmony_ci */
179154aa6d63Sopenharmony_ciHWTEST_F(HapSignTest, remote_sign_provider_010, testing::ext::TestSize.Level1)
179254aa6d63Sopenharmony_ci{
179354aa6d63Sopenharmony_ci    SIGNATURE_TOOLS_LOGI("hello world !!!");
179454aa6d63Sopenharmony_ci    std::unique_ptr<RemoteSignProvider> signProvider = std::make_unique<RemoteSignProvider>();
179554aa6d63Sopenharmony_ci
179654aa6d63Sopenharmony_ci    X509* cert = X509_new();
179754aa6d63Sopenharmony_ci    X509* cert1 = X509_new();
179854aa6d63Sopenharmony_ci    X509_REQ* issuerReq = X509_REQ_new();
179954aa6d63Sopenharmony_ci    std::string issuername = "C=CN,O=OpenHarmony,OU=OpenHarmony Community,CN=Application Signature Service CA";
180054aa6d63Sopenharmony_ci    X509_NAME* issName = BuildDN(issuername, issuerReq);
180154aa6d63Sopenharmony_ci    CertTools::SetCertIssuerName(cert, issName);
180254aa6d63Sopenharmony_ci    CertTools::SetCertIssuerName(cert1, issName);
180354aa6d63Sopenharmony_ci
180454aa6d63Sopenharmony_ci    std::string subjectname = "C=CN,O=OpenHarmony,OU=OpenHarmony Community,CN=Application Signature Service CA";
180554aa6d63Sopenharmony_ci    X509_NAME* subName = BuildDN(subjectname, issuerReq);
180654aa6d63Sopenharmony_ci    X509_set_subject_name(cert, subName);
180754aa6d63Sopenharmony_ci    X509_set_subject_name(cert1, subName);
180854aa6d63Sopenharmony_ci    KeyStoreHelper stroe;
180954aa6d63Sopenharmony_ci    EVP_PKEY* key1 = stroe.GenerateKeyPair("ECC", 256);
181054aa6d63Sopenharmony_ci
181154aa6d63Sopenharmony_ci    X509_set_pubkey(cert, key1);
181254aa6d63Sopenharmony_ci
181354aa6d63Sopenharmony_ci    bool ret = signProvider->CheckInputCertMatchWithProfile(cert1, cert);
181454aa6d63Sopenharmony_ci    X509_free(cert);
181554aa6d63Sopenharmony_ci    X509_free(cert1);
181654aa6d63Sopenharmony_ci    X509_REQ_free(issuerReq);
181754aa6d63Sopenharmony_ci    EVP_PKEY_free(key1);
181854aa6d63Sopenharmony_ci    EXPECT_EQ(ret, false);
181954aa6d63Sopenharmony_ci}
182054aa6d63Sopenharmony_ci
182154aa6d63Sopenharmony_ci/*
182254aa6d63Sopenharmony_ci * @tc.name: remote_sign_provider_011
182354aa6d63Sopenharmony_ci * @tc.desc: This function tests failed for interface CheckInputCertMatchWithProfile due to EVP_PKEY error
182454aa6d63Sopenharmony_ci * @tc.type: FUNC
182554aa6d63Sopenharmony_ci * @tc.require:
182654aa6d63Sopenharmony_ci */
182754aa6d63Sopenharmony_ciHWTEST_F(HapSignTest, remote_sign_provider_011, testing::ext::TestSize.Level1)
182854aa6d63Sopenharmony_ci{
182954aa6d63Sopenharmony_ci    SIGNATURE_TOOLS_LOGI("hello world !!!");
183054aa6d63Sopenharmony_ci    std::unique_ptr<RemoteSignProvider> signProvider = std::make_unique<RemoteSignProvider>();
183154aa6d63Sopenharmony_ci
183254aa6d63Sopenharmony_ci    X509* cert = X509_new();
183354aa6d63Sopenharmony_ci    X509* cert1 = X509_new();
183454aa6d63Sopenharmony_ci    X509_REQ* issuerReq = X509_REQ_new();
183554aa6d63Sopenharmony_ci    std::string issuername = "C=CN,O=OpenHarmony,OU=OpenHarmony Community,CN=Application Signature Service CA";
183654aa6d63Sopenharmony_ci    X509_NAME* issName = BuildDN(issuername, issuerReq);
183754aa6d63Sopenharmony_ci    CertTools::SetCertIssuerName(cert, issName);
183854aa6d63Sopenharmony_ci    CertTools::SetCertIssuerName(cert1, issName);
183954aa6d63Sopenharmony_ci
184054aa6d63Sopenharmony_ci    std::string subjectname = "C=CN,O=OpenHarmony,OU=OpenHarmony Community,CN=Application Signature Service CA";
184154aa6d63Sopenharmony_ci    X509_NAME* subName = BuildDN(subjectname, issuerReq);
184254aa6d63Sopenharmony_ci    X509_set_subject_name(cert, subName);
184354aa6d63Sopenharmony_ci    X509_set_subject_name(cert1, subName);
184454aa6d63Sopenharmony_ci    KeyStoreHelper stroe;
184554aa6d63Sopenharmony_ci    EVP_PKEY* key2 = stroe.GenerateKeyPair("ECC", 256);
184654aa6d63Sopenharmony_ci
184754aa6d63Sopenharmony_ci    X509_set_pubkey(cert1, key2);
184854aa6d63Sopenharmony_ci
184954aa6d63Sopenharmony_ci    bool ret = signProvider->CheckInputCertMatchWithProfile(cert1, cert);
185054aa6d63Sopenharmony_ci    X509_free(cert);
185154aa6d63Sopenharmony_ci    X509_free(cert1);
185254aa6d63Sopenharmony_ci    X509_REQ_free(issuerReq);
185354aa6d63Sopenharmony_ci    EVP_PKEY_free(key2);
185454aa6d63Sopenharmony_ci    EXPECT_EQ(ret, false);
185554aa6d63Sopenharmony_ci}
185654aa6d63Sopenharmony_ci
185754aa6d63Sopenharmony_ci/*
185854aa6d63Sopenharmony_ci * @tc.name: remote_sign_provider_012
185954aa6d63Sopenharmony_ci * @tc.desc: This function tests failed for interface CheckInputCertMatchWithProfile due to EVP_PKEY error
186054aa6d63Sopenharmony_ci * @tc.type: FUNC
186154aa6d63Sopenharmony_ci * @tc.require:
186254aa6d63Sopenharmony_ci */
186354aa6d63Sopenharmony_ciHWTEST_F(HapSignTest, remote_sign_provider_012, testing::ext::TestSize.Level1)
186454aa6d63Sopenharmony_ci{
186554aa6d63Sopenharmony_ci    SIGNATURE_TOOLS_LOGI("hello world !!!");
186654aa6d63Sopenharmony_ci    std::unique_ptr<RemoteSignProvider> signProvider = std::make_unique<RemoteSignProvider>();
186754aa6d63Sopenharmony_ci
186854aa6d63Sopenharmony_ci    X509* cert = X509_new();
186954aa6d63Sopenharmony_ci    X509* cert1 = X509_new();
187054aa6d63Sopenharmony_ci    X509_REQ* issuerReq = X509_REQ_new();
187154aa6d63Sopenharmony_ci    std::string issuername = "C=CN,O=OpenHarmony,OU=OpenHarmony Community,CN=Application Signature Service CA";
187254aa6d63Sopenharmony_ci    X509_NAME* issName = BuildDN(issuername, issuerReq);
187354aa6d63Sopenharmony_ci    CertTools::SetCertIssuerName(cert, issName);
187454aa6d63Sopenharmony_ci    CertTools::SetCertIssuerName(cert1, issName);
187554aa6d63Sopenharmony_ci
187654aa6d63Sopenharmony_ci    std::string subjectname = "C=CN,O=OpenHarmony,OU=OpenHarmony Community,CN=Application Signature Service CA";
187754aa6d63Sopenharmony_ci    X509_NAME* subName = BuildDN(subjectname, issuerReq);
187854aa6d63Sopenharmony_ci    X509_set_subject_name(cert, subName);
187954aa6d63Sopenharmony_ci    X509_set_subject_name(cert1, subName);
188054aa6d63Sopenharmony_ci    KeyStoreHelper stroe;
188154aa6d63Sopenharmony_ci
188254aa6d63Sopenharmony_ci    bool ret = signProvider->CheckInputCertMatchWithProfile(cert1, cert);
188354aa6d63Sopenharmony_ci    X509_free(cert);
188454aa6d63Sopenharmony_ci    X509_free(cert1);
188554aa6d63Sopenharmony_ci    X509_REQ_free(issuerReq);
188654aa6d63Sopenharmony_ci    EXPECT_EQ(ret, false);
188754aa6d63Sopenharmony_ci}
188854aa6d63Sopenharmony_ci
188954aa6d63Sopenharmony_ci/**
189054aa6d63Sopenharmony_ci * @tc.name: remote_sign_provider_013
189154aa6d63Sopenharmony_ci * @tc.desc: This function tests failed for interface Sign due to parameter signerPlugin error
189254aa6d63Sopenharmony_ci * @tc.type: FUNC
189354aa6d63Sopenharmony_ci * @tc.require: SR000H63TL
189454aa6d63Sopenharmony_ci */
189554aa6d63Sopenharmony_ciHWTEST_F(HapSignTest, remote_sign_provider_013, testing::ext::TestSize.Level1)
189654aa6d63Sopenharmony_ci{
189754aa6d63Sopenharmony_ci    std::string mode = "remoteSign";
189854aa6d63Sopenharmony_ci    std::string keyAlias = "oh-app1-key-v1";
189954aa6d63Sopenharmony_ci    std::string profileFile = "./hapSign/signed-profile.p7b";
190054aa6d63Sopenharmony_ci    std::string signAlg = "SHA256withECDSA";
190154aa6d63Sopenharmony_ci    std::string signCode = "1";
190254aa6d63Sopenharmony_ci    std::string compatibleVersion = "8";
190354aa6d63Sopenharmony_ci    std::string inFile = "./hapSign/phone-default-unsigned.hap";
190454aa6d63Sopenharmony_ci    std::string outFile = "./hapSign/signed.hap";
190554aa6d63Sopenharmony_ci    std::string signServer = "./hapSign/app-release1.pem";
190654aa6d63Sopenharmony_ci    std::string signerPlugin = "./hapSign/dummy.z.so";
190754aa6d63Sopenharmony_ci    std::string onlineAuthMode = "./hapSign/ohtest.p12";
190854aa6d63Sopenharmony_ci    std::string username = "123456";
190954aa6d63Sopenharmony_ci    char userPwd[] = "123456";
191054aa6d63Sopenharmony_ci
191154aa6d63Sopenharmony_ci    std::shared_ptr<Options> params = std::make_shared<Options>();
191254aa6d63Sopenharmony_ci    (*params)["mode"] = mode;
191354aa6d63Sopenharmony_ci    (*params)["keyAlias"] = keyAlias;
191454aa6d63Sopenharmony_ci    (*params)["profileFile"] = profileFile;
191554aa6d63Sopenharmony_ci    (*params)["signAlg"] = signAlg;
191654aa6d63Sopenharmony_ci    (*params)["signCode"] = signCode;
191754aa6d63Sopenharmony_ci    (*params)["compatibleVersion"] = compatibleVersion;
191854aa6d63Sopenharmony_ci    (*params)["inFile"] = inFile;
191954aa6d63Sopenharmony_ci    (*params)["outFile"] = outFile;
192054aa6d63Sopenharmony_ci    (*params)["signServer"] = signServer;
192154aa6d63Sopenharmony_ci    (*params)["onlineAuthMode"] = onlineAuthMode;
192254aa6d63Sopenharmony_ci    (*params)["username"] = username;
192354aa6d63Sopenharmony_ci    (*params)["userPwd"] = userPwd;
192454aa6d63Sopenharmony_ci    // the signerPlugin dummy.z.so is not exist
192554aa6d63Sopenharmony_ci    (*params)["signerPlugin"] = signerPlugin;
192654aa6d63Sopenharmony_ci
192754aa6d63Sopenharmony_ci    auto remoteSignProvider = std::make_unique<RemoteSignProvider>();
192854aa6d63Sopenharmony_ci    ASSERT_FALSE(remoteSignProvider->Sign(params.get()));
192954aa6d63Sopenharmony_ci}
193054aa6d63Sopenharmony_ci
193154aa6d63Sopenharmony_ci/*
193254aa6d63Sopenharmony_ci * @tc.name: hap_sign_error_001
193354aa6d63Sopenharmony_ci * @tc.desc: This function tests failed for interface Sign due to parameter path not exist
193454aa6d63Sopenharmony_ci * @tc.type: FUNC
193554aa6d63Sopenharmony_ci * @tc.require:
193654aa6d63Sopenharmony_ci */
193754aa6d63Sopenharmony_ciHWTEST_F(HapSignTest, hap_sign_error_001, testing::ext::TestSize.Level1)
193854aa6d63Sopenharmony_ci{
193954aa6d63Sopenharmony_ci    ByteBuffer bf1("123456789", 9);
194054aa6d63Sopenharmony_ci    ByteBuffer bf2("123456789", 9);
194154aa6d63Sopenharmony_ci    ByteBuffer bf3("123456789", 9);
194254aa6d63Sopenharmony_ci    ByteBuffer bf4(0x7FFFFFFF);
194354aa6d63Sopenharmony_ci    ByteBufferDataSource ds1(bf1);
194454aa6d63Sopenharmony_ci    ByteBufferDataSource ds2(bf2);
194554aa6d63Sopenharmony_ci    ByteBufferDataSource ds3(bf3);
194654aa6d63Sopenharmony_ci    DataSource* contents[] = {&ds1, &ds2, &ds3};
194754aa6d63Sopenharmony_ci    std::vector<OptionalBlock> optionalBlocks;
194854aa6d63Sopenharmony_ci    optionalBlocks.push_back({HapUtils::HAP_PROFILE_BLOCK_ID, bf4});
194954aa6d63Sopenharmony_ci    std::shared_ptr<Options> params = std::make_shared<Options>();
195054aa6d63Sopenharmony_ci    std::string mode = "localSign";
195154aa6d63Sopenharmony_ci    std::string keyAlias = "oh-app1-key-v1";
195254aa6d63Sopenharmony_ci    std::string signAlg = "SHA256withECDSA";
195354aa6d63Sopenharmony_ci    std::string signCode = "1";
195454aa6d63Sopenharmony_ci    std::string appCertFile = "/mnt/d/testcpuls/app-release1.pem";
195554aa6d63Sopenharmony_ci    std::string profileFile = "/mnt/d/testcpuls/signed-profile.p7b";
195654aa6d63Sopenharmony_ci    std::string inFile = "/mnt/d/testcpuls/entry-default-unsigned-so.hap";
195754aa6d63Sopenharmony_ci    std::string keystoreFile = "/mnt/d/testcpuls/OpenHarmony.p12";
195854aa6d63Sopenharmony_ci    std::string outFile = "/mnt/d/testcpuls/entry-default-signed-so.hap";
195954aa6d63Sopenharmony_ci    char keyPwd[] = "123456";
196054aa6d63Sopenharmony_ci    char keystorePwd[] = "123456";
196154aa6d63Sopenharmony_ci    (*params)["mode"] = mode;
196254aa6d63Sopenharmony_ci    (*params)["keyAlias"] = keyAlias;
196354aa6d63Sopenharmony_ci    (*params)["signAlg"] = signAlg;
196454aa6d63Sopenharmony_ci    (*params)["signCode"] = signCode;
196554aa6d63Sopenharmony_ci    (*params)["appCertFile"] = appCertFile;
196654aa6d63Sopenharmony_ci    (*params)["profileFile"] = profileFile;
196754aa6d63Sopenharmony_ci    (*params)["inFile"] = inFile;
196854aa6d63Sopenharmony_ci    (*params)["keystoreFile"] = keystoreFile;
196954aa6d63Sopenharmony_ci    (*params)["outFile"] = outFile;
197054aa6d63Sopenharmony_ci    (*params)["keyPwd"] = keyPwd;
197154aa6d63Sopenharmony_ci    (*params)["keystorePwd"] = keystorePwd;
197254aa6d63Sopenharmony_ci    SignerConfig config;
197354aa6d63Sopenharmony_ci    std::vector<SignatureAlgorithmHelper> sig{SignatureAlgorithmHelper::ECDSA_WITH_SHA256_INSTANCE};
197454aa6d63Sopenharmony_ci    config.SetSignatureAlgorithms(sig);
197554aa6d63Sopenharmony_ci    config.SetOptions(params.get());
197654aa6d63Sopenharmony_ci    ByteBuffer result;
197754aa6d63Sopenharmony_ci    bool ret1 = SignHap::Sign(contents, 3, config, optionalBlocks, result);
197854aa6d63Sopenharmony_ci    EXPECT_EQ(ret1, false);
197954aa6d63Sopenharmony_ci}
198054aa6d63Sopenharmony_ci} // namespace SignatureTools
198154aa6d63Sopenharmony_ci} // namespace OHOS