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