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
1654aa6d63Sopenharmony_ci#include <memory>
1754aa6d63Sopenharmony_ci#include <fstream>
1854aa6d63Sopenharmony_ci#include <gtest/gtest.h>
1954aa6d63Sopenharmony_ci
2054aa6d63Sopenharmony_ci#include "verify_bin.h"
2154aa6d63Sopenharmony_ci#include "sign_bin.h"
2254aa6d63Sopenharmony_ci#include "hash_utils.h"
2354aa6d63Sopenharmony_ci
2454aa6d63Sopenharmony_cinamespace OHOS {
2554aa6d63Sopenharmony_cinamespace SignatureTools {
2654aa6d63Sopenharmony_ci
2754aa6d63Sopenharmony_ciclass VerifyBinTest : public testing::Test {
2854aa6d63Sopenharmony_cipublic:
2954aa6d63Sopenharmony_ci    static void SetUpTestCase(void);
3054aa6d63Sopenharmony_ci    static void TearDownTestCase();
3154aa6d63Sopenharmony_ci    void SetUp();
3254aa6d63Sopenharmony_ci    void TearDown();
3354aa6d63Sopenharmony_ci};
3454aa6d63Sopenharmony_ci
3554aa6d63Sopenharmony_civoid VerifyBinTest::SetUpTestCase(void)
3654aa6d63Sopenharmony_ci{
3754aa6d63Sopenharmony_ci    (void)rename("./elfVerify/bin_verify_digest_err_package.txt", "./elfVerify/bin_verify_digest_err_package.bin");
3854aa6d63Sopenharmony_ci    (void)rename("./elfVerify/bin_get_profile_err_package.txt", "./elfVerify/bin_get_profile_err_package.bin");
3954aa6d63Sopenharmony_ci    (void)rename("./elfVerify/bin_get_digest_err_package.txt", "./elfVerify/bin_get_digest_err_package.bin");
4054aa6d63Sopenharmony_ci    (void)rename("./elfVerify/bin_signed_package.txt", "./elfVerify/bin_signed_package.bin");
4154aa6d63Sopenharmony_ci    (void)rename("./elfVerify/bin_unsigned_package.txt", "./elfVerify/bin_unsigned_package.bin");
4254aa6d63Sopenharmony_ci}
4354aa6d63Sopenharmony_ci
4454aa6d63Sopenharmony_civoid VerifyBinTest::TearDownTestCase(void)
4554aa6d63Sopenharmony_ci{
4654aa6d63Sopenharmony_ci}
4754aa6d63Sopenharmony_ci
4854aa6d63Sopenharmony_civoid VerifyBinTest::SetUp()
4954aa6d63Sopenharmony_ci{
5054aa6d63Sopenharmony_ci}
5154aa6d63Sopenharmony_ci
5254aa6d63Sopenharmony_civoid VerifyBinTest::TearDown()
5354aa6d63Sopenharmony_ci{
5454aa6d63Sopenharmony_ci}
5554aa6d63Sopenharmony_ci
5654aa6d63Sopenharmony_cistatic const std::map<std::string, std::string> PARAMS = { {"keyPwd", "123456"},
5754aa6d63Sopenharmony_ci                                                           {"mode", "localSign"},
5854aa6d63Sopenharmony_ci                                                           {"keyAlias", "oh-app1-key-v1"},
5954aa6d63Sopenharmony_ci                                                           {"signAlg", "SHA256withECDSA"},
6054aa6d63Sopenharmony_ci                                                           {"appCertFile", "./hapSign/app-release1.pem"},
6154aa6d63Sopenharmony_ci                                                           {"signCode", "1"},
6254aa6d63Sopenharmony_ci                                                           {"compatibleVersion", "9"},
6354aa6d63Sopenharmony_ci                                                           {"keystorePwd", "123456"},
6454aa6d63Sopenharmony_ci                                                           {"outFile", "./elfVerify/bin_signed_package.bin"},
6554aa6d63Sopenharmony_ci                                                           {"profileSigned", "1"},
6654aa6d63Sopenharmony_ci                                                           {"profileFile", "./hapSign/signed-profile.p7b"},
6754aa6d63Sopenharmony_ci                                                           {"keystoreFile", "./hapSign/ohtest.jks"},
6854aa6d63Sopenharmony_ci                                                           {"inFile", "./elfVerify/bin_unsigned_package.bin"} };
6954aa6d63Sopenharmony_ci
7054aa6d63Sopenharmony_ci/**
7154aa6d63Sopenharmony_ci * @tc.name: Verify001
7254aa6d63Sopenharmony_ci * @tc.desc: Test function of VerifyBinTest::Verify() interface for SUCCESS.
7354aa6d63Sopenharmony_ci * @tc.size: MEDIUM
7454aa6d63Sopenharmony_ci * @tc.type: FUNC
7554aa6d63Sopenharmony_ci * @tc.level Level 1
7654aa6d63Sopenharmony_ci * @tc.require: SR000H63TL
7754aa6d63Sopenharmony_ci */
7854aa6d63Sopenharmony_ciHWTEST_F(VerifyBinTest, Verify001, testing::ext::TestSize.Level1)
7954aa6d63Sopenharmony_ci{
8054aa6d63Sopenharmony_ci    Options options;
8154aa6d63Sopenharmony_ci    options.emplace(Options::IN_FILE, std::string("./elfVerify/bin_signed_package.bin"));
8254aa6d63Sopenharmony_ci    options.emplace(Options::OUT_CERT_CHAIN, std::string("./elfVerify/xx.cer"));
8354aa6d63Sopenharmony_ci    options.emplace(Options::OUT_PROFILE, std::string("./elfVerify/xx.p7b"));
8454aa6d63Sopenharmony_ci
8554aa6d63Sopenharmony_ci    VerifyBin verifyBin;
8654aa6d63Sopenharmony_ci    bool flag = verifyBin.Verify(&options);
8754aa6d63Sopenharmony_ci
8854aa6d63Sopenharmony_ci    EXPECT_EQ(flag, true);
8954aa6d63Sopenharmony_ci}
9054aa6d63Sopenharmony_ci
9154aa6d63Sopenharmony_ci/**
9254aa6d63Sopenharmony_ci * @tc.name: Verify002
9354aa6d63Sopenharmony_ci * @tc.desc: param not exist
9454aa6d63Sopenharmony_ci * @tc.size: MEDIUM
9554aa6d63Sopenharmony_ci * @tc.type: FUNC
9654aa6d63Sopenharmony_ci * @tc.level Level 1
9754aa6d63Sopenharmony_ci * @tc.require: SR000H63TL
9854aa6d63Sopenharmony_ci */
9954aa6d63Sopenharmony_ciHWTEST_F(VerifyBinTest, Verify002, testing::ext::TestSize.Level1)
10054aa6d63Sopenharmony_ci{
10154aa6d63Sopenharmony_ci    VerifyBin verifyBin;
10254aa6d63Sopenharmony_ci    bool flag = verifyBin.Verify(nullptr);
10354aa6d63Sopenharmony_ci
10454aa6d63Sopenharmony_ci    EXPECT_EQ(flag, false);
10554aa6d63Sopenharmony_ci}
10654aa6d63Sopenharmony_ci
10754aa6d63Sopenharmony_ci/**
10854aa6d63Sopenharmony_ci * @tc.name: Verify003
10954aa6d63Sopenharmony_ci * @tc.desc: cer file not exist
11054aa6d63Sopenharmony_ci * @tc.size: MEDIUM
11154aa6d63Sopenharmony_ci * @tc.type: FUNC
11254aa6d63Sopenharmony_ci * @tc.level Level 1
11354aa6d63Sopenharmony_ci * @tc.require: SR000H63TL
11454aa6d63Sopenharmony_ci */
11554aa6d63Sopenharmony_ciHWTEST_F(VerifyBinTest, Verify003, testing::ext::TestSize.Level1)
11654aa6d63Sopenharmony_ci{
11754aa6d63Sopenharmony_ci    Options options;
11854aa6d63Sopenharmony_ci    options.emplace(Options::IN_FILE, std::string("./elfVerify/bin_signed_package.bin"));
11954aa6d63Sopenharmony_ci    options.emplace(Options::OUT_PROFILE, std::string("./elfVerify/xx.p7b"));
12054aa6d63Sopenharmony_ci
12154aa6d63Sopenharmony_ci    VerifyBin verifyBin;
12254aa6d63Sopenharmony_ci    bool flag = verifyBin.Verify(&options);
12354aa6d63Sopenharmony_ci
12454aa6d63Sopenharmony_ci    EXPECT_EQ(flag, false);
12554aa6d63Sopenharmony_ci}
12654aa6d63Sopenharmony_ci
12754aa6d63Sopenharmony_ci/**
12854aa6d63Sopenharmony_ci * @tc.name: Verify004
12954aa6d63Sopenharmony_ci * @tc.desc: p7b file not exist
13054aa6d63Sopenharmony_ci * @tc.size: MEDIUM
13154aa6d63Sopenharmony_ci * @tc.type: FUNC
13254aa6d63Sopenharmony_ci * @tc.level Level 1
13354aa6d63Sopenharmony_ci * @tc.require: SR000H63TL
13454aa6d63Sopenharmony_ci */
13554aa6d63Sopenharmony_ciHWTEST_F(VerifyBinTest, Verify004, testing::ext::TestSize.Level1)
13654aa6d63Sopenharmony_ci{
13754aa6d63Sopenharmony_ci    Options options;
13854aa6d63Sopenharmony_ci    options.emplace(Options::IN_FILE, std::string("./elfVerify/bin_signed_package.bin"));
13954aa6d63Sopenharmony_ci    options.emplace(Options::OUT_CERT_CHAIN, std::string("./elfVerify/xx.cer"));
14054aa6d63Sopenharmony_ci
14154aa6d63Sopenharmony_ci    VerifyBin verifyBin;
14254aa6d63Sopenharmony_ci    bool flag = verifyBin.Verify(&options);
14354aa6d63Sopenharmony_ci
14454aa6d63Sopenharmony_ci    EXPECT_EQ(flag, false);
14554aa6d63Sopenharmony_ci}
14654aa6d63Sopenharmony_ci
14754aa6d63Sopenharmony_ci/**
14854aa6d63Sopenharmony_ci * @tc.name: Verify005
14954aa6d63Sopenharmony_ci * @tc.desc: input file not exist
15054aa6d63Sopenharmony_ci * @tc.size: MEDIUM
15154aa6d63Sopenharmony_ci * @tc.type: FUNC
15254aa6d63Sopenharmony_ci * @tc.level Level 1
15354aa6d63Sopenharmony_ci * @tc.require: SR000H63TL
15454aa6d63Sopenharmony_ci */
15554aa6d63Sopenharmony_ciHWTEST_F(VerifyBinTest, Verify005, testing::ext::TestSize.Level1)
15654aa6d63Sopenharmony_ci{
15754aa6d63Sopenharmony_ci    Options options;
15854aa6d63Sopenharmony_ci    options.emplace(Options::OUT_CERT_CHAIN, std::string("./elfVerify/xx.cer"));
15954aa6d63Sopenharmony_ci    options.emplace(Options::OUT_PROFILE, std::string("./elfVerify/xx.p7b"));
16054aa6d63Sopenharmony_ci
16154aa6d63Sopenharmony_ci    VerifyBin verifyBin;
16254aa6d63Sopenharmony_ci    bool flag = verifyBin.Verify(&options);
16354aa6d63Sopenharmony_ci
16454aa6d63Sopenharmony_ci    EXPECT_EQ(flag, false);
16554aa6d63Sopenharmony_ci}
16654aa6d63Sopenharmony_ci
16754aa6d63Sopenharmony_ci/**
16854aa6d63Sopenharmony_ci * @tc.name: Verify006
16954aa6d63Sopenharmony_ci * @tc.desc: invalid input file
17054aa6d63Sopenharmony_ci * @tc.size: MEDIUM
17154aa6d63Sopenharmony_ci * @tc.type: FUNC
17254aa6d63Sopenharmony_ci * @tc.level Level 1
17354aa6d63Sopenharmony_ci * @tc.require: SR000H63TL
17454aa6d63Sopenharmony_ci */
17554aa6d63Sopenharmony_ciHWTEST_F(VerifyBinTest, Verify006, testing::ext::TestSize.Level1)
17654aa6d63Sopenharmony_ci{
17754aa6d63Sopenharmony_ci    Options options;
17854aa6d63Sopenharmony_ci    options.emplace(Options::IN_FILE, std::string("./elfVerify/bin_signed_package111.bin"));
17954aa6d63Sopenharmony_ci    options.emplace(Options::OUT_CERT_CHAIN, std::string("./elfVerify/xx.cer"));
18054aa6d63Sopenharmony_ci    options.emplace(Options::OUT_PROFILE, std::string("./elfVerify/xx.p7b"));
18154aa6d63Sopenharmony_ci
18254aa6d63Sopenharmony_ci    VerifyBin verifyBin;
18354aa6d63Sopenharmony_ci    bool flag = verifyBin.Verify(&options);
18454aa6d63Sopenharmony_ci
18554aa6d63Sopenharmony_ci    EXPECT_EQ(flag, false);
18654aa6d63Sopenharmony_ci}
18754aa6d63Sopenharmony_ci
18854aa6d63Sopenharmony_ci/**
18954aa6d63Sopenharmony_ci * @tc.name: Verify007
19054aa6d63Sopenharmony_ci * @tc.desc: unsigned wrong input file
19154aa6d63Sopenharmony_ci * @tc.size: MEDIUM
19254aa6d63Sopenharmony_ci * @tc.type: FUNC
19354aa6d63Sopenharmony_ci * @tc.level Level 1
19454aa6d63Sopenharmony_ci * @tc.require: SR000H63TL
19554aa6d63Sopenharmony_ci */
19654aa6d63Sopenharmony_ciHWTEST_F(VerifyBinTest, Verify007, testing::ext::TestSize.Level1)
19754aa6d63Sopenharmony_ci{
19854aa6d63Sopenharmony_ci    Options options;
19954aa6d63Sopenharmony_ci    options.emplace(Options::IN_FILE, std::string("./elfVerify/bin_unsigned_package.bin"));
20054aa6d63Sopenharmony_ci    options.emplace(Options::OUT_CERT_CHAIN, std::string("./elfVerify/xx.cer"));
20154aa6d63Sopenharmony_ci    options.emplace(Options::OUT_PROFILE, std::string("./elfVerify/xx.p7b"));
20254aa6d63Sopenharmony_ci
20354aa6d63Sopenharmony_ci    VerifyBin verifyBin;
20454aa6d63Sopenharmony_ci    bool flag = verifyBin.Verify(&options);
20554aa6d63Sopenharmony_ci
20654aa6d63Sopenharmony_ci    EXPECT_EQ(flag, false);
20754aa6d63Sopenharmony_ci}
20854aa6d63Sopenharmony_ci
20954aa6d63Sopenharmony_ci/**
21054aa6d63Sopenharmony_ci * @tc.name: Verify008
21154aa6d63Sopenharmony_ci * @tc.desc: Test function of VerifyBinTest::Verify() interface for SUCCESS.
21254aa6d63Sopenharmony_ci * @tc.size: MEDIUM
21354aa6d63Sopenharmony_ci * @tc.type: FUNC
21454aa6d63Sopenharmony_ci * @tc.level Level 1
21554aa6d63Sopenharmony_ci * @tc.require: SR000H63TL
21654aa6d63Sopenharmony_ci */
21754aa6d63Sopenharmony_ciHWTEST_F(VerifyBinTest, Verify008, testing::ext::TestSize.Level1)
21854aa6d63Sopenharmony_ci{
21954aa6d63Sopenharmony_ci    Options options;
22054aa6d63Sopenharmony_ci    options.emplace(Options::IN_FILE, std::string("./elfVerify/bin_signed_package.bin"));
22154aa6d63Sopenharmony_ci    options.emplace(Options::OUT_CERT_CHAIN, std::string("./elfVerify/readonly.cer"));
22254aa6d63Sopenharmony_ci    options.emplace(Options::OUT_PROFILE, std::string("./elfVerify/xx.p7b"));
22354aa6d63Sopenharmony_ci
22454aa6d63Sopenharmony_ci    VerifyBin verifyBin;
22554aa6d63Sopenharmony_ci    bool flag = verifyBin.Verify(&options);
22654aa6d63Sopenharmony_ci
22754aa6d63Sopenharmony_ci    EXPECT_EQ(flag, true);
22854aa6d63Sopenharmony_ci}
22954aa6d63Sopenharmony_ci
23054aa6d63Sopenharmony_ci/**
23154aa6d63Sopenharmony_ci * @tc.name: Verify009
23254aa6d63Sopenharmony_ci * @tc.desc: verify bin digest error
23354aa6d63Sopenharmony_ci * @tc.size: MEDIUM
23454aa6d63Sopenharmony_ci * @tc.type: FUNC
23554aa6d63Sopenharmony_ci * @tc.level Level 1
23654aa6d63Sopenharmony_ci * @tc.require: SR000H63TL
23754aa6d63Sopenharmony_ci */
23854aa6d63Sopenharmony_ciHWTEST_F(VerifyBinTest, Verify009, testing::ext::TestSize.Level1)
23954aa6d63Sopenharmony_ci{
24054aa6d63Sopenharmony_ci    Options options;
24154aa6d63Sopenharmony_ci    options.emplace(Options::IN_FILE, std::string("./elfVerify/bin_verify_digest_err_package.bin"));
24254aa6d63Sopenharmony_ci    options.emplace(Options::OUT_CERT_CHAIN, std::string("./elfVerify/xx.cer"));
24354aa6d63Sopenharmony_ci    options.emplace(Options::OUT_PROFILE, std::string("./elfVerify/xx.p7b"));
24454aa6d63Sopenharmony_ci
24554aa6d63Sopenharmony_ci    VerifyBin verifyBin;
24654aa6d63Sopenharmony_ci    bool flag = verifyBin.Verify(&options);
24754aa6d63Sopenharmony_ci
24854aa6d63Sopenharmony_ci    EXPECT_EQ(flag, false);
24954aa6d63Sopenharmony_ci}
25054aa6d63Sopenharmony_ci
25154aa6d63Sopenharmony_ci/**
25254aa6d63Sopenharmony_ci * @tc.name: Verify010
25354aa6d63Sopenharmony_ci * @tc.desc: get profile error
25454aa6d63Sopenharmony_ci * @tc.size: MEDIUM
25554aa6d63Sopenharmony_ci * @tc.type: FUNC
25654aa6d63Sopenharmony_ci * @tc.level Level 1
25754aa6d63Sopenharmony_ci * @tc.require: SR000H63TL
25854aa6d63Sopenharmony_ci */
25954aa6d63Sopenharmony_ciHWTEST_F(VerifyBinTest, Verify010, testing::ext::TestSize.Level1)
26054aa6d63Sopenharmony_ci{
26154aa6d63Sopenharmony_ci    Options options;
26254aa6d63Sopenharmony_ci    options.emplace(Options::IN_FILE, std::string("./elfVerify/bin_get_profile_err_package.bin"));
26354aa6d63Sopenharmony_ci    options.emplace(Options::OUT_CERT_CHAIN, std::string("./elfVerify/xx.cer"));
26454aa6d63Sopenharmony_ci    options.emplace(Options::OUT_PROFILE, std::string("./elfVerify/xx.p7b"));
26554aa6d63Sopenharmony_ci
26654aa6d63Sopenharmony_ci    VerifyBin verifyBin;
26754aa6d63Sopenharmony_ci    bool flag = verifyBin.Verify(&options);
26854aa6d63Sopenharmony_ci
26954aa6d63Sopenharmony_ci    EXPECT_EQ(flag, false);
27054aa6d63Sopenharmony_ci}
27154aa6d63Sopenharmony_ci
27254aa6d63Sopenharmony_ci/**
27354aa6d63Sopenharmony_ci * @tc.name: Verify011
27454aa6d63Sopenharmony_ci * @tc.desc: get bin digest error
27554aa6d63Sopenharmony_ci * @tc.size: MEDIUM
27654aa6d63Sopenharmony_ci * @tc.type: FUNC
27754aa6d63Sopenharmony_ci * @tc.level Level 1
27854aa6d63Sopenharmony_ci * @tc.require: SR000H63TL
27954aa6d63Sopenharmony_ci */
28054aa6d63Sopenharmony_ciHWTEST_F(VerifyBinTest, Verify011, testing::ext::TestSize.Level1)
28154aa6d63Sopenharmony_ci{
28254aa6d63Sopenharmony_ci    Options options;
28354aa6d63Sopenharmony_ci    options.emplace(Options::IN_FILE, std::string("./elfVerify/bin_get_digest_err_package.bin"));
28454aa6d63Sopenharmony_ci    options.emplace(Options::OUT_CERT_CHAIN, std::string("./elfVerify/xx.cer"));
28554aa6d63Sopenharmony_ci    options.emplace(Options::OUT_PROFILE, std::string("./elfVerify/xx.p7b"));
28654aa6d63Sopenharmony_ci
28754aa6d63Sopenharmony_ci    VerifyBin verifyBin;
28854aa6d63Sopenharmony_ci    bool flag = verifyBin.Verify(&options);
28954aa6d63Sopenharmony_ci
29054aa6d63Sopenharmony_ci    EXPECT_EQ(flag, false);
29154aa6d63Sopenharmony_ci}
29254aa6d63Sopenharmony_ci
29354aa6d63Sopenharmony_ci/**
29454aa6d63Sopenharmony_ci * @tc.name: SignBin001
29554aa6d63Sopenharmony_ci * @tc.desc: sign bin with wrong compatible version
29654aa6d63Sopenharmony_ci * @tc.size: MEDIUM
29754aa6d63Sopenharmony_ci * @tc.type: FUNC
29854aa6d63Sopenharmony_ci * @tc.level Level 1
29954aa6d63Sopenharmony_ci * @tc.require: SR000H63TL
30054aa6d63Sopenharmony_ci */
30154aa6d63Sopenharmony_ciHWTEST_F(VerifyBinTest, SignBin001, testing::ext::TestSize.Level1)
30254aa6d63Sopenharmony_ci{
30354aa6d63Sopenharmony_ci    std::shared_ptr<SignBin> api = std::make_shared<SignBin>();
30454aa6d63Sopenharmony_ci    std::map<std::string, std::string> signParams;
30554aa6d63Sopenharmony_ci    signParams["a"] = "4";
30654aa6d63Sopenharmony_ci    signParams["appCertFile"] = "./hapSign/app-release1.pem";
30754aa6d63Sopenharmony_ci    signParams["compatibleVersion"] = "9";
30854aa6d63Sopenharmony_ci    signParams["inFile"] = "./elfVerify/bin_unsigned_package.bin";
30954aa6d63Sopenharmony_ci    signParams["inForm"] = "bin";
31054aa6d63Sopenharmony_ci    signParams["keyAlias"] = "oh-app1-key-v1";
31154aa6d63Sopenharmony_ci    signParams["keyPwd"] = "123456";
31254aa6d63Sopenharmony_ci    signParams["keystoreFile"] = "./hapSign/ohtest.p12";
31354aa6d63Sopenharmony_ci    signParams["keystorePwd"] = "123456";
31454aa6d63Sopenharmony_ci    signParams["outFile"] = "./elfVerify/bin_signed_package.bin";
31554aa6d63Sopenharmony_ci    signParams["profileFile"] = "./hapSign/signed-profile.p7b";
31654aa6d63Sopenharmony_ci    signParams["profileSigned"] = "1";
31754aa6d63Sopenharmony_ci    signParams["signAlg"] = "SHA256withECDSA";
31854aa6d63Sopenharmony_ci    signParams["signCode"] = "1";
31954aa6d63Sopenharmony_ci
32054aa6d63Sopenharmony_ci    SignerConfig signerConfig;
32154aa6d63Sopenharmony_ci    signerConfig.SetCompatibleVersion(9);
32254aa6d63Sopenharmony_ci    signerConfig.FillParameters(PARAMS);
32354aa6d63Sopenharmony_ci
32454aa6d63Sopenharmony_ci    ContentDigestAlgorithm contentDigestAlgorithm("SHA-256", 32);
32554aa6d63Sopenharmony_ci    std::pair<std::string, void*> signatureAlgAndParams("SHA256withECDSA", nullptr);
32654aa6d63Sopenharmony_ci    SignatureAlgorithmHelper signatureAlgorithm(SignatureAlgorithmId::ECDSA_WITH_SHA256, "ECDSA_WITH_SHA256",
32754aa6d63Sopenharmony_ci                                                contentDigestAlgorithm, signatureAlgAndParams);
32854aa6d63Sopenharmony_ci    std::vector<SignatureAlgorithmHelper> signatureAlgorithms;
32954aa6d63Sopenharmony_ci    signatureAlgorithms.push_back(signatureAlgorithm);
33054aa6d63Sopenharmony_ci    signerConfig.SetSignatureAlgorithms(signatureAlgorithms);
33154aa6d63Sopenharmony_ci
33254aa6d63Sopenharmony_ci    Options options;
33354aa6d63Sopenharmony_ci    options.emplace("mode", std::string("localSign"));
33454aa6d63Sopenharmony_ci    options.emplace("keyPwd", std::string("123456"));
33554aa6d63Sopenharmony_ci    options.emplace("outFile", std::string("./elfVerify/bin_signed_package.bin"));
33654aa6d63Sopenharmony_ci    options.emplace("keyAlias", std::string("oh-app1-key-v1"));
33754aa6d63Sopenharmony_ci    options.emplace("profileFile", std::string("./hapSign/signed-profile.p7b"));
33854aa6d63Sopenharmony_ci    options.emplace("signAlg", std::string("SHA256withECDSA"));
33954aa6d63Sopenharmony_ci    options.emplace("keystorePwd", std::string("123456"));
34054aa6d63Sopenharmony_ci    options.emplace("keystoreFile", std::string("./hapSign/ohtest.p12"));
34154aa6d63Sopenharmony_ci    options.emplace("appCertFile", std::string("./hapSign/app-release1.pem"));
34254aa6d63Sopenharmony_ci    options.emplace("inFile", std::string("./elfVerify/bin_unsigned_package.bin"));
34354aa6d63Sopenharmony_ci    signerConfig.SetOptions(&options);
34454aa6d63Sopenharmony_ci    bool flag = api->Sign(signerConfig, signParams);
34554aa6d63Sopenharmony_ci
34654aa6d63Sopenharmony_ci    EXPECT_EQ(flag, false);
34754aa6d63Sopenharmony_ci}
34854aa6d63Sopenharmony_ci
34954aa6d63Sopenharmony_ci/**
35054aa6d63Sopenharmony_ci * @tc.name: GetHashAlgsId001
35154aa6d63Sopenharmony_ci * @tc.desc: get invalid alg id
35254aa6d63Sopenharmony_ci * @tc.size: MEDIUM
35354aa6d63Sopenharmony_ci * @tc.type: FUNC
35454aa6d63Sopenharmony_ci * @tc.level Level 1
35554aa6d63Sopenharmony_ci * @tc.require: SR000H63TL
35654aa6d63Sopenharmony_ci */
35754aa6d63Sopenharmony_ciHWTEST_F(VerifyBinTest, GetHashAlgsId001, testing::ext::TestSize.Level1)
35854aa6d63Sopenharmony_ci{
35954aa6d63Sopenharmony_ci    int algId = HashUtils::GetHashAlgsId("SHA-224");
36054aa6d63Sopenharmony_ci
36154aa6d63Sopenharmony_ci    EXPECT_EQ(algId, 0);
36254aa6d63Sopenharmony_ci}
36354aa6d63Sopenharmony_ci
36454aa6d63Sopenharmony_ci/**
36554aa6d63Sopenharmony_ci * @tc.name: GetHashAlgsId002
36654aa6d63Sopenharmony_ci * @tc.desc: get alg id of SHA-256
36754aa6d63Sopenharmony_ci * @tc.size: MEDIUM
36854aa6d63Sopenharmony_ci * @tc.type: FUNC
36954aa6d63Sopenharmony_ci * @tc.level Level 1
37054aa6d63Sopenharmony_ci * @tc.require: SR000H63TL
37154aa6d63Sopenharmony_ci */
37254aa6d63Sopenharmony_ciHWTEST_F(VerifyBinTest, GetHashAlgsId002, testing::ext::TestSize.Level1)
37354aa6d63Sopenharmony_ci{
37454aa6d63Sopenharmony_ci    int algId = HashUtils::GetHashAlgsId("SHA-256");
37554aa6d63Sopenharmony_ci
37654aa6d63Sopenharmony_ci    EXPECT_EQ(algId, 6);
37754aa6d63Sopenharmony_ci}
37854aa6d63Sopenharmony_ci
37954aa6d63Sopenharmony_ci/**
38054aa6d63Sopenharmony_ci * @tc.name: GetHashAlgsId003
38154aa6d63Sopenharmony_ci * @tc.desc: get alg id of SHA-384
38254aa6d63Sopenharmony_ci * @tc.size: MEDIUM
38354aa6d63Sopenharmony_ci * @tc.type: FUNC
38454aa6d63Sopenharmony_ci * @tc.level Level 1
38554aa6d63Sopenharmony_ci * @tc.require: SR000H63TL
38654aa6d63Sopenharmony_ci */
38754aa6d63Sopenharmony_ciHWTEST_F(VerifyBinTest, GetHashAlgsId003, testing::ext::TestSize.Level1)
38854aa6d63Sopenharmony_ci{
38954aa6d63Sopenharmony_ci    int algId = HashUtils::GetHashAlgsId("SHA-384");
39054aa6d63Sopenharmony_ci
39154aa6d63Sopenharmony_ci    EXPECT_EQ(algId, 7);
39254aa6d63Sopenharmony_ci}
39354aa6d63Sopenharmony_ci
39454aa6d63Sopenharmony_ci/**
39554aa6d63Sopenharmony_ci * @tc.name: GetHashAlgsId004
39654aa6d63Sopenharmony_ci * @tc.desc: get alg id of SHA-512
39754aa6d63Sopenharmony_ci * @tc.size: MEDIUM
39854aa6d63Sopenharmony_ci * @tc.type: FUNC
39954aa6d63Sopenharmony_ci * @tc.level Level 1
40054aa6d63Sopenharmony_ci * @tc.require: SR000H63TL
40154aa6d63Sopenharmony_ci */
40254aa6d63Sopenharmony_ciHWTEST_F(VerifyBinTest, GetHashAlgsId004, testing::ext::TestSize.Level1)
40354aa6d63Sopenharmony_ci{
40454aa6d63Sopenharmony_ci    int algId = HashUtils::GetHashAlgsId("SHA-512");
40554aa6d63Sopenharmony_ci
40654aa6d63Sopenharmony_ci    EXPECT_EQ(algId, 8);
40754aa6d63Sopenharmony_ci}
40854aa6d63Sopenharmony_ci
40954aa6d63Sopenharmony_ci/**
41054aa6d63Sopenharmony_ci * @tc.name: GetHashAlgName001
41154aa6d63Sopenharmony_ci * @tc.desc: get alg name of id 5
41254aa6d63Sopenharmony_ci * @tc.size: MEDIUM
41354aa6d63Sopenharmony_ci * @tc.type: FUNC
41454aa6d63Sopenharmony_ci * @tc.level Level 1
41554aa6d63Sopenharmony_ci * @tc.require: SR000H63TL
41654aa6d63Sopenharmony_ci */
41754aa6d63Sopenharmony_ciHWTEST_F(VerifyBinTest, GetHashAlgName001, testing::ext::TestSize.Level1)
41854aa6d63Sopenharmony_ci{
41954aa6d63Sopenharmony_ci    std::string alg = HashUtils::GetHashAlgName(5);
42054aa6d63Sopenharmony_ci    int size = alg.size();
42154aa6d63Sopenharmony_ci    EXPECT_EQ(size, 0);
42254aa6d63Sopenharmony_ci}
42354aa6d63Sopenharmony_ci
42454aa6d63Sopenharmony_ci/**
42554aa6d63Sopenharmony_ci * @tc.name: GetHashAlgName002
42654aa6d63Sopenharmony_ci * @tc.desc: get alg name of id 6
42754aa6d63Sopenharmony_ci * @tc.size: MEDIUM
42854aa6d63Sopenharmony_ci * @tc.type: FUNC
42954aa6d63Sopenharmony_ci * @tc.level Level 1
43054aa6d63Sopenharmony_ci * @tc.require: SR000H63TL
43154aa6d63Sopenharmony_ci */
43254aa6d63Sopenharmony_ciHWTEST_F(VerifyBinTest, GetHashAlgName002, testing::ext::TestSize.Level1)
43354aa6d63Sopenharmony_ci{
43454aa6d63Sopenharmony_ci    std::string alg = HashUtils::GetHashAlgName(6);
43554aa6d63Sopenharmony_ci    int size = alg.size();
43654aa6d63Sopenharmony_ci    EXPECT_NE(size, 0);
43754aa6d63Sopenharmony_ci}
43854aa6d63Sopenharmony_ci
43954aa6d63Sopenharmony_ci/**
44054aa6d63Sopenharmony_ci * @tc.name: GetHashAlgName003
44154aa6d63Sopenharmony_ci * @tc.desc: get alg name of id 7
44254aa6d63Sopenharmony_ci * @tc.size: MEDIUM
44354aa6d63Sopenharmony_ci * @tc.type: FUNC
44454aa6d63Sopenharmony_ci * @tc.level Level 1
44554aa6d63Sopenharmony_ci * @tc.require: SR000H63TL
44654aa6d63Sopenharmony_ci */
44754aa6d63Sopenharmony_ciHWTEST_F(VerifyBinTest, GetHashAlgName003, testing::ext::TestSize.Level1)
44854aa6d63Sopenharmony_ci{
44954aa6d63Sopenharmony_ci    std::string alg = HashUtils::GetHashAlgName(7);
45054aa6d63Sopenharmony_ci    int size = alg.size();
45154aa6d63Sopenharmony_ci    EXPECT_NE(size, 0);
45254aa6d63Sopenharmony_ci}
45354aa6d63Sopenharmony_ci
45454aa6d63Sopenharmony_ci/**
45554aa6d63Sopenharmony_ci * @tc.name: GetHashAlgName004
45654aa6d63Sopenharmony_ci * @tc.desc: get alg name of id 8
45754aa6d63Sopenharmony_ci * @tc.size: MEDIUM
45854aa6d63Sopenharmony_ci * @tc.type: FUNC
45954aa6d63Sopenharmony_ci * @tc.level Level 1
46054aa6d63Sopenharmony_ci * @tc.require: SR000H63TL
46154aa6d63Sopenharmony_ci */
46254aa6d63Sopenharmony_ciHWTEST_F(VerifyBinTest, GetHashAlgName004, testing::ext::TestSize.Level1)
46354aa6d63Sopenharmony_ci{
46454aa6d63Sopenharmony_ci    std::string alg = HashUtils::GetHashAlgName(8);
46554aa6d63Sopenharmony_ci    int size = alg.size();
46654aa6d63Sopenharmony_ci    EXPECT_NE(size, 0);
46754aa6d63Sopenharmony_ci}
46854aa6d63Sopenharmony_ci
46954aa6d63Sopenharmony_ci/**
47054aa6d63Sopenharmony_ci * @tc.name: GetDigestFromBytes001
47154aa6d63Sopenharmony_ci * @tc.desc: get digest from bytes with 0 size file bytes
47254aa6d63Sopenharmony_ci * @tc.size: MEDIUM
47354aa6d63Sopenharmony_ci * @tc.type: FUNC
47454aa6d63Sopenharmony_ci * @tc.level Level 1
47554aa6d63Sopenharmony_ci * @tc.require: SR000H63TL
47654aa6d63Sopenharmony_ci */
47754aa6d63Sopenharmony_ciHWTEST_F(VerifyBinTest, GetDigestFromBytes001, testing::ext::TestSize.Level1)
47854aa6d63Sopenharmony_ci{
47954aa6d63Sopenharmony_ci    std::vector<int8_t> fileBytes;
48054aa6d63Sopenharmony_ci    int64_t length = 0;
48154aa6d63Sopenharmony_ci    std::string algName = "SHA-256";
48254aa6d63Sopenharmony_ci    std::vector<int8_t> dig = HashUtils::GetDigestFromBytes(fileBytes, length, algName);
48354aa6d63Sopenharmony_ci    int size = dig.size();
48454aa6d63Sopenharmony_ci
48554aa6d63Sopenharmony_ci    EXPECT_EQ(size, 0);
48654aa6d63Sopenharmony_ci}
48754aa6d63Sopenharmony_ci
48854aa6d63Sopenharmony_ci/**
48954aa6d63Sopenharmony_ci * @tc.name: GetDigestFromBytes002
49054aa6d63Sopenharmony_ci * @tc.desc: get digest from bytes with some size file bytes
49154aa6d63Sopenharmony_ci * @tc.size: MEDIUM
49254aa6d63Sopenharmony_ci * @tc.type: FUNC
49354aa6d63Sopenharmony_ci * @tc.level Level 1
49454aa6d63Sopenharmony_ci * @tc.require: SR000H63TL
49554aa6d63Sopenharmony_ci */
49654aa6d63Sopenharmony_ciHWTEST_F(VerifyBinTest, GetDigestFromBytes002, testing::ext::TestSize.Level1)
49754aa6d63Sopenharmony_ci{
49854aa6d63Sopenharmony_ci    std::vector<int8_t> fileBytes = { 1, 1 };
49954aa6d63Sopenharmony_ci    int64_t length = 0;
50054aa6d63Sopenharmony_ci    std::string algName = "SHA-256";
50154aa6d63Sopenharmony_ci    std::vector<int8_t> dig = HashUtils::GetDigestFromBytes(fileBytes, length, algName);
50254aa6d63Sopenharmony_ci    int size = dig.size();
50354aa6d63Sopenharmony_ci
50454aa6d63Sopenharmony_ci    EXPECT_EQ(size, 0);
50554aa6d63Sopenharmony_ci}
50654aa6d63Sopenharmony_ci} // namespace SignatureTools
50754aa6d63Sopenharmony_ci} // namespace OHOS