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