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 <gtest/gtest.h>
1854aa6d63Sopenharmony_ci
1954aa6d63Sopenharmony_ci#include "sign_elf.h"
2054aa6d63Sopenharmony_ci#include "code_signing.h"
2154aa6d63Sopenharmony_ci
2254aa6d63Sopenharmony_cinamespace OHOS {
2354aa6d63Sopenharmony_cinamespace SignatureTools {
2454aa6d63Sopenharmony_ciclass SignElfTest : public testing::Test {
2554aa6d63Sopenharmony_cipublic:
2654aa6d63Sopenharmony_ci    static void SetUpTestCase(void)
2754aa6d63Sopenharmony_ci    {
2854aa6d63Sopenharmony_ci        (void)rename("./codeSigning/unsigned-file.txt", "./codeSigning/unsigned-file.hap");
2954aa6d63Sopenharmony_ci    };
3054aa6d63Sopenharmony_ci    static void TearDownTestCase()
3154aa6d63Sopenharmony_ci    {
3254aa6d63Sopenharmony_ci    };
3354aa6d63Sopenharmony_ci    void SetUp()
3454aa6d63Sopenharmony_ci    {
3554aa6d63Sopenharmony_ci    };
3654aa6d63Sopenharmony_ci    void TearDown()
3754aa6d63Sopenharmony_ci    {
3854aa6d63Sopenharmony_ci    };
3954aa6d63Sopenharmony_ci};
4054aa6d63Sopenharmony_ci
4154aa6d63Sopenharmony_civoid SetElfParamsMap(std::map<std::string, std::string>& params)
4254aa6d63Sopenharmony_ci{
4354aa6d63Sopenharmony_ci    params["keyPwd"] = "123456";
4454aa6d63Sopenharmony_ci    params["mode"] = "localSign";
4554aa6d63Sopenharmony_ci    params["keyAlias"] = "oh-app1-key-v1";
4654aa6d63Sopenharmony_ci    params["signAlg"] = "SHA256withECDSA";
4754aa6d63Sopenharmony_ci    params["appCertFile"] = "./hapSign/app-release1.pem";
4854aa6d63Sopenharmony_ci    params["signCode"] = "1";
4954aa6d63Sopenharmony_ci    params["compatibleVersion"] = "9";
5054aa6d63Sopenharmony_ci    params["outFile"] = "./hapSign/entry-default-signed.elf";
5154aa6d63Sopenharmony_ci    params["profileFile"] = "./hapSign/signed-profile.p7b";
5254aa6d63Sopenharmony_ci    params["keystorePwd"] = "123456";
5354aa6d63Sopenharmony_ci    params["keystoreFile"] = "./hapSign/ohtest.jks";
5454aa6d63Sopenharmony_ci    params["inFile"] = "./codeSigning/unsigned-file.hap";
5554aa6d63Sopenharmony_ci    params["profileSigned"] = "1";
5654aa6d63Sopenharmony_ci    params["inForm"] = "elf";
5754aa6d63Sopenharmony_ci    std::string  provision = "{\"app-distribution-type\": \"app_gallery\",\"bundle-info\":{\"app-"
5854aa6d63Sopenharmony_ci        "feature\":\"hos_system_app\",\"bundle-name\":\"com.OpenHarmony.app.test\",\"developer-id\":\"O"
5954aa6d63Sopenharmony_ci        "penHarmony\",\"distribution-certificate\":\"-----BEGIN CERTIFICATE-----\\n"
6054aa6d63Sopenharmony_ci        "MIICMzCCAbegAwIBAgIEaOC/zDAMBggqhkjOPQQDAwUAMGMxCzAJBgNVBAYTAkNO\\n"
6154aa6d63Sopenharmony_ci        "MRQwEgYDVQQKEwtPcGVuSGFybW9ueTEZMBcGA1UECxMQT3Blbkhhcm1vbnkgVGVh\\n"
6254aa6d63Sopenharmony_ci        "bTEjMCEGA1UEAxMaT3Blbkhhcm1vbnkgQXBwbGljYXRpb24gQ0EwHhcNMjEwMjAy\\n"
6354aa6d63Sopenharmony_ci        "MTIxOTMxWhcNNDkxMjMxMTIxOTMxWjBoMQswCQYDVQQGEwJDTjEUMBIGA1UEChML\\n"
6454aa6d63Sopenharmony_ci        "T3Blbkhhcm1vbnkxGTAXBgNVBAsTEE9wZW5IYXJtb255IFRlYW0xKDAmBgNVBAMT\\n"
6554aa6d63Sopenharmony_ci        "H09wZW5IYXJtb255IEFwcGxpY2F0aW9uIFJlbGVhc2UwWTATBgcqhkjOPQIBBggq\\n"
6654aa6d63Sopenharmony_ci        "hkjOPQMBBwNCAATbYOCQQpW5fdkYHN45v0X3AHax12jPBdEDosFRIZ1eXmxOYzSG\\n"
6754aa6d63Sopenharmony_ci        "JwMfsHhUU90E8lI0TXYZnNmgM1sovubeQqATo1IwUDAfBgNVHSMEGDAWgBTbhrci\\n"
6854aa6d63Sopenharmony_ci        "FtULoUu33SV7ufEFfaItRzAOBgNVHQ8BAf8EBAMCB4AwHQYDVR0OBBYEFPtxruhl\\n"
6954aa6d63Sopenharmony_ci        "cRBQsJdwcZqLu9oNUVgaMAwGCCqGSM49BAMDBQADaAAwZQIxAJta0PQ2p4DIu/ps\\n"
7054aa6d63Sopenharmony_ci        "LMdLCDgQ5UH1l0B4PGhBlMgdi2zf8nk9spazEQI/0XNwpft8QAIwHSuA2WelVi/o\\n"
7154aa6d63Sopenharmony_ci        "zAlF08DnbJrOOtOnQq5wHOPlDYB4OtUzOYJk9scotrEnJxJzGsh/\\n"
7254aa6d63Sopenharmony_ci        "-----END CERTIFICATE-----\\n"
7354aa6d63Sopenharmony_ci        "\"},\"debug-info\":{\"device-id-type\":\"udid\",\"device-ids\":[\"69C7505BE341BDA5948C3C0CB"
7454aa6d63Sopenharmony_ci        "44ABCD530296054159EFE0BD16A16CD0129CC42\",\"7EED06506FCE6325EB2E2FAA019458B856AB10493A6718C76"
7554aa6d63Sopenharmony_ci        "79A73F958732865\"]},\"issuer\":\"pki_internal\",\"permissions\":{\"restricted-permissions\":"
7654aa6d63Sopenharmony_ci        "[\"\"]},\"type\":\"release\",\"uuid\":\"fe686e1b-3770-4824-a938-961b140a7c98\",\"validity\":"
7754aa6d63Sopenharmony_ci        "{\"not-after\":1705127532,\"not-before\":1610519532},\"version-code\":1,\"version-name\":\"1.0.0\"}";
7854aa6d63Sopenharmony_ci    params["profileContent"] = provision;
7954aa6d63Sopenharmony_ci}
8054aa6d63Sopenharmony_ci
8154aa6d63Sopenharmony_civoid SetElfOptions(Options* options)
8254aa6d63Sopenharmony_ci{
8354aa6d63Sopenharmony_ci    std::string mode = "localSign";
8454aa6d63Sopenharmony_ci    std::string keyAlias = "oh-app1-key-v1";
8554aa6d63Sopenharmony_ci    std::string signAlg = "SHA256withECDSA";
8654aa6d63Sopenharmony_ci    std::string signCode = "1";
8754aa6d63Sopenharmony_ci    std::string appCertFile = "./hapSign/app-release1.pem";
8854aa6d63Sopenharmony_ci    std::string profileFile = "./hapSign/signed-profile.p7b";
8954aa6d63Sopenharmony_ci    std::string inFile = "./codeSigning/unsigned-file.hap";
9054aa6d63Sopenharmony_ci    std::string keystoreFile = "./hapSign/ohtest.p12";
9154aa6d63Sopenharmony_ci    std::string outFile = "./hapSign/entry-default-signed.elf";
9254aa6d63Sopenharmony_ci    std::string inForm = "elf";
9354aa6d63Sopenharmony_ci    static char keyPwd[] = "123456";
9454aa6d63Sopenharmony_ci    static char keystorePwd[] = "123456";
9554aa6d63Sopenharmony_ci
9654aa6d63Sopenharmony_ci    (*options)["mode"] = "localSign";
9754aa6d63Sopenharmony_ci    (*options)["keyAlias"] = keyAlias;
9854aa6d63Sopenharmony_ci    (*options)["signAlg"] = signAlg;
9954aa6d63Sopenharmony_ci    (*options)["signCode"] = signCode;
10054aa6d63Sopenharmony_ci    (*options)["appCertFile"] = appCertFile;
10154aa6d63Sopenharmony_ci    (*options)["profileFile"] = profileFile;
10254aa6d63Sopenharmony_ci    (*options)["inFile"] = inFile;
10354aa6d63Sopenharmony_ci    (*options)["keystoreFile"] = keystoreFile;
10454aa6d63Sopenharmony_ci    (*options)["outFile"] = outFile;
10554aa6d63Sopenharmony_ci    (*options)["inForm"] = inForm;
10654aa6d63Sopenharmony_ci    (*options)["keyPwd"] = keyPwd;
10754aa6d63Sopenharmony_ci    (*options)["keystorePwd"] = keystorePwd;
10854aa6d63Sopenharmony_ci}
10954aa6d63Sopenharmony_ci
11054aa6d63Sopenharmony_ci/**
11154aa6d63Sopenharmony_ci * @tc.name: sign001
11254aa6d63Sopenharmony_ci * @tc.desc: Test function of SignElf::sign() interface for SUCCESS.
11354aa6d63Sopenharmony_ci * @tc.size: MEDIUM
11454aa6d63Sopenharmony_ci * @tc.type: FUNC
11554aa6d63Sopenharmony_ci * @tc.level Level 1
11654aa6d63Sopenharmony_ci * @tc.require: SR000H63TL
11754aa6d63Sopenharmony_ci */
11854aa6d63Sopenharmony_ciHWTEST_F(SignElfTest, Sign001, testing::ext::TestSize.Level1)
11954aa6d63Sopenharmony_ci{
12054aa6d63Sopenharmony_ci    // success
12154aa6d63Sopenharmony_ci    SignerConfig signerConfig;
12254aa6d63Sopenharmony_ci    signerConfig.SetCompatibleVersion(9);
12354aa6d63Sopenharmony_ci
12454aa6d63Sopenharmony_ci    std::map<std::string, std::string> params;
12554aa6d63Sopenharmony_ci    SetElfParamsMap(params);
12654aa6d63Sopenharmony_ci    signerConfig.FillParameters(params);
12754aa6d63Sopenharmony_ci
12854aa6d63Sopenharmony_ci    ContentDigestAlgorithm contentDigestAlgorithm("SHA-256", 32);
12954aa6d63Sopenharmony_ci    std::pair<std::string, void*> signatureAlgAndParams("SHA256withECDSA", nullptr);
13054aa6d63Sopenharmony_ci    SignatureAlgorithmHelper signatureAlgorithm(SignatureAlgorithmId::ECDSA_WITH_SHA256, "ECDSA_WITH_SHA256",
13154aa6d63Sopenharmony_ci                                                contentDigestAlgorithm, signatureAlgAndParams);
13254aa6d63Sopenharmony_ci    std::vector<SignatureAlgorithmHelper> signatureAlgorithms;
13354aa6d63Sopenharmony_ci    signatureAlgorithms.push_back(signatureAlgorithm);
13454aa6d63Sopenharmony_ci    signerConfig.SetSignatureAlgorithms(signatureAlgorithms);
13554aa6d63Sopenharmony_ci
13654aa6d63Sopenharmony_ci    std::shared_ptr<Options> options = std::make_shared<Options>();
13754aa6d63Sopenharmony_ci    SetElfOptions(options.get());
13854aa6d63Sopenharmony_ci    signerConfig.SetOptions(options.get());
13954aa6d63Sopenharmony_ci
14054aa6d63Sopenharmony_ci    signerConfig.GetSigner();
14154aa6d63Sopenharmony_ci    SignElf::Sign(signerConfig, params);
14254aa6d63Sopenharmony_ci    EXPECT_EQ(signerConfig.GetCompatibleVersion(), 9);
14354aa6d63Sopenharmony_ci}
14454aa6d63Sopenharmony_ci
14554aa6d63Sopenharmony_ci/**
14654aa6d63Sopenharmony_ci * @tc.name: sign002
14754aa6d63Sopenharmony_ci * @tc.desc: The return will be false, because the inFile is not exist.
14854aa6d63Sopenharmony_ci * @tc.size: MEDIUM
14954aa6d63Sopenharmony_ci * @tc.type: FUNC
15054aa6d63Sopenharmony_ci * @tc.level Level 1
15154aa6d63Sopenharmony_ci * @tc.require: SR000H63TL
15254aa6d63Sopenharmony_ci */
15354aa6d63Sopenharmony_ciHWTEST_F(SignElfTest, Sign002, testing::ext::TestSize.Level1)
15454aa6d63Sopenharmony_ci{
15554aa6d63Sopenharmony_ci    SignerConfig signerConfig;
15654aa6d63Sopenharmony_ci    signerConfig.SetCompatibleVersion(9);
15754aa6d63Sopenharmony_ci
15854aa6d63Sopenharmony_ci    std::map<std::string, std::string> params;
15954aa6d63Sopenharmony_ci    SetElfParamsMap(params);
16054aa6d63Sopenharmony_ci    params["inFile"] = "./hapSign/unsigned-file-no.out";
16154aa6d63Sopenharmony_ci    signerConfig.FillParameters(params);
16254aa6d63Sopenharmony_ci
16354aa6d63Sopenharmony_ci    ContentDigestAlgorithm contentDigestAlgorithm("SHA-256", 32);
16454aa6d63Sopenharmony_ci    std::pair<std::string, void*> signatureAlgAndParams("SHA256withECDSA", nullptr);
16554aa6d63Sopenharmony_ci    SignatureAlgorithmHelper signatureAlgorithm(SignatureAlgorithmId::ECDSA_WITH_SHA256, "ECDSA_WITH_SHA256",
16654aa6d63Sopenharmony_ci                                                contentDigestAlgorithm, signatureAlgAndParams);
16754aa6d63Sopenharmony_ci    std::vector<SignatureAlgorithmHelper> signatureAlgorithms;
16854aa6d63Sopenharmony_ci    signatureAlgorithms.push_back(signatureAlgorithm);
16954aa6d63Sopenharmony_ci    signerConfig.SetSignatureAlgorithms(signatureAlgorithms);
17054aa6d63Sopenharmony_ci
17154aa6d63Sopenharmony_ci    std::shared_ptr<Options> options = std::make_shared<Options>();
17254aa6d63Sopenharmony_ci    SetElfOptions(options.get());
17354aa6d63Sopenharmony_ci    (*options)["inFile"] = "./hapSign/unsigned-file-no.out";
17454aa6d63Sopenharmony_ci    signerConfig.SetOptions(options.get());
17554aa6d63Sopenharmony_ci
17654aa6d63Sopenharmony_ci    signerConfig.GetSigner();
17754aa6d63Sopenharmony_ci    bool ret = SignElf::Sign(signerConfig, params);
17854aa6d63Sopenharmony_ci
17954aa6d63Sopenharmony_ci    EXPECT_EQ(ret, false);
18054aa6d63Sopenharmony_ci}
18154aa6d63Sopenharmony_ci
18254aa6d63Sopenharmony_ci/**
18354aa6d63Sopenharmony_ci * @tc.name: sign003
18454aa6d63Sopenharmony_ci * @tc.desc: The return will be false, because the profileFile is not exist.
18554aa6d63Sopenharmony_ci * @tc.size: MEDIUM
18654aa6d63Sopenharmony_ci * @tc.type: FUNC
18754aa6d63Sopenharmony_ci * @tc.level Level 1
18854aa6d63Sopenharmony_ci * @tc.require: SR000H63TL
18954aa6d63Sopenharmony_ci */
19054aa6d63Sopenharmony_ciHWTEST_F(SignElfTest, Sign003, testing::ext::TestSize.Level1)
19154aa6d63Sopenharmony_ci{
19254aa6d63Sopenharmony_ci    // failed:profileFile is null
19354aa6d63Sopenharmony_ci    SignerConfig signerConfig;
19454aa6d63Sopenharmony_ci    signerConfig.SetCompatibleVersion(9);
19554aa6d63Sopenharmony_ci
19654aa6d63Sopenharmony_ci    std::map<std::string, std::string> params;
19754aa6d63Sopenharmony_ci    SetElfParamsMap(params);
19854aa6d63Sopenharmony_ci    params["profileFile"] = "./hapSign/signed-profile-no.p7b";
19954aa6d63Sopenharmony_ci    signerConfig.FillParameters(params);
20054aa6d63Sopenharmony_ci
20154aa6d63Sopenharmony_ci    ContentDigestAlgorithm contentDigestAlgorithm("SHA-256", 32);
20254aa6d63Sopenharmony_ci    std::pair<std::string, void*> signatureAlgAndParams("SHA256withECDSA", nullptr);
20354aa6d63Sopenharmony_ci    SignatureAlgorithmHelper signatureAlgorithm(SignatureAlgorithmId::ECDSA_WITH_SHA256, "ECDSA_WITH_SHA256",
20454aa6d63Sopenharmony_ci                                                contentDigestAlgorithm, signatureAlgAndParams);
20554aa6d63Sopenharmony_ci    std::vector<SignatureAlgorithmHelper> signatureAlgorithms;
20654aa6d63Sopenharmony_ci    signatureAlgorithms.push_back(signatureAlgorithm);
20754aa6d63Sopenharmony_ci    signerConfig.SetSignatureAlgorithms(signatureAlgorithms);
20854aa6d63Sopenharmony_ci
20954aa6d63Sopenharmony_ci    std::shared_ptr<Options> options = std::make_shared<Options>();
21054aa6d63Sopenharmony_ci    SetElfOptions(options.get());
21154aa6d63Sopenharmony_ci    (*options)["profileFile"] = "./hapSign/signed-profile-no.p7b";
21254aa6d63Sopenharmony_ci    signerConfig.SetOptions(options.get());
21354aa6d63Sopenharmony_ci
21454aa6d63Sopenharmony_ci    signerConfig.GetSigner();
21554aa6d63Sopenharmony_ci    bool ret = SignElf::Sign(signerConfig, params);
21654aa6d63Sopenharmony_ci    EXPECT_EQ(ret, false);
21754aa6d63Sopenharmony_ci}
21854aa6d63Sopenharmony_ci
21954aa6d63Sopenharmony_ci/**
22054aa6d63Sopenharmony_ci * @tc.name: sign004
22154aa6d63Sopenharmony_ci * @tc.desc: The return will be false, because the outFile path is not exist.
22254aa6d63Sopenharmony_ci * @tc.size: MEDIUM
22354aa6d63Sopenharmony_ci * @tc.type: FUNC
22454aa6d63Sopenharmony_ci * @tc.level Level 1
22554aa6d63Sopenharmony_ci * @tc.require: SR000H63TL
22654aa6d63Sopenharmony_ci */
22754aa6d63Sopenharmony_ciHWTEST_F(SignElfTest, Sign004, testing::ext::TestSize.Level1)
22854aa6d63Sopenharmony_ci{
22954aa6d63Sopenharmony_ci    // failed:outFile is null
23054aa6d63Sopenharmony_ci    SignerConfig signerConfig;
23154aa6d63Sopenharmony_ci    signerConfig.SetCompatibleVersion(9);
23254aa6d63Sopenharmony_ci
23354aa6d63Sopenharmony_ci    std::map<std::string, std::string> params;
23454aa6d63Sopenharmony_ci    SetElfParamsMap(params);
23554aa6d63Sopenharmony_ci    params["outFile"] = "./hapSign_test/entry-default-signed.elf";
23654aa6d63Sopenharmony_ci    signerConfig.FillParameters(params);
23754aa6d63Sopenharmony_ci
23854aa6d63Sopenharmony_ci    ContentDigestAlgorithm contentDigestAlgorithm("SHA-256", 32);
23954aa6d63Sopenharmony_ci    std::pair<std::string, void*> signatureAlgAndParams("SHA256withECDSA", nullptr);
24054aa6d63Sopenharmony_ci    SignatureAlgorithmHelper signatureAlgorithm(SignatureAlgorithmId::ECDSA_WITH_SHA256, "ECDSA_WITH_SHA256",
24154aa6d63Sopenharmony_ci                                                contentDigestAlgorithm, signatureAlgAndParams);
24254aa6d63Sopenharmony_ci    std::vector<SignatureAlgorithmHelper> signatureAlgorithms;
24354aa6d63Sopenharmony_ci    signatureAlgorithms.push_back(signatureAlgorithm);
24454aa6d63Sopenharmony_ci    signerConfig.SetSignatureAlgorithms(signatureAlgorithms);
24554aa6d63Sopenharmony_ci
24654aa6d63Sopenharmony_ci    std::shared_ptr<Options> options = std::make_shared<Options>();
24754aa6d63Sopenharmony_ci    SetElfOptions(options.get());
24854aa6d63Sopenharmony_ci    (*options)["outFile"] = "./hapSign_test/entry-default-signed.elf";
24954aa6d63Sopenharmony_ci    signerConfig.SetOptions(options.get());
25054aa6d63Sopenharmony_ci
25154aa6d63Sopenharmony_ci    signerConfig.GetSigner();
25254aa6d63Sopenharmony_ci    bool ret = SignElf::Sign(signerConfig, params);
25354aa6d63Sopenharmony_ci    EXPECT_EQ(ret, false);
25454aa6d63Sopenharmony_ci}
25554aa6d63Sopenharmony_ci
25654aa6d63Sopenharmony_ci/**
25754aa6d63Sopenharmony_ci * @tc.name: sign005
25854aa6d63Sopenharmony_ci * @tc.desc: The return will be false, because the signCode is 0, when signelf the signCode must be 1.
25954aa6d63Sopenharmony_ci * @tc.size: MEDIUM
26054aa6d63Sopenharmony_ci * @tc.type: FUNC
26154aa6d63Sopenharmony_ci * @tc.level Level 1
26254aa6d63Sopenharmony_ci * @tc.require: SR000H63TL
26354aa6d63Sopenharmony_ci */
26454aa6d63Sopenharmony_ciHWTEST_F(SignElfTest, Sign005, testing::ext::TestSize.Level1)
26554aa6d63Sopenharmony_ci{
26654aa6d63Sopenharmony_ci    // failed:signCode is 0
26754aa6d63Sopenharmony_ci    SignerConfig signerConfig;
26854aa6d63Sopenharmony_ci    signerConfig.SetCompatibleVersion(9);
26954aa6d63Sopenharmony_ci
27054aa6d63Sopenharmony_ci    std::map<std::string, std::string> params;
27154aa6d63Sopenharmony_ci    SetElfParamsMap(params);
27254aa6d63Sopenharmony_ci    params["signCode"] = "0";
27354aa6d63Sopenharmony_ci    signerConfig.FillParameters(params);
27454aa6d63Sopenharmony_ci
27554aa6d63Sopenharmony_ci    ContentDigestAlgorithm contentDigestAlgorithm("SHA-256", 32);
27654aa6d63Sopenharmony_ci    std::pair<std::string, void*> signatureAlgAndParams("SHA256withECDSA", nullptr);
27754aa6d63Sopenharmony_ci    SignatureAlgorithmHelper signatureAlgorithm(SignatureAlgorithmId::ECDSA_WITH_SHA256, "ECDSA_WITH_SHA256",
27854aa6d63Sopenharmony_ci                                                contentDigestAlgorithm, signatureAlgAndParams);
27954aa6d63Sopenharmony_ci    std::vector<SignatureAlgorithmHelper> signatureAlgorithms;
28054aa6d63Sopenharmony_ci    signatureAlgorithms.push_back(signatureAlgorithm);
28154aa6d63Sopenharmony_ci    signerConfig.SetSignatureAlgorithms(signatureAlgorithms);
28254aa6d63Sopenharmony_ci
28354aa6d63Sopenharmony_ci    std::shared_ptr<Options> options = std::make_shared<Options>();
28454aa6d63Sopenharmony_ci    SetElfOptions(options.get());
28554aa6d63Sopenharmony_ci    (*options)["signCode"] = "0";
28654aa6d63Sopenharmony_ci    signerConfig.SetOptions(options.get());
28754aa6d63Sopenharmony_ci
28854aa6d63Sopenharmony_ci    signerConfig.GetSigner();
28954aa6d63Sopenharmony_ci    bool ret = SignElf::Sign(signerConfig, params);
29054aa6d63Sopenharmony_ci    EXPECT_EQ(ret, false);
29154aa6d63Sopenharmony_ci}
29254aa6d63Sopenharmony_ci
29354aa6d63Sopenharmony_ci/**
29454aa6d63Sopenharmony_ci * @tc.name: GetCodeSignBlock001
29554aa6d63Sopenharmony_ci * @tc.desc: The return will be false, because the input format is not support, it must be hap/hsp/hqf.
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(SignElfTest, GetCodeSignBlock001, testing::ext::TestSize.Level1)
30254aa6d63Sopenharmony_ci{
30354aa6d63Sopenharmony_ci    CodeSigning object;
30454aa6d63Sopenharmony_ci    std::string input = "./hapSign_test/entry-default-signed.elf";
30554aa6d63Sopenharmony_ci    int64_t offset = 0;
30654aa6d63Sopenharmony_ci    std::string inForm = "elf";
30754aa6d63Sopenharmony_ci    std::string profileContent = "";
30854aa6d63Sopenharmony_ci    ZipSigner zip;
30954aa6d63Sopenharmony_ci    std::vector<int8_t> ret;
31054aa6d63Sopenharmony_ci    bool flag = object.GetCodeSignBlock(input, offset, inForm, profileContent, zip, ret);
31154aa6d63Sopenharmony_ci    EXPECT_EQ(flag, false);
31254aa6d63Sopenharmony_ci}
31354aa6d63Sopenharmony_ci}
31454aa6d63Sopenharmony_ci}
315