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