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_elf.h"
2154aa6d63Sopenharmony_ci#include "block_data.h"
2254aa6d63Sopenharmony_ci#include "sign_provider.h"
2354aa6d63Sopenharmony_ci#include "verify_hap.h"
2454aa6d63Sopenharmony_ci
2554aa6d63Sopenharmony_cinamespace OHOS {
2654aa6d63Sopenharmony_cinamespace SignatureTools {
2754aa6d63Sopenharmony_ci
2854aa6d63Sopenharmony_ciclass VerifyElfTest : public testing::Test {
2954aa6d63Sopenharmony_cipublic:
3054aa6d63Sopenharmony_ci    static void SetUpTestCase(void);
3154aa6d63Sopenharmony_ci    static void TearDownTestCase();
3254aa6d63Sopenharmony_ci    void SetUp();
3354aa6d63Sopenharmony_ci    void TearDown();
3454aa6d63Sopenharmony_ci};
3554aa6d63Sopenharmony_ci
3654aa6d63Sopenharmony_civoid VerifyElfTest::SetUpTestCase(void)
3754aa6d63Sopenharmony_ci{
3854aa6d63Sopenharmony_ci    (void)rename("./elfVerify/elf_verify_data_err_package.txt", "./elfVerify/elf_verify_data_err_package.elf");
3954aa6d63Sopenharmony_ci    (void)rename("./elfVerify/elf_verify_pkcs7_err_package.txt", "./elfVerify/elf_verify_pkcs7_err_package.elf");
4054aa6d63Sopenharmony_ci    (void)rename("./elfVerify/elf_check_ownerid_err_package.txt", "./elfVerify/elf_check_ownerid_err_package.elf");
4154aa6d63Sopenharmony_ci    (void)rename("./elfVerify/elf_signed_package.txt", "./elfVerify/elf_signed_package.elf");
4254aa6d63Sopenharmony_ci    (void)rename("./elfVerify/elf_unsigned_package.txt", "./elfVerify/elf_unsigned_package.elf");
4354aa6d63Sopenharmony_ci    (void)rename("./elfVerify/elf_check_file_err_package.txt", "./elfVerify/elf_check_file_err_package.elf");
4454aa6d63Sopenharmony_ci    (void)rename("./elfVerify/elf_signed_with_profile_json.txt", "./elfVerify/elf_signed_with_profile_json.elf");
4554aa6d63Sopenharmony_ci}
4654aa6d63Sopenharmony_ci
4754aa6d63Sopenharmony_civoid VerifyElfTest::TearDownTestCase(void)
4854aa6d63Sopenharmony_ci{
4954aa6d63Sopenharmony_ci}
5054aa6d63Sopenharmony_ci
5154aa6d63Sopenharmony_civoid VerifyElfTest::SetUp()
5254aa6d63Sopenharmony_ci{
5354aa6d63Sopenharmony_ci}
5454aa6d63Sopenharmony_ci
5554aa6d63Sopenharmony_civoid VerifyElfTest::TearDown()
5654aa6d63Sopenharmony_ci{
5754aa6d63Sopenharmony_ci}
5854aa6d63Sopenharmony_ci
5954aa6d63Sopenharmony_ci/**
6054aa6d63Sopenharmony_ci * @tc.name: Verify001
6154aa6d63Sopenharmony_ci * @tc.desc: Test function of VerifyElfTest::Verify() interface for SUCCESS.
6254aa6d63Sopenharmony_ci * @tc.size: MEDIUM
6354aa6d63Sopenharmony_ci * @tc.type: FUNC
6454aa6d63Sopenharmony_ci * @tc.level Level 1
6554aa6d63Sopenharmony_ci * @tc.require: SR000H63TL
6654aa6d63Sopenharmony_ci */
6754aa6d63Sopenharmony_ciHWTEST_F(VerifyElfTest, Verify001, testing::ext::TestSize.Level1)
6854aa6d63Sopenharmony_ci{
6954aa6d63Sopenharmony_ci    Options options;
7054aa6d63Sopenharmony_ci    options.emplace(Options::IN_FILE, std::string("./elfVerify/elf_signed_package.elf"));
7154aa6d63Sopenharmony_ci    options.emplace(Options::OUT_CERT_CHAIN, std::string("./elfVerify/xx.cer"));
7254aa6d63Sopenharmony_ci    options.emplace(Options::OUT_PROFILE, std::string("./elfVerify/xx.p7b"));
7354aa6d63Sopenharmony_ci
7454aa6d63Sopenharmony_ci    VerifyElf verifyElf;
7554aa6d63Sopenharmony_ci    bool flag = verifyElf.Verify(&options);
7654aa6d63Sopenharmony_ci
7754aa6d63Sopenharmony_ci    EXPECT_EQ(flag, true);
7854aa6d63Sopenharmony_ci}
7954aa6d63Sopenharmony_ci
8054aa6d63Sopenharmony_ci/**
8154aa6d63Sopenharmony_ci * @tc.name: Verify002
8254aa6d63Sopenharmony_ci * @tc.desc: param not exist
8354aa6d63Sopenharmony_ci * @tc.size: MEDIUM
8454aa6d63Sopenharmony_ci * @tc.type: FUNC
8554aa6d63Sopenharmony_ci * @tc.level Level 1
8654aa6d63Sopenharmony_ci * @tc.require: SR000H63TL
8754aa6d63Sopenharmony_ci */
8854aa6d63Sopenharmony_ciHWTEST_F(VerifyElfTest, Verify002, testing::ext::TestSize.Level1)
8954aa6d63Sopenharmony_ci{
9054aa6d63Sopenharmony_ci    VerifyElf verifyElf;
9154aa6d63Sopenharmony_ci    bool flag = verifyElf.Verify(nullptr);
9254aa6d63Sopenharmony_ci
9354aa6d63Sopenharmony_ci    EXPECT_EQ(flag, false);
9454aa6d63Sopenharmony_ci}
9554aa6d63Sopenharmony_ci
9654aa6d63Sopenharmony_ci/**
9754aa6d63Sopenharmony_ci * @tc.name: Verify003
9854aa6d63Sopenharmony_ci * @tc.desc: param outCertChain not exist
9954aa6d63Sopenharmony_ci * @tc.size: MEDIUM
10054aa6d63Sopenharmony_ci * @tc.type: FUNC
10154aa6d63Sopenharmony_ci * @tc.level Level 1
10254aa6d63Sopenharmony_ci * @tc.require: SR000H63TL
10354aa6d63Sopenharmony_ci */
10454aa6d63Sopenharmony_ciHWTEST_F(VerifyElfTest, Verify003, testing::ext::TestSize.Level1)
10554aa6d63Sopenharmony_ci{
10654aa6d63Sopenharmony_ci    Options options;
10754aa6d63Sopenharmony_ci    options.emplace(Options::IN_FILE, std::string("./elfVerify/elf_signed_package.elf"));
10854aa6d63Sopenharmony_ci    options.emplace(Options::OUT_PROFILE, std::string("./elfVerify/xx.p7b"));
10954aa6d63Sopenharmony_ci
11054aa6d63Sopenharmony_ci    VerifyElf verifyElf;
11154aa6d63Sopenharmony_ci    bool flag = verifyElf.Verify(&options);
11254aa6d63Sopenharmony_ci
11354aa6d63Sopenharmony_ci    EXPECT_EQ(flag, false);
11454aa6d63Sopenharmony_ci}
11554aa6d63Sopenharmony_ci
11654aa6d63Sopenharmony_ci/**
11754aa6d63Sopenharmony_ci * @tc.name: Verify004
11854aa6d63Sopenharmony_ci * @tc.desc: param outProfile not exist
11954aa6d63Sopenharmony_ci * @tc.size: MEDIUM
12054aa6d63Sopenharmony_ci * @tc.type: FUNC
12154aa6d63Sopenharmony_ci * @tc.level Level 1
12254aa6d63Sopenharmony_ci * @tc.require: SR000H63TL
12354aa6d63Sopenharmony_ci */
12454aa6d63Sopenharmony_ciHWTEST_F(VerifyElfTest, Verify004, testing::ext::TestSize.Level1)
12554aa6d63Sopenharmony_ci{
12654aa6d63Sopenharmony_ci    Options options;
12754aa6d63Sopenharmony_ci    options.emplace(Options::IN_FILE, std::string("./elfVerify/elf_signed_package.elf"));
12854aa6d63Sopenharmony_ci    options.emplace(Options::OUT_CERT_CHAIN, std::string("./elfVerify/xx.cer"));
12954aa6d63Sopenharmony_ci
13054aa6d63Sopenharmony_ci    VerifyElf verifyElf;
13154aa6d63Sopenharmony_ci    bool flag = verifyElf.Verify(&options);
13254aa6d63Sopenharmony_ci
13354aa6d63Sopenharmony_ci    EXPECT_EQ(flag, false);
13454aa6d63Sopenharmony_ci}
13554aa6d63Sopenharmony_ci
13654aa6d63Sopenharmony_ci/**
13754aa6d63Sopenharmony_ci * @tc.name: Verify005
13854aa6d63Sopenharmony_ci * @tc.desc: param inFile not exist
13954aa6d63Sopenharmony_ci * @tc.size: MEDIUM
14054aa6d63Sopenharmony_ci * @tc.type: FUNC
14154aa6d63Sopenharmony_ci * @tc.level Level 1
14254aa6d63Sopenharmony_ci * @tc.require: SR000H63TL
14354aa6d63Sopenharmony_ci */
14454aa6d63Sopenharmony_ciHWTEST_F(VerifyElfTest, Verify005, testing::ext::TestSize.Level1)
14554aa6d63Sopenharmony_ci{
14654aa6d63Sopenharmony_ci    Options options;
14754aa6d63Sopenharmony_ci    options.emplace(Options::OUT_CERT_CHAIN, std::string("./elfVerify/xx.cer"));
14854aa6d63Sopenharmony_ci    options.emplace(Options::OUT_PROFILE, std::string("./elfVerify/xx.p7b"));
14954aa6d63Sopenharmony_ci
15054aa6d63Sopenharmony_ci    VerifyElf verifyElf;
15154aa6d63Sopenharmony_ci    bool flag = verifyElf.Verify(&options);
15254aa6d63Sopenharmony_ci
15354aa6d63Sopenharmony_ci    EXPECT_EQ(flag, false);
15454aa6d63Sopenharmony_ci}
15554aa6d63Sopenharmony_ci
15654aa6d63Sopenharmony_ci/**
15754aa6d63Sopenharmony_ci * @tc.name: Verify006
15854aa6d63Sopenharmony_ci * @tc.desc: input file not exist
15954aa6d63Sopenharmony_ci * @tc.size: MEDIUM
16054aa6d63Sopenharmony_ci * @tc.type: FUNC
16154aa6d63Sopenharmony_ci * @tc.level Level 1
16254aa6d63Sopenharmony_ci * @tc.require: SR000H63TL
16354aa6d63Sopenharmony_ci */
16454aa6d63Sopenharmony_ciHWTEST_F(VerifyElfTest, Verify006, testing::ext::TestSize.Level1)
16554aa6d63Sopenharmony_ci{
16654aa6d63Sopenharmony_ci    Options options;
16754aa6d63Sopenharmony_ci    options.emplace(Options::IN_FILE, std::string("./elfVerify/elf_signed_package111.elf"));
16854aa6d63Sopenharmony_ci    options.emplace(Options::OUT_CERT_CHAIN, std::string("./elfVerify/xx.cer"));
16954aa6d63Sopenharmony_ci    options.emplace(Options::OUT_PROFILE, std::string("./elfVerify/xx.p7b"));
17054aa6d63Sopenharmony_ci
17154aa6d63Sopenharmony_ci    VerifyElf verifyElf;
17254aa6d63Sopenharmony_ci    bool flag = verifyElf.Verify(&options);
17354aa6d63Sopenharmony_ci
17454aa6d63Sopenharmony_ci    EXPECT_EQ(flag, false);
17554aa6d63Sopenharmony_ci}
17654aa6d63Sopenharmony_ci
17754aa6d63Sopenharmony_ci/**
17854aa6d63Sopenharmony_ci * @tc.name: Verify007
17954aa6d63Sopenharmony_ci * @tc.desc: wrong input file
18054aa6d63Sopenharmony_ci * @tc.size: MEDIUM
18154aa6d63Sopenharmony_ci * @tc.type: FUNC
18254aa6d63Sopenharmony_ci * @tc.level Level 1
18354aa6d63Sopenharmony_ci * @tc.require: SR000H63TL
18454aa6d63Sopenharmony_ci */
18554aa6d63Sopenharmony_ciHWTEST_F(VerifyElfTest, Verify007, testing::ext::TestSize.Level1)
18654aa6d63Sopenharmony_ci{
18754aa6d63Sopenharmony_ci    Options options;
18854aa6d63Sopenharmony_ci    options.emplace(Options::IN_FILE, std::string("./elfVerify/elf_unsigned_package.elf"));
18954aa6d63Sopenharmony_ci    options.emplace(Options::OUT_CERT_CHAIN, std::string("./elfVerify/xx.cer"));
19054aa6d63Sopenharmony_ci    options.emplace(Options::OUT_PROFILE, std::string("./elfVerify/xx.p7b"));
19154aa6d63Sopenharmony_ci
19254aa6d63Sopenharmony_ci    VerifyElf verifyElf;
19354aa6d63Sopenharmony_ci    bool flag = verifyElf.Verify(&options);
19454aa6d63Sopenharmony_ci
19554aa6d63Sopenharmony_ci    EXPECT_EQ(flag, false);
19654aa6d63Sopenharmony_ci}
19754aa6d63Sopenharmony_ci
19854aa6d63Sopenharmony_ci/**
19954aa6d63Sopenharmony_ci * @tc.name: Verify008
20054aa6d63Sopenharmony_ci * @tc.desc: Test function of VerifyElfTest::Verify() interface for SUCCESS.
20154aa6d63Sopenharmony_ci * @tc.size: MEDIUM
20254aa6d63Sopenharmony_ci * @tc.type: FUNC
20354aa6d63Sopenharmony_ci * @tc.level Level 1
20454aa6d63Sopenharmony_ci * @tc.require: SR000H63TL
20554aa6d63Sopenharmony_ci */
20654aa6d63Sopenharmony_ciHWTEST_F(VerifyElfTest, Verify008, testing::ext::TestSize.Level1)
20754aa6d63Sopenharmony_ci{
20854aa6d63Sopenharmony_ci    Options options;
20954aa6d63Sopenharmony_ci    options.emplace(Options::IN_FILE, std::string("./elfVerify/elf_signed_package.elf"));
21054aa6d63Sopenharmony_ci    options.emplace(Options::OUT_CERT_CHAIN, std::string("./elfVerify/readonly.cer"));
21154aa6d63Sopenharmony_ci    options.emplace(Options::OUT_PROFILE, std::string("./elfVerify/xx.p7b"));
21254aa6d63Sopenharmony_ci
21354aa6d63Sopenharmony_ci    VerifyElf verifyElf;
21454aa6d63Sopenharmony_ci    bool flag = verifyElf.Verify(&options);
21554aa6d63Sopenharmony_ci
21654aa6d63Sopenharmony_ci    EXPECT_EQ(flag, true);
21754aa6d63Sopenharmony_ci}
21854aa6d63Sopenharmony_ci
21954aa6d63Sopenharmony_ci/**
22054aa6d63Sopenharmony_ci * @tc.name: Verify009
22154aa6d63Sopenharmony_ci * @tc.desc: check owner id error
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(VerifyElfTest, Verify009, testing::ext::TestSize.Level1)
22854aa6d63Sopenharmony_ci{
22954aa6d63Sopenharmony_ci    Options options;
23054aa6d63Sopenharmony_ci    options.emplace(Options::IN_FILE, std::string("./elfVerify/elf_check_ownerid_err_package.elf"));
23154aa6d63Sopenharmony_ci    options.emplace(Options::OUT_CERT_CHAIN, std::string("./elfVerify/xx.cer"));
23254aa6d63Sopenharmony_ci    options.emplace(Options::OUT_PROFILE, std::string("./elfVerify/xx.p7b"));
23354aa6d63Sopenharmony_ci
23454aa6d63Sopenharmony_ci    VerifyElf verifyElf;
23554aa6d63Sopenharmony_ci    bool flag = verifyElf.Verify(&options);
23654aa6d63Sopenharmony_ci
23754aa6d63Sopenharmony_ci    EXPECT_EQ(flag, false);
23854aa6d63Sopenharmony_ci}
23954aa6d63Sopenharmony_ci
24054aa6d63Sopenharmony_ci/**
24154aa6d63Sopenharmony_ci * @tc.name: Verify010
24254aa6d63Sopenharmony_ci * @tc.desc: verify elf data error
24354aa6d63Sopenharmony_ci * @tc.size: MEDIUM
24454aa6d63Sopenharmony_ci * @tc.type: FUNC
24554aa6d63Sopenharmony_ci * @tc.level Level 1
24654aa6d63Sopenharmony_ci * @tc.require: SR000H63TL
24754aa6d63Sopenharmony_ci */
24854aa6d63Sopenharmony_ciHWTEST_F(VerifyElfTest, Verify010, testing::ext::TestSize.Level1)
24954aa6d63Sopenharmony_ci{
25054aa6d63Sopenharmony_ci    Options options;
25154aa6d63Sopenharmony_ci    options.emplace(Options::IN_FILE, std::string("./elfVerify/elf_verify_data_err_package.elf"));
25254aa6d63Sopenharmony_ci    options.emplace(Options::OUT_CERT_CHAIN, std::string("./elfVerify/xx.cer"));
25354aa6d63Sopenharmony_ci    options.emplace(Options::OUT_PROFILE, std::string("./elfVerify/xx.p7b"));
25454aa6d63Sopenharmony_ci
25554aa6d63Sopenharmony_ci    VerifyElf verifyElf;
25654aa6d63Sopenharmony_ci    bool flag = verifyElf.Verify(&options);
25754aa6d63Sopenharmony_ci
25854aa6d63Sopenharmony_ci    EXPECT_EQ(flag, false);
25954aa6d63Sopenharmony_ci}
26054aa6d63Sopenharmony_ci
26154aa6d63Sopenharmony_ci/**
26254aa6d63Sopenharmony_ci * @tc.name: Verify011
26354aa6d63Sopenharmony_ci * @tc.desc: verify pkcs7 error
26454aa6d63Sopenharmony_ci * @tc.size: MEDIUM
26554aa6d63Sopenharmony_ci * @tc.type: FUNC
26654aa6d63Sopenharmony_ci * @tc.level Level 1
26754aa6d63Sopenharmony_ci * @tc.require: SR000H63TL
26854aa6d63Sopenharmony_ci */
26954aa6d63Sopenharmony_ciHWTEST_F(VerifyElfTest, Verify011, testing::ext::TestSize.Level1)
27054aa6d63Sopenharmony_ci{
27154aa6d63Sopenharmony_ci    Options options;
27254aa6d63Sopenharmony_ci    options.emplace(Options::IN_FILE, std::string("./elfVerify/elf_verify_pkcs7_err_package.elf"));
27354aa6d63Sopenharmony_ci    options.emplace(Options::OUT_CERT_CHAIN, std::string("./elfVerify/xx.cer"));
27454aa6d63Sopenharmony_ci    options.emplace(Options::OUT_PROFILE, std::string("./elfVerify/xx.p7b"));
27554aa6d63Sopenharmony_ci
27654aa6d63Sopenharmony_ci    VerifyElf verifyElf;
27754aa6d63Sopenharmony_ci    bool flag = verifyElf.Verify(&options);
27854aa6d63Sopenharmony_ci
27954aa6d63Sopenharmony_ci    EXPECT_EQ(flag, false);
28054aa6d63Sopenharmony_ci}
28154aa6d63Sopenharmony_ci
28254aa6d63Sopenharmony_ci/**
28354aa6d63Sopenharmony_ci * @tc.name: Verify013
28454aa6d63Sopenharmony_ci * @tc.desc: check elf file error
28554aa6d63Sopenharmony_ci * @tc.size: MEDIUM
28654aa6d63Sopenharmony_ci * @tc.type: FUNC
28754aa6d63Sopenharmony_ci * @tc.level Level 1
28854aa6d63Sopenharmony_ci * @tc.require: SR000H63TL
28954aa6d63Sopenharmony_ci */
29054aa6d63Sopenharmony_ciHWTEST_F(VerifyElfTest, Verify013, testing::ext::TestSize.Level1)
29154aa6d63Sopenharmony_ci{
29254aa6d63Sopenharmony_ci    Options options;
29354aa6d63Sopenharmony_ci    options.emplace(Options::IN_FILE, std::string("./elfVerify/elf_check_file_err_package.elf"));
29454aa6d63Sopenharmony_ci    options.emplace(Options::OUT_CERT_CHAIN, std::string("./elfVerify/xx.cer"));
29554aa6d63Sopenharmony_ci    options.emplace(Options::OUT_PROFILE, std::string("./elfVerify/xx.p7b"));
29654aa6d63Sopenharmony_ci
29754aa6d63Sopenharmony_ci    VerifyElf verifyElf;
29854aa6d63Sopenharmony_ci    bool flag = verifyElf.Verify(&options);
29954aa6d63Sopenharmony_ci
30054aa6d63Sopenharmony_ci    EXPECT_EQ(flag, true);
30154aa6d63Sopenharmony_ci}
30254aa6d63Sopenharmony_ci
30354aa6d63Sopenharmony_ci/**
30454aa6d63Sopenharmony_ci * @tc.name: Verify014
30554aa6d63Sopenharmony_ci * @tc.desc: verify elf with unsigned profile
30654aa6d63Sopenharmony_ci * @tc.size: MEDIUM
30754aa6d63Sopenharmony_ci * @tc.type: FUNC
30854aa6d63Sopenharmony_ci * @tc.level Level 1
30954aa6d63Sopenharmony_ci * @tc.require: SR000H63TL
31054aa6d63Sopenharmony_ci */
31154aa6d63Sopenharmony_ciHWTEST_F(VerifyElfTest, Verify014, testing::ext::TestSize.Level1)
31254aa6d63Sopenharmony_ci{
31354aa6d63Sopenharmony_ci    Options options;
31454aa6d63Sopenharmony_ci    options.emplace(Options::IN_FILE, std::string("./elfVerify/elf_signed_with_profile_json.elf"));
31554aa6d63Sopenharmony_ci    options.emplace(Options::OUT_CERT_CHAIN, std::string("./elfVerify/xx.cer"));
31654aa6d63Sopenharmony_ci    options.emplace(Options::OUT_PROFILE, std::string("./elfVerify/xx.p7b"));
31754aa6d63Sopenharmony_ci
31854aa6d63Sopenharmony_ci    VerifyElf verifyElf;
31954aa6d63Sopenharmony_ci    bool flag = verifyElf.Verify(&options);
32054aa6d63Sopenharmony_ci
32154aa6d63Sopenharmony_ci    EXPECT_EQ(flag, true);
32254aa6d63Sopenharmony_ci}
32354aa6d63Sopenharmony_ci
32454aa6d63Sopenharmony_ci/**
32554aa6d63Sopenharmony_ci * @tc.name: CheckParams
32654aa6d63Sopenharmony_ci * @tc.desc: Test function of VerifyElfTest::CheckParams() interface for SUCCESS.
32754aa6d63Sopenharmony_ci * @tc.size: MEDIUM
32854aa6d63Sopenharmony_ci * @tc.type: FUNC
32954aa6d63Sopenharmony_ci * @tc.level Level 1
33054aa6d63Sopenharmony_ci * @tc.require: SR000H63TL
33154aa6d63Sopenharmony_ci */
33254aa6d63Sopenharmony_ciHWTEST_F(VerifyElfTest, CheckParams, testing::ext::TestSize.Level1)
33354aa6d63Sopenharmony_ci{
33454aa6d63Sopenharmony_ci    Options options;
33554aa6d63Sopenharmony_ci    options.emplace(Options::IN_FILE, std::string("./elfVerify/elf_signed_package.elf"));
33654aa6d63Sopenharmony_ci    options.emplace(Options::OUT_CERT_CHAIN, std::string("./elfVerify/xx.cer"));
33754aa6d63Sopenharmony_ci    options.emplace(Options::OUT_PROFILE, std::string("./elfVerify/xx.p7b"));
33854aa6d63Sopenharmony_ci
33954aa6d63Sopenharmony_ci    bool flag = VerifyElf::CheckParams(&options);
34054aa6d63Sopenharmony_ci
34154aa6d63Sopenharmony_ci    EXPECT_EQ(flag, true);
34254aa6d63Sopenharmony_ci}
34354aa6d63Sopenharmony_ci
34454aa6d63Sopenharmony_ci/**
34554aa6d63Sopenharmony_ci * @tc.name: CheckSignFile
34654aa6d63Sopenharmony_ci * @tc.desc: Test function of VerifyElfTest::CheckSignFile() interface for SUCCESS.
34754aa6d63Sopenharmony_ci * @tc.size: MEDIUM
34854aa6d63Sopenharmony_ci * @tc.type: FUNC
34954aa6d63Sopenharmony_ci * @tc.level Level 1
35054aa6d63Sopenharmony_ci * @tc.require: SR000H63TL
35154aa6d63Sopenharmony_ci */
35254aa6d63Sopenharmony_ciHWTEST_F(VerifyElfTest, CheckSignFile, testing::ext::TestSize.Level1)
35354aa6d63Sopenharmony_ci{
35454aa6d63Sopenharmony_ci    std::string file = "./elfVerify/elf_signed_package.elf";
35554aa6d63Sopenharmony_ci
35654aa6d63Sopenharmony_ci    bool flag = VerifyElf::CheckSignFile(file);
35754aa6d63Sopenharmony_ci
35854aa6d63Sopenharmony_ci    EXPECT_EQ(flag, true);
35954aa6d63Sopenharmony_ci}
36054aa6d63Sopenharmony_ci
36154aa6d63Sopenharmony_ci/**
36254aa6d63Sopenharmony_ci * @tc.name: GetSignBlockData
36354aa6d63Sopenharmony_ci * @tc.desc: Test function of VerifyElfTest::GetSignBlockData() interface for FAILED.
36454aa6d63Sopenharmony_ci * @tc.size: MEDIUM
36554aa6d63Sopenharmony_ci * @tc.type: FUNC
36654aa6d63Sopenharmony_ci * @tc.level Level 1
36754aa6d63Sopenharmony_ci * @tc.require: SR000H63TL
36854aa6d63Sopenharmony_ci */
36954aa6d63Sopenharmony_ciHWTEST_F(VerifyElfTest, GetSignBlockData, testing::ext::TestSize.Level1)
37054aa6d63Sopenharmony_ci{
37154aa6d63Sopenharmony_ci    std::vector<int8_t> bytes = { 1, 1, 1, 1, 1, 1, 1, 1 };
37254aa6d63Sopenharmony_ci    BlockData blockData(0, 0);
37354aa6d63Sopenharmony_ci
37454aa6d63Sopenharmony_ci    bool flag = VerifyElf::GetSignBlockData(bytes, blockData, "elf");
37554aa6d63Sopenharmony_ci
37654aa6d63Sopenharmony_ci    EXPECT_EQ(flag, false);
37754aa6d63Sopenharmony_ci}
37854aa6d63Sopenharmony_ci
37954aa6d63Sopenharmony_ci/**
38054aa6d63Sopenharmony_ci * @tc.name: GetSignBlockInfo
38154aa6d63Sopenharmony_ci * @tc.desc: Test function of VerifyElfTest::GetSignBlockInfo() interface for SUCCESS.
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(VerifyElfTest, GetSignBlockInfo, testing::ext::TestSize.Level1)
38854aa6d63Sopenharmony_ci{
38954aa6d63Sopenharmony_ci    std::string file = "./elfVerify/elf_signed_package.elf";
39054aa6d63Sopenharmony_ci    SignBlockInfo signBlockInfo(false);
39154aa6d63Sopenharmony_ci
39254aa6d63Sopenharmony_ci    bool flag = VerifyElf::GetSignBlockInfo(file, signBlockInfo, "elf");
39354aa6d63Sopenharmony_ci
39454aa6d63Sopenharmony_ci    EXPECT_EQ(flag, true);
39554aa6d63Sopenharmony_ci}
39654aa6d63Sopenharmony_ci
39754aa6d63Sopenharmony_ci/**
39854aa6d63Sopenharmony_ci * @tc.name: GetFileDigest
39954aa6d63Sopenharmony_ci * @tc.desc: Test function of VerifyElfTest::GetFileDigest() interface for FAILED.
40054aa6d63Sopenharmony_ci * @tc.size: MEDIUM
40154aa6d63Sopenharmony_ci * @tc.type: FUNC
40254aa6d63Sopenharmony_ci * @tc.level Level 1
40354aa6d63Sopenharmony_ci * @tc.require: SR000H63TL
40454aa6d63Sopenharmony_ci */
40554aa6d63Sopenharmony_ciHWTEST_F(VerifyElfTest, GetFileDigest, testing::ext::TestSize.Level1)
40654aa6d63Sopenharmony_ci{
40754aa6d63Sopenharmony_ci    std::string file = "./elfVerify/elf_signed_package.elf";
40854aa6d63Sopenharmony_ci    SignBlockInfo signBlockInfo(false);
40954aa6d63Sopenharmony_ci    VerifyElf::GetSignBlockInfo(file, signBlockInfo, "elf");
41054aa6d63Sopenharmony_ci    std::vector<int8_t> fileBytes = { 1, 1, 1, 1, 1, 1, 1, 1 };
41154aa6d63Sopenharmony_ci    std::vector<int8_t> signatrue = { 1, 1, 1, 1, 1, 1, 1, 1 };
41254aa6d63Sopenharmony_ci
41354aa6d63Sopenharmony_ci    bool flag = VerifyElf::GetFileDigest(fileBytes, signatrue, signBlockInfo);
41454aa6d63Sopenharmony_ci
41554aa6d63Sopenharmony_ci    EXPECT_EQ(flag, false);
41654aa6d63Sopenharmony_ci}
41754aa6d63Sopenharmony_ci
41854aa6d63Sopenharmony_ci/**
41954aa6d63Sopenharmony_ci * @tc.name: GetRawContent
42054aa6d63Sopenharmony_ci * @tc.desc: Test function of VerifyElfTest::GetRawContent() interface for FAILED.
42154aa6d63Sopenharmony_ci * @tc.size: MEDIUM
42254aa6d63Sopenharmony_ci * @tc.type: FUNC
42354aa6d63Sopenharmony_ci * @tc.level Level 1
42454aa6d63Sopenharmony_ci * @tc.require: SR000H63TL
42554aa6d63Sopenharmony_ci */
42654aa6d63Sopenharmony_ciHWTEST_F(VerifyElfTest, GetRawContent, testing::ext::TestSize.Level1)
42754aa6d63Sopenharmony_ci{
42854aa6d63Sopenharmony_ci    std::vector<int8_t> contentVec = { 1, 1, 1, 1, 1, 1, 1, 1 };
42954aa6d63Sopenharmony_ci    std::string rawContent;
43054aa6d63Sopenharmony_ci
43154aa6d63Sopenharmony_ci    bool flag = VerifyElf::GetRawContent(contentVec, rawContent);
43254aa6d63Sopenharmony_ci
43354aa6d63Sopenharmony_ci    EXPECT_EQ(flag, false);
43454aa6d63Sopenharmony_ci}
43554aa6d63Sopenharmony_ci
43654aa6d63Sopenharmony_ci/**
43754aa6d63Sopenharmony_ci * @tc.name: VerifyP7b
43854aa6d63Sopenharmony_ci * @tc.desc: Test function of VerifyElfTest::VerifyP7b() interface for SUCCESS.
43954aa6d63Sopenharmony_ci * @tc.size: MEDIUM
44054aa6d63Sopenharmony_ci * @tc.type: FUNC
44154aa6d63Sopenharmony_ci * @tc.level Level 1
44254aa6d63Sopenharmony_ci * @tc.require: SR000H63TL
44354aa6d63Sopenharmony_ci */
44454aa6d63Sopenharmony_ciHWTEST_F(VerifyElfTest, VerifyP7b, testing::ext::TestSize.Level1)
44554aa6d63Sopenharmony_ci{
44654aa6d63Sopenharmony_ci    std::unordered_map<int8_t, SigningBlock> signBlockMap;
44754aa6d63Sopenharmony_ci    Options options;
44854aa6d63Sopenharmony_ci    options.emplace(Options::IN_FILE, std::string("./elfVerify/elf_signed_package.elf"));
44954aa6d63Sopenharmony_ci    options.emplace(Options::OUT_CERT_CHAIN, std::string("./elfVerify/xx.cer"));
45054aa6d63Sopenharmony_ci    options.emplace(Options::OUT_PROFILE, std::string("./elfVerify/xx.p7b"));
45154aa6d63Sopenharmony_ci    Pkcs7Context pkcs7Context;
45254aa6d63Sopenharmony_ci    std::vector<int8_t> profileVec;
45354aa6d63Sopenharmony_ci    std::string profileJson;
45454aa6d63Sopenharmony_ci
45554aa6d63Sopenharmony_ci    bool flag = VerifyElf::VerifyP7b(signBlockMap, &options, pkcs7Context, profileVec, profileJson);
45654aa6d63Sopenharmony_ci
45754aa6d63Sopenharmony_ci    EXPECT_EQ(flag, true);
45854aa6d63Sopenharmony_ci}
45954aa6d63Sopenharmony_ci
46054aa6d63Sopenharmony_ci/**
46154aa6d63Sopenharmony_ci * @tc.name: SignElf001
46254aa6d63Sopenharmony_ci * @tc.desc: sign elf with code sign
46354aa6d63Sopenharmony_ci * @tc.size: MEDIUM
46454aa6d63Sopenharmony_ci * @tc.type: FUNC
46554aa6d63Sopenharmony_ci * @tc.level Level 1
46654aa6d63Sopenharmony_ci * @tc.require: SR000H63TL
46754aa6d63Sopenharmony_ci */
46854aa6d63Sopenharmony_ciHWTEST_F(VerifyElfTest, SignElf001, testing::ext::TestSize.Level1)
46954aa6d63Sopenharmony_ci{
47054aa6d63Sopenharmony_ci    Options options;
47154aa6d63Sopenharmony_ci    options.emplace("mode", std::string("localSign"));
47254aa6d63Sopenharmony_ci    options.emplace("keyPwd", std::string("123456"));
47354aa6d63Sopenharmony_ci    options.emplace("outFile", std::string("./hapSign/entry-default-signed.elf"));
47454aa6d63Sopenharmony_ci    options.emplace("keyAlias", std::string("oh-app1-key-v1"));
47554aa6d63Sopenharmony_ci    options.emplace("profileFile", std::string("./hapSign/signed-profile.p7b"));
47654aa6d63Sopenharmony_ci    options.emplace("signAlg", std::string("SHA256withECDSA"));
47754aa6d63Sopenharmony_ci    options.emplace("keystorePwd", std::string("123456"));
47854aa6d63Sopenharmony_ci    options.emplace("keystoreFile", std::string("./hapSign/ohtest.jks"));
47954aa6d63Sopenharmony_ci    options.emplace("appCertFile", std::string("./hapSign/app-release1.pem"));
48054aa6d63Sopenharmony_ci    options.emplace("inFile", std::string("./elfVerify/elf_unsigned_package.elf"));
48154aa6d63Sopenharmony_ci    options.emplace("signCode", std::string("1"));
48254aa6d63Sopenharmony_ci    options.emplace("inForm", std::string("elf"));
48354aa6d63Sopenharmony_ci
48454aa6d63Sopenharmony_ci    SignProvider signProvider;
48554aa6d63Sopenharmony_ci    bool flag = signProvider.SignElf(&options);
48654aa6d63Sopenharmony_ci
48754aa6d63Sopenharmony_ci    EXPECT_EQ(flag, false);
48854aa6d63Sopenharmony_ci}
48954aa6d63Sopenharmony_ci
49054aa6d63Sopenharmony_ci/**
49154aa6d63Sopenharmony_ci * @tc.name: SignElf002
49254aa6d63Sopenharmony_ci * @tc.desc: sign elf without code sign
49354aa6d63Sopenharmony_ci * @tc.size: MEDIUM
49454aa6d63Sopenharmony_ci * @tc.type: FUNC
49554aa6d63Sopenharmony_ci * @tc.level Level 1
49654aa6d63Sopenharmony_ci * @tc.require: SR000H63TL
49754aa6d63Sopenharmony_ci */
49854aa6d63Sopenharmony_ciHWTEST_F(VerifyElfTest, SignElf002, testing::ext::TestSize.Level1)
49954aa6d63Sopenharmony_ci{
50054aa6d63Sopenharmony_ci    Options options;
50154aa6d63Sopenharmony_ci    options.emplace("mode", std::string("localSign"));
50254aa6d63Sopenharmony_ci    options.emplace("keyPwd", std::string("123456"));
50354aa6d63Sopenharmony_ci    options.emplace("outFile", std::string("./hapSign/entry-default-signed.elf"));
50454aa6d63Sopenharmony_ci    options.emplace("keyAlias", std::string("oh-app1-key-v1"));
50554aa6d63Sopenharmony_ci    options.emplace("profileFile", std::string("./hapSign/signed-profile.p7b"));
50654aa6d63Sopenharmony_ci    options.emplace("signAlg", std::string("SHA256withECDSA"));
50754aa6d63Sopenharmony_ci    options.emplace("keystorePwd", std::string("123456"));
50854aa6d63Sopenharmony_ci    options.emplace("keystoreFile", std::string("./hapSign/ohtest.jks"));
50954aa6d63Sopenharmony_ci    options.emplace("appCertFile", std::string("./hapSign/app-release1.pem"));
51054aa6d63Sopenharmony_ci    options.emplace("inFile", std::string("./elfVerify/elf_unsigned_package.elf"));
51154aa6d63Sopenharmony_ci    options.emplace("signCode", std::string("0"));
51254aa6d63Sopenharmony_ci
51354aa6d63Sopenharmony_ci    SignProvider signProvider;
51454aa6d63Sopenharmony_ci    bool flag = signProvider.SignElf(&options);
51554aa6d63Sopenharmony_ci
51654aa6d63Sopenharmony_ci    EXPECT_EQ(flag, false);
51754aa6d63Sopenharmony_ci}
51854aa6d63Sopenharmony_ci
51954aa6d63Sopenharmony_ci/**
52054aa6d63Sopenharmony_ci * @tc.name: SignElf003
52154aa6d63Sopenharmony_ci * @tc.desc: invalid param signCode
52254aa6d63Sopenharmony_ci * @tc.size: MEDIUM
52354aa6d63Sopenharmony_ci * @tc.type: FUNC
52454aa6d63Sopenharmony_ci * @tc.level Level 1
52554aa6d63Sopenharmony_ci * @tc.require: SR000H63TL
52654aa6d63Sopenharmony_ci */
52754aa6d63Sopenharmony_ciHWTEST_F(VerifyElfTest, SignElf003, testing::ext::TestSize.Level1)
52854aa6d63Sopenharmony_ci{
52954aa6d63Sopenharmony_ci    Options options;
53054aa6d63Sopenharmony_ci    options.emplace("mode", std::string("localSign"));
53154aa6d63Sopenharmony_ci    options.emplace("keyPwd", std::string("123456"));
53254aa6d63Sopenharmony_ci    options.emplace("outFile", std::string("./hapSign/entry-default-signed.elf"));
53354aa6d63Sopenharmony_ci    options.emplace("keyAlias", std::string("oh-app1-key-v1"));
53454aa6d63Sopenharmony_ci    options.emplace("profileFile", std::string("./hapSign/signed-profile.p7b"));
53554aa6d63Sopenharmony_ci    options.emplace("signAlg", std::string("SHA256withECDSA"));
53654aa6d63Sopenharmony_ci    options.emplace("keystorePwd", std::string("123456"));
53754aa6d63Sopenharmony_ci    options.emplace("keystoreFile", std::string("./hapSign/ohtest.jks"));
53854aa6d63Sopenharmony_ci    options.emplace("appCertFile", std::string("./hapSign/app-release1.pem"));
53954aa6d63Sopenharmony_ci    options.emplace("inFile", std::string("./elfVerify/elf_unsigned_package.elf"));
54054aa6d63Sopenharmony_ci    options.emplace("signCode", std::string("2"));
54154aa6d63Sopenharmony_ci    options.emplace("inForm", std::string("elf"));
54254aa6d63Sopenharmony_ci
54354aa6d63Sopenharmony_ci    SignProvider signProvider;
54454aa6d63Sopenharmony_ci    bool flag = signProvider.SignElf(&options);
54554aa6d63Sopenharmony_ci
54654aa6d63Sopenharmony_ci    EXPECT_EQ(flag, false);
54754aa6d63Sopenharmony_ci}
54854aa6d63Sopenharmony_ci
54954aa6d63Sopenharmony_ci/**
55054aa6d63Sopenharmony_ci * @tc.name: SignElf004
55154aa6d63Sopenharmony_ci * @tc.desc: input file without suffix
55254aa6d63Sopenharmony_ci * @tc.size: MEDIUM
55354aa6d63Sopenharmony_ci * @tc.type: FUNC
55454aa6d63Sopenharmony_ci * @tc.level Level 1
55554aa6d63Sopenharmony_ci * @tc.require: SR000H63TL
55654aa6d63Sopenharmony_ci */
55754aa6d63Sopenharmony_ciHWTEST_F(VerifyElfTest, SignElf004, testing::ext::TestSize.Level1)
55854aa6d63Sopenharmony_ci{
55954aa6d63Sopenharmony_ci    Options options;
56054aa6d63Sopenharmony_ci    options.emplace("mode", std::string("localSign"));
56154aa6d63Sopenharmony_ci    options.emplace("keyPwd", std::string("123456"));
56254aa6d63Sopenharmony_ci    options.emplace("outFile", std::string("./hapSign/entry-default-signed.elf"));
56354aa6d63Sopenharmony_ci    options.emplace("keyAlias", std::string("oh-app1-key-v1"));
56454aa6d63Sopenharmony_ci    options.emplace("profileFile", std::string("./hapSign/signed-profile.p7b"));
56554aa6d63Sopenharmony_ci    options.emplace("signAlg", std::string("SHA256withECDSA"));
56654aa6d63Sopenharmony_ci    options.emplace("keystorePwd", std::string("123456"));
56754aa6d63Sopenharmony_ci    options.emplace("keystoreFile", std::string("./hapSign/ohtest.jks"));
56854aa6d63Sopenharmony_ci    options.emplace("appCertFile", std::string("./hapSign/app-release1.pem"));
56954aa6d63Sopenharmony_ci    options.emplace("inFile", std::string("./elfVerify/elf_unsigned_package"));
57054aa6d63Sopenharmony_ci    options.emplace("signCode", std::string("1"));
57154aa6d63Sopenharmony_ci    options.emplace("inForm", std::string("elf"));
57254aa6d63Sopenharmony_ci
57354aa6d63Sopenharmony_ci    SignProvider signProvider;
57454aa6d63Sopenharmony_ci    bool flag = signProvider.SignElf(&options);
57554aa6d63Sopenharmony_ci
57654aa6d63Sopenharmony_ci    EXPECT_EQ(flag, false);
57754aa6d63Sopenharmony_ci}
57854aa6d63Sopenharmony_ci
57954aa6d63Sopenharmony_ci/**
58054aa6d63Sopenharmony_ci * @tc.name: SignElf005
58154aa6d63Sopenharmony_ci * @tc.desc: input file not exist
58254aa6d63Sopenharmony_ci * @tc.size: MEDIUM
58354aa6d63Sopenharmony_ci * @tc.type: FUNC
58454aa6d63Sopenharmony_ci * @tc.level Level 1
58554aa6d63Sopenharmony_ci * @tc.require: SR000H63TL
58654aa6d63Sopenharmony_ci */
58754aa6d63Sopenharmony_ciHWTEST_F(VerifyElfTest, SignElf005, testing::ext::TestSize.Level1)
58854aa6d63Sopenharmony_ci{
58954aa6d63Sopenharmony_ci    Options options;
59054aa6d63Sopenharmony_ci    options.emplace("mode", std::string("localSign"));
59154aa6d63Sopenharmony_ci    options.emplace("keyPwd", std::string("123456"));
59254aa6d63Sopenharmony_ci    options.emplace("outFile", std::string("./hapSign/entry-default-signed.elf"));
59354aa6d63Sopenharmony_ci    options.emplace("keyAlias", std::string("oh-app1-key-v1"));
59454aa6d63Sopenharmony_ci    options.emplace("profileFile", std::string("./hapSign/signed-profile.p7b"));
59554aa6d63Sopenharmony_ci    options.emplace("signAlg", std::string("SHA256withECDSA"));
59654aa6d63Sopenharmony_ci    options.emplace("keystorePwd", std::string("123456"));
59754aa6d63Sopenharmony_ci    options.emplace("keystoreFile", std::string("./hapSign/ohtest.jks"));
59854aa6d63Sopenharmony_ci    options.emplace("appCertFile", std::string("./hapSign/app-release1.pem"));
59954aa6d63Sopenharmony_ci    options.emplace("inFile", std::string("./elfVerify/elf_unsigned_package111.elf"));
60054aa6d63Sopenharmony_ci    options.emplace("signCode", std::string("1"));
60154aa6d63Sopenharmony_ci    options.emplace("inForm", std::string("elf"));
60254aa6d63Sopenharmony_ci
60354aa6d63Sopenharmony_ci    SignProvider signProvider;
60454aa6d63Sopenharmony_ci    bool flag = signProvider.SignElf(&options);
60554aa6d63Sopenharmony_ci
60654aa6d63Sopenharmony_ci    EXPECT_EQ(flag, false);
60754aa6d63Sopenharmony_ci}
60854aa6d63Sopenharmony_ci
60954aa6d63Sopenharmony_ci/**
61054aa6d63Sopenharmony_ci * @tc.name: SignElf006
61154aa6d63Sopenharmony_ci * @tc.desc: pem file not exist
61254aa6d63Sopenharmony_ci * @tc.size: MEDIUM
61354aa6d63Sopenharmony_ci * @tc.type: FUNC
61454aa6d63Sopenharmony_ci * @tc.level Level 1
61554aa6d63Sopenharmony_ci * @tc.require: SR000H63TL
61654aa6d63Sopenharmony_ci */
61754aa6d63Sopenharmony_ciHWTEST_F(VerifyElfTest, SignElf006, testing::ext::TestSize.Level1)
61854aa6d63Sopenharmony_ci{
61954aa6d63Sopenharmony_ci    Options options;
62054aa6d63Sopenharmony_ci    options.emplace("mode", std::string("localSign"));
62154aa6d63Sopenharmony_ci    options.emplace("keyPwd", std::string("123456"));
62254aa6d63Sopenharmony_ci    options.emplace("outFile", std::string("./hapSign/entry-default-signed.elf"));
62354aa6d63Sopenharmony_ci    options.emplace("keyAlias", std::string("oh-app1-key-v1"));
62454aa6d63Sopenharmony_ci    options.emplace("profileFile", std::string("./hapSign/signed-profile.p7b"));
62554aa6d63Sopenharmony_ci    options.emplace("signAlg", std::string("SHA512withECDSA"));
62654aa6d63Sopenharmony_ci    options.emplace("keystorePwd", std::string("123456"));
62754aa6d63Sopenharmony_ci    options.emplace("keystoreFile", std::string("./hapSign/ohtest.jks"));
62854aa6d63Sopenharmony_ci    options.emplace("appCertFile", std::string("./hapSign/app-release1.pem"));
62954aa6d63Sopenharmony_ci    options.emplace("inFile", std::string("./elfVerify/elf_unsigned_package.elf"));
63054aa6d63Sopenharmony_ci    options.emplace("signCode", std::string("1"));
63154aa6d63Sopenharmony_ci    options.emplace("inForm", std::string("elf"));
63254aa6d63Sopenharmony_ci
63354aa6d63Sopenharmony_ci    SignProvider signProvider;
63454aa6d63Sopenharmony_ci    bool flag = signProvider.SignElf(&options);
63554aa6d63Sopenharmony_ci
63654aa6d63Sopenharmony_ci    EXPECT_EQ(flag, false);
63754aa6d63Sopenharmony_ci}
63854aa6d63Sopenharmony_ci
63954aa6d63Sopenharmony_ci/**
64054aa6d63Sopenharmony_ci * @tc.name: SignElf007
64154aa6d63Sopenharmony_ci * @tc.desc: invalid compatible version
64254aa6d63Sopenharmony_ci * @tc.size: MEDIUM
64354aa6d63Sopenharmony_ci * @tc.type: FUNC
64454aa6d63Sopenharmony_ci * @tc.level Level 1
64554aa6d63Sopenharmony_ci * @tc.require: SR000H63TL
64654aa6d63Sopenharmony_ci */
64754aa6d63Sopenharmony_ciHWTEST_F(VerifyElfTest, SignElf007, testing::ext::TestSize.Level1)
64854aa6d63Sopenharmony_ci{
64954aa6d63Sopenharmony_ci    Options options;
65054aa6d63Sopenharmony_ci    options.emplace("mode", std::string("localSign"));
65154aa6d63Sopenharmony_ci    options.emplace("keyPwd", std::string("123456"));
65254aa6d63Sopenharmony_ci    options.emplace("outFile", std::string("./hapSign/entry-default-signed.elf"));
65354aa6d63Sopenharmony_ci    options.emplace("keyAlias", std::string("oh-app1-key-v1"));
65454aa6d63Sopenharmony_ci    options.emplace("profileFile", std::string("./hapSign/signed-profile.p7b"));
65554aa6d63Sopenharmony_ci    options.emplace("signAlg", std::string("SHA256withECDSA"));
65654aa6d63Sopenharmony_ci    options.emplace("keystorePwd", std::string("123456"));
65754aa6d63Sopenharmony_ci    options.emplace("keystoreFile", std::string("./hapSign/ohtest.jks"));
65854aa6d63Sopenharmony_ci    options.emplace("appCertFile", std::string("./hapSign/app-release1.pem"));
65954aa6d63Sopenharmony_ci    options.emplace("inFile", std::string("./elfVerify/elf_unsigned_package.elf"));
66054aa6d63Sopenharmony_ci    options.emplace("signCode", std::string("1"));
66154aa6d63Sopenharmony_ci    options.emplace("inForm", std::string("elf"));
66254aa6d63Sopenharmony_ci    options.emplace("compatibleVersion", std::string("a"));
66354aa6d63Sopenharmony_ci
66454aa6d63Sopenharmony_ci    SignProvider signProvider;
66554aa6d63Sopenharmony_ci    bool flag = signProvider.SignElf(&options);
66654aa6d63Sopenharmony_ci
66754aa6d63Sopenharmony_ci    EXPECT_EQ(flag, false);
66854aa6d63Sopenharmony_ci}
66954aa6d63Sopenharmony_ci
67054aa6d63Sopenharmony_ci/**
67154aa6d63Sopenharmony_ci * @tc.name: SignElf008
67254aa6d63Sopenharmony_ci * @tc.desc: p7b file not exist
67354aa6d63Sopenharmony_ci * @tc.size: MEDIUM
67454aa6d63Sopenharmony_ci * @tc.type: FUNC
67554aa6d63Sopenharmony_ci * @tc.level Level 1
67654aa6d63Sopenharmony_ci * @tc.require: SR000H63TL
67754aa6d63Sopenharmony_ci */
67854aa6d63Sopenharmony_ciHWTEST_F(VerifyElfTest, SignElf008, testing::ext::TestSize.Level1)
67954aa6d63Sopenharmony_ci{
68054aa6d63Sopenharmony_ci    Options options;
68154aa6d63Sopenharmony_ci    options.emplace("mode", std::string("localSign"));
68254aa6d63Sopenharmony_ci    options.emplace("keyPwd", std::string("123456"));
68354aa6d63Sopenharmony_ci    options.emplace("outFile", std::string("./hapSign/entry-default-signed.elf"));
68454aa6d63Sopenharmony_ci    options.emplace("keyAlias", std::string("oh-app1-key-v1"));
68554aa6d63Sopenharmony_ci    options.emplace("profileFile", std::string("./hapSign/signed-profile111.p7b"));
68654aa6d63Sopenharmony_ci    options.emplace("signAlg", std::string("SHA256withECDSA"));
68754aa6d63Sopenharmony_ci    options.emplace("keystorePwd", std::string("123456"));
68854aa6d63Sopenharmony_ci    options.emplace("keystoreFile", std::string("./hapSign/ohtest.jks"));
68954aa6d63Sopenharmony_ci    options.emplace("appCertFile", std::string("./hapSign/app-release1.pem"));
69054aa6d63Sopenharmony_ci    options.emplace("inFile", std::string("./elfVerify/elf_unsigned_package.elf"));
69154aa6d63Sopenharmony_ci    options.emplace("signCode", std::string("1"));
69254aa6d63Sopenharmony_ci    options.emplace("inForm", std::string("elf"));
69354aa6d63Sopenharmony_ci
69454aa6d63Sopenharmony_ci    SignProvider signProvider;
69554aa6d63Sopenharmony_ci    bool flag = signProvider.SignElf(&options);
69654aa6d63Sopenharmony_ci
69754aa6d63Sopenharmony_ci    EXPECT_EQ(flag, false);
69854aa6d63Sopenharmony_ci}
69954aa6d63Sopenharmony_ci
70054aa6d63Sopenharmony_ci/**
70154aa6d63Sopenharmony_ci * @tc.name: SignBin001
70254aa6d63Sopenharmony_ci * @tc.desc: invalid alg SHA512withECDSA
70354aa6d63Sopenharmony_ci * @tc.size: MEDIUM
70454aa6d63Sopenharmony_ci * @tc.type: FUNC
70554aa6d63Sopenharmony_ci * @tc.level Level 1
70654aa6d63Sopenharmony_ci * @tc.require: SR000H63TL
70754aa6d63Sopenharmony_ci */
70854aa6d63Sopenharmony_ciHWTEST_F(VerifyElfTest, SignBin001, testing::ext::TestSize.Level1)
70954aa6d63Sopenharmony_ci{
71054aa6d63Sopenharmony_ci    Options options;
71154aa6d63Sopenharmony_ci    options.emplace("mode", std::string("localSign"));
71254aa6d63Sopenharmony_ci    options.emplace("keyPwd", std::string("123456"));
71354aa6d63Sopenharmony_ci    options.emplace("outFile", std::string("./hapSign/entry-default-signed.elf"));
71454aa6d63Sopenharmony_ci    options.emplace("keyAlias", std::string("oh-app1-key-v1"));
71554aa6d63Sopenharmony_ci    options.emplace("profileFile", std::string("./hapSign/signed-profile.p7b"));
71654aa6d63Sopenharmony_ci    options.emplace("signAlg", std::string("SHA512withECDSA"));
71754aa6d63Sopenharmony_ci    options.emplace("keystorePwd", std::string("123456"));
71854aa6d63Sopenharmony_ci    options.emplace("keystoreFile", std::string("./hapSign/ohtest.jks"));
71954aa6d63Sopenharmony_ci    options.emplace("appCertFile", std::string("./hapSign/app-release1.pem"));
72054aa6d63Sopenharmony_ci    options.emplace("inFile", std::string("./elfVerify/elf_unsigned_package.elf"));
72154aa6d63Sopenharmony_ci    options.emplace("inForm", std::string("bin"));
72254aa6d63Sopenharmony_ci
72354aa6d63Sopenharmony_ci    SignProvider signProvider;
72454aa6d63Sopenharmony_ci    bool flag = signProvider.SignBin(&options);
72554aa6d63Sopenharmony_ci
72654aa6d63Sopenharmony_ci    EXPECT_EQ(flag, false);
72754aa6d63Sopenharmony_ci}
72854aa6d63Sopenharmony_ci
72954aa6d63Sopenharmony_ci/**
73054aa6d63Sopenharmony_ci * @tc.name: WriteVerifyOutput001
73154aa6d63Sopenharmony_ci * @tc.desc: cer file not exist
73254aa6d63Sopenharmony_ci * @tc.size: MEDIUM
73354aa6d63Sopenharmony_ci * @tc.type: FUNC
73454aa6d63Sopenharmony_ci * @tc.level Level 1
73554aa6d63Sopenharmony_ci * @tc.require: SR000H63TL
73654aa6d63Sopenharmony_ci */
73754aa6d63Sopenharmony_ciHWTEST_F(VerifyElfTest, WriteVerifyOutput001, testing::ext::TestSize.Level1)
73854aa6d63Sopenharmony_ci{
73954aa6d63Sopenharmony_ci    Options options;
74054aa6d63Sopenharmony_ci    options.emplace(Options::IN_FILE, std::string("./elfVerify/elf_signed_package.elf"));
74154aa6d63Sopenharmony_ci    options.emplace(Options::OUT_PROFILE, std::string("./elfVerify/xx.p7b"));
74254aa6d63Sopenharmony_ci
74354aa6d63Sopenharmony_ci    SignBlockInfo signBlockInfo(false);
74454aa6d63Sopenharmony_ci    VerifyElf::GetSignBlockInfo("./elfVerify/elf_signed_package.elf", signBlockInfo, "elf");
74554aa6d63Sopenharmony_ci    std::unordered_map<int8_t, SigningBlock> signBlockMap = signBlockInfo.GetSignBlockMap();
74654aa6d63Sopenharmony_ci    SigningBlock profileSign = signBlockMap.find(2)->second;
74754aa6d63Sopenharmony_ci    std::vector<int8_t> profileByte = profileSign.GetValue();
74854aa6d63Sopenharmony_ci    std::vector<int8_t> profileVec;
74954aa6d63Sopenharmony_ci    Pkcs7Context pkcs7Context;
75054aa6d63Sopenharmony_ci    VerifyHap hapVerifyV2;
75154aa6d63Sopenharmony_ci    std::unique_ptr<ByteBuffer> profileBuffer =
75254aa6d63Sopenharmony_ci        std::make_unique<ByteBuffer>((char*)profileByte.data(), profileByte.size());
75354aa6d63Sopenharmony_ci    hapVerifyV2.VerifyAppPkcs7(pkcs7Context, *profileBuffer);
75454aa6d63Sopenharmony_ci    int32_t flag = hapVerifyV2.WriteVerifyOutput(pkcs7Context, profileVec, &options);
75554aa6d63Sopenharmony_ci
75654aa6d63Sopenharmony_ci    EXPECT_NE(flag, 0);
75754aa6d63Sopenharmony_ci}
75854aa6d63Sopenharmony_ci
75954aa6d63Sopenharmony_ci/**
76054aa6d63Sopenharmony_ci * @tc.name: WriteVerifyOutput002
76154aa6d63Sopenharmony_ci * @tc.desc: p7b file not exist
76254aa6d63Sopenharmony_ci * @tc.size: MEDIUM
76354aa6d63Sopenharmony_ci * @tc.type: FUNC
76454aa6d63Sopenharmony_ci * @tc.level Level 1
76554aa6d63Sopenharmony_ci * @tc.require: SR000H63TL
76654aa6d63Sopenharmony_ci */
76754aa6d63Sopenharmony_ciHWTEST_F(VerifyElfTest, WriteVerifyOutput002, testing::ext::TestSize.Level1)
76854aa6d63Sopenharmony_ci{
76954aa6d63Sopenharmony_ci    Options options;
77054aa6d63Sopenharmony_ci    options.emplace(Options::IN_FILE, std::string("./elfVerify/elf_signed_package.elf"));
77154aa6d63Sopenharmony_ci    options.emplace(Options::OUT_CERT_CHAIN, std::string("./elfVerify/xx.cer"));
77254aa6d63Sopenharmony_ci
77354aa6d63Sopenharmony_ci    SignBlockInfo signBlockInfo(false);
77454aa6d63Sopenharmony_ci    VerifyElf::GetSignBlockInfo("./elfVerify/elf_signed_package.elf", signBlockInfo, "elf");
77554aa6d63Sopenharmony_ci    std::unordered_map<int8_t, SigningBlock> signBlockMap = signBlockInfo.GetSignBlockMap();
77654aa6d63Sopenharmony_ci    SigningBlock profileSign = signBlockMap.find(2)->second;
77754aa6d63Sopenharmony_ci    std::vector<int8_t> profileByte = profileSign.GetValue();
77854aa6d63Sopenharmony_ci    std::vector<int8_t> profileVec;
77954aa6d63Sopenharmony_ci    Pkcs7Context pkcs7Context;
78054aa6d63Sopenharmony_ci    VerifyHap hapVerifyV2;
78154aa6d63Sopenharmony_ci    std::unique_ptr<ByteBuffer> profileBuffer =
78254aa6d63Sopenharmony_ci        std::make_unique<ByteBuffer>((char*)profileByte.data(), profileByte.size());
78354aa6d63Sopenharmony_ci    hapVerifyV2.VerifyAppPkcs7(pkcs7Context, *profileBuffer);
78454aa6d63Sopenharmony_ci    int32_t flag = hapVerifyV2.WriteVerifyOutput(pkcs7Context, profileVec, &options);
78554aa6d63Sopenharmony_ci
78654aa6d63Sopenharmony_ci    EXPECT_NE(flag, 0);
78754aa6d63Sopenharmony_ci}
78854aa6d63Sopenharmony_ci} // namespace SignatureTools
78954aa6d63Sopenharmony_ci} // namespace OHOS