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#include <chrono> 1654aa6d63Sopenharmony_ci#include <thread> 1754aa6d63Sopenharmony_ci#include <string> 1854aa6d63Sopenharmony_ci#include <filesystem> 1954aa6d63Sopenharmony_ci 2054aa6d63Sopenharmony_ci#include "gtest/gtest.h" 2154aa6d63Sopenharmony_ci#include "options.h" 2254aa6d63Sopenharmony_ci#include "sign_tool_service_impl.h" 2354aa6d63Sopenharmony_ci#include "nlohmann/json.hpp" 2454aa6d63Sopenharmony_ci#include "signer_factory.h" 2554aa6d63Sopenharmony_ci#include "profile_sign_tool.h" 2654aa6d63Sopenharmony_ci#include "params_run_tool.h" 2754aa6d63Sopenharmony_ci#include "pkcs7_data.h" 2854aa6d63Sopenharmony_ci#include "signer_config.h" 2954aa6d63Sopenharmony_ci#include "local_signer.h" 3054aa6d63Sopenharmony_ci#include "bc_pkcs7_generator.h" 3154aa6d63Sopenharmony_ci#include "bc_signeddata_generator.h" 3254aa6d63Sopenharmony_ci#include "profile_verify.h" 3354aa6d63Sopenharmony_ci#include "constant.h" 3454aa6d63Sopenharmony_ci#include "cms_utils.h" 3554aa6d63Sopenharmony_ci 3654aa6d63Sopenharmony_ciusing nlohmann::json; 3754aa6d63Sopenharmony_ci 3854aa6d63Sopenharmony_cinamespace OHOS { 3954aa6d63Sopenharmony_cinamespace SignatureTools { 4054aa6d63Sopenharmony_ci 4154aa6d63Sopenharmony_ci// sign profile使用的全局参数 4254aa6d63Sopenharmony_cistatic const std::string SIGN_PROFILE_MODE = "localSign"; 4354aa6d63Sopenharmony_cistatic const std::string SIGN_PROFILE_KEY_ALIAS = "oh-profile1-key-v1"; 4454aa6d63Sopenharmony_cistatic const std::string SIGN_PROFILE_PROFILE_CERT_FILE = "./signProfile/profile-release1.pem"; 4554aa6d63Sopenharmony_cistatic const std::string SIGN_PROFILE_SIGN_ALG = "SHA384withECDSA"; 4654aa6d63Sopenharmony_cistatic const std::string SIGN_PROFILE_KEY_STORE_FILE = "./signProfile/ohtest.p12"; 4754aa6d63Sopenharmony_cistatic const std::string SIGN_PROFILE_OUT_FILE = "./signProfile/signed-profile.p7b"; 4854aa6d63Sopenharmony_cistatic const std::string SIGN_PROFILE_IN_FILE = "./signProfile/profile.json"; 4954aa6d63Sopenharmony_ci 5054aa6d63Sopenharmony_cistatic const std::string SIGN_PROFILE_CERT_PEM = "./signProfile/profile-release1-cert.pem"; 5154aa6d63Sopenharmony_cistatic const std::string SIGN_PROFILE_REVERSE_PEM = "./signProfile/profile-release1-reverse.pem"; 5254aa6d63Sopenharmony_cistatic const std::string SIGN_PROFILE_DOUBLE_CERT_PEM = "./signProfile/profile-release1-invalid_cert_chain.pem"; 5354aa6d63Sopenharmony_cistatic const std::string SIGN_PROFILE_TMP_P7B = "./signProfile/tmp.p7b"; 5454aa6d63Sopenharmony_ci 5554aa6d63Sopenharmony_ci// verify profile 使用的全局参数 5654aa6d63Sopenharmony_cistatic const std::string VERIFY_PROFILE_IN_FILE = "./signProfile/app1-profile1.p7b"; 5754aa6d63Sopenharmony_cistatic const std::string VERIFY_PROFILE_OUT_FILE = "./signProfile/VerifyResult.json"; 5854aa6d63Sopenharmony_ci// sign app 使用全局参数 5954aa6d63Sopenharmony_cistatic const std::string SIGN_APP_MODE = "localSign"; 6054aa6d63Sopenharmony_cistatic const std::string SIGN_APP_KEY_ALIAS = "oh-app1-key-v1"; 6154aa6d63Sopenharmony_cistatic const std::string SIGN_APP_APP_CERT_FILE = "./signProfile/app-release1.pem"; 6254aa6d63Sopenharmony_cistatic const std::string SIGN_APP_PROFILE_FILE = "./signProfile/app1-profile1.p7b"; 6354aa6d63Sopenharmony_cistatic const std::string SIGN_APP_IN_FILE = "./signProfile/unsigned.hap"; 6454aa6d63Sopenharmony_cistatic const std::string SIGN_APP_IN_FILE_TXT = "./signProfile/unsigned.txt"; 6554aa6d63Sopenharmony_cistatic const std::string SIGN_APP_SIGN_ALG = "SHA256withECDSA"; 6654aa6d63Sopenharmony_cistatic const std::string SIGN_APP_KEY_STORE_FILE = "./signProfile/ohtest.p12"; 6754aa6d63Sopenharmony_cistatic const std::string SIGN_APP_OUT_FILE = "./signProfile/signed.hap"; 6854aa6d63Sopenharmony_ci 6954aa6d63Sopenharmony_ciclass ProfileTest : public testing::Test { 7054aa6d63Sopenharmony_cipublic: 7154aa6d63Sopenharmony_ci static void SetUpTestCase(void); 7254aa6d63Sopenharmony_ci static void TearDownTestCase(void); 7354aa6d63Sopenharmony_ci void SetUp()override; 7454aa6d63Sopenharmony_ci void TearDown()override; 7554aa6d63Sopenharmony_ci}; 7654aa6d63Sopenharmony_civoid ProfileTest::SetUpTestCase(void) 7754aa6d63Sopenharmony_ci{ 7854aa6d63Sopenharmony_ci std::filesystem::copy(SIGN_APP_IN_FILE_TXT, SIGN_APP_IN_FILE); 7954aa6d63Sopenharmony_ci} 8054aa6d63Sopenharmony_ci 8154aa6d63Sopenharmony_civoid ProfileTest::TearDownTestCase(void) 8254aa6d63Sopenharmony_ci{ 8354aa6d63Sopenharmony_ci std::filesystem::remove(SIGN_APP_IN_FILE); 8454aa6d63Sopenharmony_ci} 8554aa6d63Sopenharmony_ci 8654aa6d63Sopenharmony_civoid ProfileTest::SetUp() 8754aa6d63Sopenharmony_ci{ 8854aa6d63Sopenharmony_ci} 8954aa6d63Sopenharmony_ci 9054aa6d63Sopenharmony_civoid ProfileTest::TearDown() 9154aa6d63Sopenharmony_ci{ 9254aa6d63Sopenharmony_ci} 9354aa6d63Sopenharmony_ci 9454aa6d63Sopenharmony_ci/** 9554aa6d63Sopenharmony_ci * @tc.name: profile_test004 9654aa6d63Sopenharmony_ci * @tc.desc: Test function of Pkcs7Generator::GenerateSignedData() failed for empty content. 9754aa6d63Sopenharmony_ci * @tc.size: MEDIUM 9854aa6d63Sopenharmony_ci * @tc.type: FUNC 9954aa6d63Sopenharmony_ci * @tc.level Level 1 10054aa6d63Sopenharmony_ci * @tc.require: SR000H63TL 10154aa6d63Sopenharmony_ci */ 10254aa6d63Sopenharmony_ciHWTEST_F(ProfileTest, profile_test004, testing::ext::TestSize.Level1) 10354aa6d63Sopenharmony_ci{ 10454aa6d63Sopenharmony_ci std::string content; 10554aa6d63Sopenharmony_ci SignerConfig* config = nullptr; 10654aa6d63Sopenharmony_ci std::string ret; 10754aa6d63Sopenharmony_ci std::shared_ptr<Pkcs7Generator> generator = std::make_shared<BCPkcs7Generator>(); 10854aa6d63Sopenharmony_ci int result = generator->GenerateSignedData(content, config, ret); 10954aa6d63Sopenharmony_ci EXPECT_TRUE(result <= 0); 11054aa6d63Sopenharmony_ci} 11154aa6d63Sopenharmony_ci 11254aa6d63Sopenharmony_ci/** 11354aa6d63Sopenharmony_ci * @tc.name: profile_test005 11454aa6d63Sopenharmony_ci * @tc.desc: Test function of Pkcs7Generator::GenerateSignedData() failed for nullptr config. 11554aa6d63Sopenharmony_ci * @tc.size: MEDIUM 11654aa6d63Sopenharmony_ci * @tc.type: FUNC 11754aa6d63Sopenharmony_ci * @tc.level Level 1 11854aa6d63Sopenharmony_ci * @tc.require: SR000H63TL 11954aa6d63Sopenharmony_ci */ 12054aa6d63Sopenharmony_ciHWTEST_F(ProfileTest, profile_test005, testing::ext::TestSize.Level1) 12154aa6d63Sopenharmony_ci{ 12254aa6d63Sopenharmony_ci std::string content = "hello,world"; 12354aa6d63Sopenharmony_ci SignerConfig* config = nullptr; 12454aa6d63Sopenharmony_ci std::string ret; 12554aa6d63Sopenharmony_ci std::shared_ptr<Pkcs7Generator> generator = std::make_shared<BCPkcs7Generator>(); 12654aa6d63Sopenharmony_ci int result = generator->GenerateSignedData(content, config, ret); 12754aa6d63Sopenharmony_ci EXPECT_TRUE(result <= 0); 12854aa6d63Sopenharmony_ci} 12954aa6d63Sopenharmony_ci 13054aa6d63Sopenharmony_ci/** 13154aa6d63Sopenharmony_ci * @tc.name: profile_test006 13254aa6d63Sopenharmony_ci * @tc.desc: Test function of Pkcs7Generator::GenerateSignedData() failed for nullptr signer. 13354aa6d63Sopenharmony_ci * @tc.size: MEDIUM 13454aa6d63Sopenharmony_ci * @tc.type: FUNC 13554aa6d63Sopenharmony_ci * @tc.level Level 1 13654aa6d63Sopenharmony_ci * @tc.require: SR000H63TL 13754aa6d63Sopenharmony_ci */ 13854aa6d63Sopenharmony_ciHWTEST_F(ProfileTest, profile_test006, testing::ext::TestSize.Level1) 13954aa6d63Sopenharmony_ci{ 14054aa6d63Sopenharmony_ci Options options; 14154aa6d63Sopenharmony_ci options[Options::MODE] = SIGN_APP_MODE; 14254aa6d63Sopenharmony_ci options[Options::KEY_ALIAS] = SIGN_APP_KEY_ALIAS; 14354aa6d63Sopenharmony_ci options[Options::APP_CERT_FILE] = SIGN_APP_APP_CERT_FILE; 14454aa6d63Sopenharmony_ci options[Options::PROFILE_FILE] = SIGN_APP_PROFILE_FILE; 14554aa6d63Sopenharmony_ci options[Options::IN_FILE] = SIGN_APP_IN_FILE; 14654aa6d63Sopenharmony_ci options[Options::SIGN_ALG] = SIGN_APP_SIGN_ALG; 14754aa6d63Sopenharmony_ci options[Options::KEY_STORE_FILE] = ""; 14854aa6d63Sopenharmony_ci options[Options::OUT_FILE] = SIGN_APP_OUT_FILE; 14954aa6d63Sopenharmony_ci char keyStorePwd[] = "123456"; 15054aa6d63Sopenharmony_ci char keypwd[] = "123456"; 15154aa6d63Sopenharmony_ci options[Options::KEY_RIGHTS] = keyStorePwd; 15254aa6d63Sopenharmony_ci options[Options::KEY_STORE_RIGHTS] = keypwd; 15354aa6d63Sopenharmony_ci 15454aa6d63Sopenharmony_ci // config设置算法 signer 15554aa6d63Sopenharmony_ci SignerConfig config; 15654aa6d63Sopenharmony_ci config.SetOptions(&options); 15754aa6d63Sopenharmony_ci SignatureAlgorithmHelper algClass; 15854aa6d63Sopenharmony_ci std::vector<SignatureAlgorithmHelper> sigs; 15954aa6d63Sopenharmony_ci sigs.resize(1); 16054aa6d63Sopenharmony_ci sigs[0].m_id = SignatureAlgorithmId::ECDSA_WITH_SHA256; 16154aa6d63Sopenharmony_ci config.SetSignatureAlgorithms(sigs); 16254aa6d63Sopenharmony_ci 16354aa6d63Sopenharmony_ci std::string content = "digest content"; 16454aa6d63Sopenharmony_ci std::string signedData; 16554aa6d63Sopenharmony_ci std::shared_ptr<Pkcs7Generator> pkcs7Generator = std::make_shared<BCPkcs7Generator>(); 16654aa6d63Sopenharmony_ci int result = pkcs7Generator->GenerateSignedData(content, &config, signedData); 16754aa6d63Sopenharmony_ci EXPECT_TRUE(result < 0); 16854aa6d63Sopenharmony_ci} 16954aa6d63Sopenharmony_ci 17054aa6d63Sopenharmony_ci/** 17154aa6d63Sopenharmony_ci * @tc.name: profile_test007 17254aa6d63Sopenharmony_ci * @tc.desc: Test function of Pkcs7Generator::GenerateSignedData() failed for generate pkcs7 block. 17354aa6d63Sopenharmony_ci * @tc.size: MEDIUM 17454aa6d63Sopenharmony_ci * @tc.type: FUNC 17554aa6d63Sopenharmony_ci * @tc.level Level 1 17654aa6d63Sopenharmony_ci * @tc.require: SR000H63TL 17754aa6d63Sopenharmony_ci */ 17854aa6d63Sopenharmony_ciHWTEST_F(ProfileTest, profile_test007, testing::ext::TestSize.Level1) 17954aa6d63Sopenharmony_ci{ 18054aa6d63Sopenharmony_ci Options options; 18154aa6d63Sopenharmony_ci options[Options::MODE] = SIGN_APP_MODE; 18254aa6d63Sopenharmony_ci options[Options::KEY_ALIAS] = SIGN_APP_KEY_ALIAS; 18354aa6d63Sopenharmony_ci options[Options::APP_CERT_FILE] = SIGN_APP_APP_CERT_FILE; 18454aa6d63Sopenharmony_ci options[Options::PROFILE_FILE] = SIGN_APP_PROFILE_FILE; 18554aa6d63Sopenharmony_ci options[Options::IN_FILE] = SIGN_APP_IN_FILE; 18654aa6d63Sopenharmony_ci options[Options::SIGN_ALG] = SIGN_APP_SIGN_ALG; 18754aa6d63Sopenharmony_ci options[Options::KEY_STORE_FILE] = SIGN_PROFILE_KEY_STORE_FILE; 18854aa6d63Sopenharmony_ci options[Options::OUT_FILE] = SIGN_APP_OUT_FILE; 18954aa6d63Sopenharmony_ci char keyStorePwd[] = "123456"; 19054aa6d63Sopenharmony_ci char keypwd[] = "123456"; 19154aa6d63Sopenharmony_ci options[Options::KEY_RIGHTS] = keyStorePwd; 19254aa6d63Sopenharmony_ci options[Options::KEY_STORE_RIGHTS] = keypwd; 19354aa6d63Sopenharmony_ci 19454aa6d63Sopenharmony_ci // config设置算法 signer 19554aa6d63Sopenharmony_ci SignerConfig config; 19654aa6d63Sopenharmony_ci config.SetOptions(&options); 19754aa6d63Sopenharmony_ci SignatureAlgorithmHelper algClass; 19854aa6d63Sopenharmony_ci std::vector<SignatureAlgorithmHelper> sigs; 19954aa6d63Sopenharmony_ci sigs.resize(1); 20054aa6d63Sopenharmony_ci sigs[0].m_id = SignatureAlgorithmId::DSA_WITH_SHA512; 20154aa6d63Sopenharmony_ci config.SetSignatureAlgorithms(sigs); 20254aa6d63Sopenharmony_ci 20354aa6d63Sopenharmony_ci std::string content = "digest content"; 20454aa6d63Sopenharmony_ci std::string signedData; 20554aa6d63Sopenharmony_ci std::shared_ptr<Pkcs7Generator> pkcs7Generator = std::make_shared<BCPkcs7Generator>(); 20654aa6d63Sopenharmony_ci int result = pkcs7Generator->GenerateSignedData(content, &config, signedData); 20754aa6d63Sopenharmony_ci EXPECT_TRUE(result < 0); 20854aa6d63Sopenharmony_ci} 20954aa6d63Sopenharmony_ci 21054aa6d63Sopenharmony_ci/** 21154aa6d63Sopenharmony_ci * @tc.name: profile_test008 21254aa6d63Sopenharmony_ci * @tc.desc: Test function of Pkcs7Generator::GenerateSignedData() failed for invalid certchain. 21354aa6d63Sopenharmony_ci * @tc.size: MEDIUM 21454aa6d63Sopenharmony_ci * @tc.type: FUNC 21554aa6d63Sopenharmony_ci * @tc.level Level 1 21654aa6d63Sopenharmony_ci * @tc.require: SR000H63TL 21754aa6d63Sopenharmony_ci */ 21854aa6d63Sopenharmony_ciHWTEST_F(ProfileTest, profile_test008, testing::ext::TestSize.Level1) 21954aa6d63Sopenharmony_ci{ 22054aa6d63Sopenharmony_ci Options options; 22154aa6d63Sopenharmony_ci options[Options::MODE] = SIGN_APP_MODE; 22254aa6d63Sopenharmony_ci options[Options::KEY_ALIAS] = SIGN_PROFILE_KEY_ALIAS; 22354aa6d63Sopenharmony_ci options[Options::APP_CERT_FILE] = SIGN_PROFILE_DOUBLE_CERT_PEM; 22454aa6d63Sopenharmony_ci options[Options::PROFILE_FILE] = SIGN_APP_PROFILE_FILE; 22554aa6d63Sopenharmony_ci options[Options::IN_FILE] = SIGN_APP_IN_FILE; 22654aa6d63Sopenharmony_ci options[Options::SIGN_ALG] = SIGN_APP_SIGN_ALG; 22754aa6d63Sopenharmony_ci options[Options::KEY_STORE_FILE] = SIGN_PROFILE_KEY_STORE_FILE; 22854aa6d63Sopenharmony_ci options[Options::OUT_FILE] = SIGN_APP_OUT_FILE; 22954aa6d63Sopenharmony_ci char keyStorePwd[] = "123456"; 23054aa6d63Sopenharmony_ci char keypwd[] = "123456"; 23154aa6d63Sopenharmony_ci options[Options::KEY_RIGHTS] = keyStorePwd; 23254aa6d63Sopenharmony_ci options[Options::KEY_STORE_RIGHTS] = keypwd; 23354aa6d63Sopenharmony_ci 23454aa6d63Sopenharmony_ci // config设置算法 signer 23554aa6d63Sopenharmony_ci SignerConfig config; 23654aa6d63Sopenharmony_ci config.SetOptions(&options); 23754aa6d63Sopenharmony_ci SignatureAlgorithmHelper algClass; 23854aa6d63Sopenharmony_ci std::vector<SignatureAlgorithmHelper> sigs; 23954aa6d63Sopenharmony_ci sigs.resize(1); 24054aa6d63Sopenharmony_ci sigs[0].m_id = SignatureAlgorithmId::ECDSA_WITH_SHA256; 24154aa6d63Sopenharmony_ci config.SetSignatureAlgorithms(sigs); 24254aa6d63Sopenharmony_ci 24354aa6d63Sopenharmony_ci std::string content = "digest content"; 24454aa6d63Sopenharmony_ci std::string signedData; 24554aa6d63Sopenharmony_ci std::shared_ptr<Pkcs7Generator> pkcs7Generator = std::make_shared<BCPkcs7Generator>(); 24654aa6d63Sopenharmony_ci int result = pkcs7Generator->GenerateSignedData(content, &config, signedData); 24754aa6d63Sopenharmony_ci EXPECT_TRUE(result < 0); 24854aa6d63Sopenharmony_ci} 24954aa6d63Sopenharmony_ci 25054aa6d63Sopenharmony_ci/** 25154aa6d63Sopenharmony_ci * @tc.name: profile_test009 25254aa6d63Sopenharmony_ci * @tc.desc: Test function of SignedDataGenerator::GenerateSignedData() failed for invalid sigAlg. 25354aa6d63Sopenharmony_ci * @tc.size: MEDIUM 25454aa6d63Sopenharmony_ci * @tc.type: FUNC 25554aa6d63Sopenharmony_ci * @tc.level Level 1 25654aa6d63Sopenharmony_ci * @tc.require: SR000H63TL 25754aa6d63Sopenharmony_ci */ 25854aa6d63Sopenharmony_ciHWTEST_F(ProfileTest, profile_test009, testing::ext::TestSize.Level1) 25954aa6d63Sopenharmony_ci{ 26054aa6d63Sopenharmony_ci Options options; 26154aa6d63Sopenharmony_ci options[Options::MODE] = SIGN_APP_MODE; 26254aa6d63Sopenharmony_ci options[Options::KEY_ALIAS] = SIGN_APP_KEY_ALIAS; 26354aa6d63Sopenharmony_ci options[Options::APP_CERT_FILE] = SIGN_APP_APP_CERT_FILE; 26454aa6d63Sopenharmony_ci options[Options::PROFILE_FILE] = SIGN_APP_PROFILE_FILE; 26554aa6d63Sopenharmony_ci options[Options::IN_FILE] = SIGN_APP_IN_FILE; 26654aa6d63Sopenharmony_ci options[Options::SIGN_ALG] = SIGN_APP_SIGN_ALG; 26754aa6d63Sopenharmony_ci options[Options::KEY_STORE_FILE] = SIGN_APP_KEY_STORE_FILE; 26854aa6d63Sopenharmony_ci options[Options::OUT_FILE] = SIGN_APP_OUT_FILE; 26954aa6d63Sopenharmony_ci char keyStorePwd[] = "123456"; 27054aa6d63Sopenharmony_ci char keypwd[] = "123456"; 27154aa6d63Sopenharmony_ci options[Options::KEY_RIGHTS] = keyStorePwd; 27254aa6d63Sopenharmony_ci options[Options::KEY_STORE_RIGHTS] = keypwd; 27354aa6d63Sopenharmony_ci 27454aa6d63Sopenharmony_ci // config设置算法 signer 27554aa6d63Sopenharmony_ci SignerConfig config; 27654aa6d63Sopenharmony_ci config.SetOptions(&options); 27754aa6d63Sopenharmony_ci SignatureAlgorithmHelper algClass; 27854aa6d63Sopenharmony_ci std::vector<SignatureAlgorithmHelper> sigs; 27954aa6d63Sopenharmony_ci sigs.resize(1); 28054aa6d63Sopenharmony_ci sigs[0].m_id = SignatureAlgorithmId::ECDSA_WITH_SHA512; 28154aa6d63Sopenharmony_ci config.SetSignatureAlgorithms(sigs); 28254aa6d63Sopenharmony_ci 28354aa6d63Sopenharmony_ci std::string content = "digest content"; 28454aa6d63Sopenharmony_ci std::string signedData; 28554aa6d63Sopenharmony_ci std::shared_ptr<BCSignedDataGenerator> signedDataGenerator = 28654aa6d63Sopenharmony_ci std::make_shared<BCSignedDataGenerator>(); 28754aa6d63Sopenharmony_ci signedDataGenerator->SetOwnerId(OWNERID_OID); 28854aa6d63Sopenharmony_ci int result = signedDataGenerator->GenerateSignedData(content, &config, signedData); 28954aa6d63Sopenharmony_ci EXPECT_TRUE(result < 0); 29054aa6d63Sopenharmony_ci} 29154aa6d63Sopenharmony_ci 29254aa6d63Sopenharmony_ci/** 29354aa6d63Sopenharmony_ci * @tc.name: profile_test010 29454aa6d63Sopenharmony_ci * @tc.desc: Test function of SignedDataGenerator::GenerateSignedData() failed for invalid certchain. 29554aa6d63Sopenharmony_ci * @tc.size: MEDIUM 29654aa6d63Sopenharmony_ci * @tc.type: FUNC 29754aa6d63Sopenharmony_ci * @tc.level Level 1 29854aa6d63Sopenharmony_ci * @tc.require: SR000H63TL 29954aa6d63Sopenharmony_ci */ 30054aa6d63Sopenharmony_ciHWTEST_F(ProfileTest, profile_test010, testing::ext::TestSize.Level1) 30154aa6d63Sopenharmony_ci{ 30254aa6d63Sopenharmony_ci Options options; 30354aa6d63Sopenharmony_ci options[Options::MODE] = SIGN_APP_MODE; 30454aa6d63Sopenharmony_ci options[Options::KEY_ALIAS] = SIGN_PROFILE_KEY_ALIAS; 30554aa6d63Sopenharmony_ci options[Options::APP_CERT_FILE] = SIGN_PROFILE_DOUBLE_CERT_PEM; 30654aa6d63Sopenharmony_ci options[Options::PROFILE_FILE] = SIGN_APP_PROFILE_FILE; 30754aa6d63Sopenharmony_ci options[Options::IN_FILE] = SIGN_APP_IN_FILE; 30854aa6d63Sopenharmony_ci options[Options::SIGN_ALG] = SIGN_APP_SIGN_ALG; 30954aa6d63Sopenharmony_ci options[Options::KEY_STORE_FILE] = SIGN_PROFILE_KEY_STORE_FILE; 31054aa6d63Sopenharmony_ci options[Options::OUT_FILE] = SIGN_APP_OUT_FILE; 31154aa6d63Sopenharmony_ci char keyStorePwd[] = "123456"; 31254aa6d63Sopenharmony_ci char keypwd[] = "123456"; 31354aa6d63Sopenharmony_ci options[Options::KEY_RIGHTS] = keyStorePwd; 31454aa6d63Sopenharmony_ci options[Options::KEY_STORE_RIGHTS] = keypwd; 31554aa6d63Sopenharmony_ci 31654aa6d63Sopenharmony_ci // config设置算法 signer 31754aa6d63Sopenharmony_ci SignerConfig config; 31854aa6d63Sopenharmony_ci config.SetOptions(&options); 31954aa6d63Sopenharmony_ci SignatureAlgorithmHelper algClass; 32054aa6d63Sopenharmony_ci std::vector<SignatureAlgorithmHelper> sigs; 32154aa6d63Sopenharmony_ci sigs.resize(1); 32254aa6d63Sopenharmony_ci sigs[0].m_id = SignatureAlgorithmId::ECDSA_WITH_SHA256; 32354aa6d63Sopenharmony_ci config.SetSignatureAlgorithms(sigs); 32454aa6d63Sopenharmony_ci 32554aa6d63Sopenharmony_ci std::string content = "digest content"; 32654aa6d63Sopenharmony_ci std::string signedData; 32754aa6d63Sopenharmony_ci std::shared_ptr<BCSignedDataGenerator> signedDataGenerator = 32854aa6d63Sopenharmony_ci std::make_shared<BCSignedDataGenerator>(); 32954aa6d63Sopenharmony_ci signedDataGenerator->SetOwnerId("ownerID str"); 33054aa6d63Sopenharmony_ci int result = signedDataGenerator->GenerateSignedData(content, &config, signedData); 33154aa6d63Sopenharmony_ci EXPECT_TRUE(result < 0); 33254aa6d63Sopenharmony_ci} 33354aa6d63Sopenharmony_ci 33454aa6d63Sopenharmony_ci/** 33554aa6d63Sopenharmony_ci * @tc.name: profile_test011 33654aa6d63Sopenharmony_ci * @tc.desc: Test function of Pkcs7Data::Verify() failed for invalid certchain. 33754aa6d63Sopenharmony_ci * @tc.size: MEDIUM 33854aa6d63Sopenharmony_ci * @tc.type: FUNC 33954aa6d63Sopenharmony_ci * @tc.level Level 1 34054aa6d63Sopenharmony_ci * @tc.require: SR000H63TL 34154aa6d63Sopenharmony_ci */ 34254aa6d63Sopenharmony_ciHWTEST_F(ProfileTest, profile_test011, testing::ext::TestSize.Level1) 34354aa6d63Sopenharmony_ci{ 34454aa6d63Sopenharmony_ci std::string content = "signed content data"; 34554aa6d63Sopenharmony_ci Options options; 34654aa6d63Sopenharmony_ci char keyStorePwd[] = "123456"; 34754aa6d63Sopenharmony_ci char keypwd[] = "123456"; 34854aa6d63Sopenharmony_ci options[Options::KEY_ALIAS] = SIGN_PROFILE_KEY_ALIAS; 34954aa6d63Sopenharmony_ci options[Options::MODE] = SIGN_PROFILE_MODE; 35054aa6d63Sopenharmony_ci options[Options::PROFILE_CERT_FILE] = SIGN_PROFILE_PROFILE_CERT_FILE; 35154aa6d63Sopenharmony_ci options[Options::SIGN_ALG] = SIGN_PROFILE_SIGN_ALG; 35254aa6d63Sopenharmony_ci options[Options::KEY_STORE_FILE] = SIGN_PROFILE_KEY_STORE_FILE; 35354aa6d63Sopenharmony_ci options[Options::OUT_FILE] = SIGN_PROFILE_OUT_FILE; 35454aa6d63Sopenharmony_ci options[Options::IN_FILE] = SIGN_PROFILE_IN_FILE; 35554aa6d63Sopenharmony_ci options[Options::KEY_RIGHTS] = keypwd; 35654aa6d63Sopenharmony_ci options[Options::KEY_STORE_RIGHTS] = keyStorePwd; 35754aa6d63Sopenharmony_ci 35854aa6d63Sopenharmony_ci LocalizationAdapter adapter(&options); 35954aa6d63Sopenharmony_ci SignerFactory factory; 36054aa6d63Sopenharmony_ci std::shared_ptr<Signer> signer = factory.GetSigner(adapter); 36154aa6d63Sopenharmony_ci PKCS7Data p7; 36254aa6d63Sopenharmony_ci std::string p7b; 36354aa6d63Sopenharmony_ci PKCS7* pkcs7 = nullptr; 36454aa6d63Sopenharmony_ci int result = p7.Sign(content, signer, "SHA384withECDSA", p7b); 36554aa6d63Sopenharmony_ci EXPECT_EQ(result, 0); 36654aa6d63Sopenharmony_ci const unsigned char* p = reinterpret_cast<const unsigned char*>(p7b.data()); 36754aa6d63Sopenharmony_ci pkcs7 = d2i_PKCS7(nullptr, &p, static_cast<long>(p7b.size())); 36854aa6d63Sopenharmony_ci STACK_OF(X509)* certs = pkcs7->d.sign->cert; 36954aa6d63Sopenharmony_ci int num = 1; 37054aa6d63Sopenharmony_ci while (sk_X509_num(certs) > num) { 37154aa6d63Sopenharmony_ci X509* cert = sk_X509_delete(certs, sk_X509_num(certs) - 1); 37254aa6d63Sopenharmony_ci X509_free(cert); 37354aa6d63Sopenharmony_ci } 37454aa6d63Sopenharmony_ci sk_X509_push(certs, sk_X509_value(certs, 0)); 37554aa6d63Sopenharmony_ci X509_up_ref(sk_X509_value(certs, 0)); 37654aa6d63Sopenharmony_ci unsigned char* out = nullptr; 37754aa6d63Sopenharmony_ci int len = 0; 37854aa6d63Sopenharmony_ci len = i2d_PKCS7(pkcs7, &out); 37954aa6d63Sopenharmony_ci p7b.assign(out, out + len); 38054aa6d63Sopenharmony_ci result = p7.Parse(p7b); 38154aa6d63Sopenharmony_ci EXPECT_EQ(result, 0); 38254aa6d63Sopenharmony_ci result = p7.Verify(); 38354aa6d63Sopenharmony_ci PKCS7_free(pkcs7); 38454aa6d63Sopenharmony_ci EXPECT_TRUE(result < 0); 38554aa6d63Sopenharmony_ci} 38654aa6d63Sopenharmony_ci 38754aa6d63Sopenharmony_ci/** 38854aa6d63Sopenharmony_ci * @tc.name: profile_test013 38954aa6d63Sopenharmony_ci * @tc.desc: Test function of Pkcs7Data::Verify() failed for invalid certchain. 39054aa6d63Sopenharmony_ci * @tc.size: MEDIUM 39154aa6d63Sopenharmony_ci * @tc.type: FUNC 39254aa6d63Sopenharmony_ci * @tc.level Level 1 39354aa6d63Sopenharmony_ci * @tc.require: SR000H63TL 39454aa6d63Sopenharmony_ci */ 39554aa6d63Sopenharmony_ciHWTEST_F(ProfileTest, profile_test013, testing::ext::TestSize.Level1) 39654aa6d63Sopenharmony_ci{ 39754aa6d63Sopenharmony_ci std::string content = "signed content data"; 39854aa6d63Sopenharmony_ci Options options; 39954aa6d63Sopenharmony_ci char keyStorePwd[] = "123456"; 40054aa6d63Sopenharmony_ci char keypwd[] = "123456"; 40154aa6d63Sopenharmony_ci options[Options::KEY_ALIAS] = SIGN_PROFILE_KEY_ALIAS; 40254aa6d63Sopenharmony_ci options[Options::MODE] = SIGN_PROFILE_MODE; 40354aa6d63Sopenharmony_ci options[Options::PROFILE_CERT_FILE] = SIGN_PROFILE_PROFILE_CERT_FILE; 40454aa6d63Sopenharmony_ci options[Options::SIGN_ALG] = SIGN_PROFILE_SIGN_ALG; 40554aa6d63Sopenharmony_ci options[Options::KEY_STORE_FILE] = SIGN_PROFILE_KEY_STORE_FILE; 40654aa6d63Sopenharmony_ci options[Options::OUT_FILE] = SIGN_PROFILE_OUT_FILE; 40754aa6d63Sopenharmony_ci options[Options::IN_FILE] = SIGN_PROFILE_IN_FILE; 40854aa6d63Sopenharmony_ci options[Options::KEY_RIGHTS] = keypwd; 40954aa6d63Sopenharmony_ci options[Options::KEY_STORE_RIGHTS] = keyStorePwd; 41054aa6d63Sopenharmony_ci 41154aa6d63Sopenharmony_ci LocalizationAdapter adapter(&options); 41254aa6d63Sopenharmony_ci SignerFactory factory; 41354aa6d63Sopenharmony_ci std::shared_ptr<Signer> signer = factory.GetSigner(adapter); 41454aa6d63Sopenharmony_ci PKCS7Data p7; 41554aa6d63Sopenharmony_ci std::string p7b; 41654aa6d63Sopenharmony_ci PKCS7* pkcs7 = nullptr; 41754aa6d63Sopenharmony_ci int result = p7.Sign(content, signer, "SHA384withECDSA", p7b); 41854aa6d63Sopenharmony_ci EXPECT_EQ(result, 0); 41954aa6d63Sopenharmony_ci const unsigned char* p = reinterpret_cast<const unsigned char*>(p7b.data()); 42054aa6d63Sopenharmony_ci pkcs7 = d2i_PKCS7(nullptr, &p, static_cast<long>(p7b.size())); 42154aa6d63Sopenharmony_ci STACK_OF(X509)* certs = pkcs7->d.sign->cert; 42254aa6d63Sopenharmony_ci sk_X509_delete(certs, 2); 42354aa6d63Sopenharmony_ci unsigned char* out = nullptr; 42454aa6d63Sopenharmony_ci int len = 0; 42554aa6d63Sopenharmony_ci len = i2d_PKCS7(pkcs7, &out); 42654aa6d63Sopenharmony_ci p7b.assign(out, out + len); 42754aa6d63Sopenharmony_ci result = p7.Parse(p7b); 42854aa6d63Sopenharmony_ci EXPECT_EQ(result, 0); 42954aa6d63Sopenharmony_ci result = p7.Verify(); 43054aa6d63Sopenharmony_ci PKCS7_free(pkcs7); 43154aa6d63Sopenharmony_ci EXPECT_TRUE(result < 0); 43254aa6d63Sopenharmony_ci} 43354aa6d63Sopenharmony_ci 43454aa6d63Sopenharmony_ci/** 43554aa6d63Sopenharmony_ci * @tc.name: profile_test014 43654aa6d63Sopenharmony_ci * @tc.desc: Test function of Pkcs7Data::Verify() failed for invalid certchain. 43754aa6d63Sopenharmony_ci * @tc.size: MEDIUM 43854aa6d63Sopenharmony_ci * @tc.type: FUNC 43954aa6d63Sopenharmony_ci * @tc.level Level 1 44054aa6d63Sopenharmony_ci * @tc.require: SR000H63TL 44154aa6d63Sopenharmony_ci */ 44254aa6d63Sopenharmony_ciHWTEST_F(ProfileTest, profile_test014, testing::ext::TestSize.Level1) 44354aa6d63Sopenharmony_ci{ 44454aa6d63Sopenharmony_ci std::string content = "signed content data"; 44554aa6d63Sopenharmony_ci Options options; 44654aa6d63Sopenharmony_ci char keyStorePwd[] = "123456"; 44754aa6d63Sopenharmony_ci char keypwd[] = "123456"; 44854aa6d63Sopenharmony_ci options[Options::KEY_ALIAS] = SIGN_PROFILE_KEY_ALIAS; 44954aa6d63Sopenharmony_ci options[Options::MODE] = SIGN_PROFILE_MODE; 45054aa6d63Sopenharmony_ci options[Options::PROFILE_CERT_FILE] = SIGN_PROFILE_PROFILE_CERT_FILE; 45154aa6d63Sopenharmony_ci options[Options::SIGN_ALG] = SIGN_PROFILE_SIGN_ALG; 45254aa6d63Sopenharmony_ci options[Options::KEY_STORE_FILE] = SIGN_PROFILE_KEY_STORE_FILE; 45354aa6d63Sopenharmony_ci options[Options::OUT_FILE] = SIGN_PROFILE_OUT_FILE; 45454aa6d63Sopenharmony_ci options[Options::IN_FILE] = SIGN_PROFILE_IN_FILE; 45554aa6d63Sopenharmony_ci options[Options::KEY_RIGHTS] = keypwd; 45654aa6d63Sopenharmony_ci options[Options::KEY_STORE_RIGHTS] = keyStorePwd; 45754aa6d63Sopenharmony_ci 45854aa6d63Sopenharmony_ci LocalizationAdapter adapter(&options); 45954aa6d63Sopenharmony_ci SignerFactory factory; 46054aa6d63Sopenharmony_ci std::shared_ptr<Signer> signer = factory.GetSigner(adapter); 46154aa6d63Sopenharmony_ci PKCS7Data p7; 46254aa6d63Sopenharmony_ci std::string p7b; 46354aa6d63Sopenharmony_ci PKCS7* pkcs7 = nullptr; 46454aa6d63Sopenharmony_ci int result = p7.Sign(content, signer, "SHA384withECDSA", p7b); 46554aa6d63Sopenharmony_ci EXPECT_EQ(result, 0); 46654aa6d63Sopenharmony_ci const unsigned char* p = reinterpret_cast<const unsigned char*>(p7b.data()); 46754aa6d63Sopenharmony_ci pkcs7 = d2i_PKCS7(nullptr, &p, static_cast<long>(p7b.size())); 46854aa6d63Sopenharmony_ci STACK_OF(X509)* certs = pkcs7->d.sign->cert; 46954aa6d63Sopenharmony_ci sk_X509_delete(certs, 2); 47054aa6d63Sopenharmony_ci sk_X509_push(certs, sk_X509_value(certs, 1)); 47154aa6d63Sopenharmony_ci X509_up_ref(sk_X509_value(certs, 1)); 47254aa6d63Sopenharmony_ci PKCS7Data::PrintCertChainSub(certs); 47354aa6d63Sopenharmony_ci unsigned char* out = nullptr; 47454aa6d63Sopenharmony_ci int len = 0; 47554aa6d63Sopenharmony_ci len = i2d_PKCS7(pkcs7, &out); 47654aa6d63Sopenharmony_ci p7b.assign(out, out + len); 47754aa6d63Sopenharmony_ci result = p7.Parse(p7b); 47854aa6d63Sopenharmony_ci PKCS7Data::PrintCertChainSub(certs); 47954aa6d63Sopenharmony_ci EXPECT_EQ(result, 0); 48054aa6d63Sopenharmony_ci result = p7.Verify(); 48154aa6d63Sopenharmony_ci PKCS7_free(pkcs7); 48254aa6d63Sopenharmony_ci EXPECT_TRUE(result < 0); 48354aa6d63Sopenharmony_ci} 48454aa6d63Sopenharmony_ci 48554aa6d63Sopenharmony_ci/** 48654aa6d63Sopenharmony_ci * @tc.name: profile_test015 48754aa6d63Sopenharmony_ci * @tc.desc: Test function of Provision operator ==() interface . 48854aa6d63Sopenharmony_ci * @tc.size: MEDIUM 48954aa6d63Sopenharmony_ci * @tc.type: FUNC 49054aa6d63Sopenharmony_ci * @tc.level Level 1 49154aa6d63Sopenharmony_ci * @tc.require: SR000H63TL 49254aa6d63Sopenharmony_ci */ 49354aa6d63Sopenharmony_ciHWTEST_F(ProfileTest, profile_test015, testing::ext::TestSize.Level1) 49454aa6d63Sopenharmony_ci{ 49554aa6d63Sopenharmony_ci ProfileInfo* info = nullptr; 49654aa6d63Sopenharmony_ci ProfileInfo info2; 49754aa6d63Sopenharmony_ci info = &info2; 49854aa6d63Sopenharmony_ci info2 = *info; 49954aa6d63Sopenharmony_ci EXPECT_EQ(info2.profileBlockLength, info->profileBlockLength); 50054aa6d63Sopenharmony_ci} 50154aa6d63Sopenharmony_ci 50254aa6d63Sopenharmony_ci/** 50354aa6d63Sopenharmony_ci * @tc.name: profile_test016 50454aa6d63Sopenharmony_ci * @tc.desc: Test function of CmsUtils::VerifySignDataWithUnsignedDataDigest() failed for not matched unsigned data. 50554aa6d63Sopenharmony_ci * @tc.size: MEDIUM 50654aa6d63Sopenharmony_ci * @tc.type: FUNC 50754aa6d63Sopenharmony_ci * @tc.level Level 1 50854aa6d63Sopenharmony_ci * @tc.require: SR000H63TL 50954aa6d63Sopenharmony_ci */ 51054aa6d63Sopenharmony_ciHWTEST_F(ProfileTest, profile_test016, testing::ext::TestSize.Level1) 51154aa6d63Sopenharmony_ci{ 51254aa6d63Sopenharmony_ci Options options; 51354aa6d63Sopenharmony_ci std::string mode = SIGN_PROFILE_MODE; 51454aa6d63Sopenharmony_ci std::string keyAlias = SIGN_PROFILE_KEY_ALIAS; 51554aa6d63Sopenharmony_ci std::string profileCertFile = SIGN_PROFILE_PROFILE_CERT_FILE; 51654aa6d63Sopenharmony_ci std::string signAlg = SIGN_PROFILE_SIGN_ALG; 51754aa6d63Sopenharmony_ci std::string keystoreFile = SIGN_PROFILE_KEY_STORE_FILE; 51854aa6d63Sopenharmony_ci std::string outFile = SIGN_PROFILE_OUT_FILE; 51954aa6d63Sopenharmony_ci std::string inFile = SIGN_PROFILE_IN_FILE; 52054aa6d63Sopenharmony_ci char keyStorePwd[] = "123456"; 52154aa6d63Sopenharmony_ci char keypwd[] = "123456"; 52254aa6d63Sopenharmony_ci options[Options::KEY_ALIAS] = keyAlias; 52354aa6d63Sopenharmony_ci options[Options::MODE] = mode; 52454aa6d63Sopenharmony_ci options[Options::PROFILE_CERT_FILE] = profileCertFile; 52554aa6d63Sopenharmony_ci options[Options::SIGN_ALG] = signAlg; 52654aa6d63Sopenharmony_ci options[Options::KEY_STORE_FILE] = keystoreFile; 52754aa6d63Sopenharmony_ci options[Options::OUT_FILE] = outFile; 52854aa6d63Sopenharmony_ci options[Options::IN_FILE] = inFile; 52954aa6d63Sopenharmony_ci options[Options::KEY_RIGHTS] = keypwd; 53054aa6d63Sopenharmony_ci options[Options::KEY_STORE_RIGHTS] = keyStorePwd; 53154aa6d63Sopenharmony_ci 53254aa6d63Sopenharmony_ci LocalizationAdapter adapter(&options); 53354aa6d63Sopenharmony_ci std::string content = "json content"; 53454aa6d63Sopenharmony_ci std::string ret; 53554aa6d63Sopenharmony_ci int result = ProfileSignTool::GenerateP7b(adapter, content, ret); 53654aa6d63Sopenharmony_ci EXPECT_EQ(result, 0); 53754aa6d63Sopenharmony_ci std::vector<int8_t> signedData(ret.begin(), ret.end()); 53854aa6d63Sopenharmony_ci std::string data = "hello,world"; 53954aa6d63Sopenharmony_ci std::vector<int8_t> unsignedData(data.begin(), data.end()); 54054aa6d63Sopenharmony_ci EXPECT_EQ(CmsUtils::VerifySignDataWithUnsignedDataDigest(unsignedData, signedData), false); 54154aa6d63Sopenharmony_ci} 54254aa6d63Sopenharmony_ci 54354aa6d63Sopenharmony_ci/** 54454aa6d63Sopenharmony_ci * @tc.name: profile_test017 54554aa6d63Sopenharmony_ci * @tc.desc: Test function of PKCS7Data::SortX509Stack() failed for cert count is 0. 54654aa6d63Sopenharmony_ci * @tc.size: MEDIUM 54754aa6d63Sopenharmony_ci * @tc.type: FUNC 54854aa6d63Sopenharmony_ci * @tc.level Level 1 54954aa6d63Sopenharmony_ci * @tc.require: SR000H63TL 55054aa6d63Sopenharmony_ci */ 55154aa6d63Sopenharmony_ciHWTEST_F(ProfileTest, test017, testing::ext::TestSize.Level1) 55254aa6d63Sopenharmony_ci{ 55354aa6d63Sopenharmony_ci STACK_OF(X509)* certs = sk_X509_new(nullptr); 55454aa6d63Sopenharmony_ci EXPECT_TRUE(PKCS7Data::SortX509Stack(certs) < 0); 55554aa6d63Sopenharmony_ci sk_X509_free(certs); 55654aa6d63Sopenharmony_ci} 55754aa6d63Sopenharmony_ci 55854aa6d63Sopenharmony_ci/** 55954aa6d63Sopenharmony_ci * @tc.name: profile_test019 56054aa6d63Sopenharmony_ci * @tc.desc: Test function of PKCS7Data::PrintCertChainSub() interface for SUCCESS. 56154aa6d63Sopenharmony_ci * @tc.size: MEDIUM 56254aa6d63Sopenharmony_ci * @tc.type: FUNC 56354aa6d63Sopenharmony_ci * @tc.level Level 1 56454aa6d63Sopenharmony_ci * @tc.require: SR000H63TL 56554aa6d63Sopenharmony_ci */ 56654aa6d63Sopenharmony_ciHWTEST_F(ProfileTest, profile_test019, testing::ext::TestSize.Level1) 56754aa6d63Sopenharmony_ci{ 56854aa6d63Sopenharmony_ci STACK_OF(X509)* certs = nullptr; 56954aa6d63Sopenharmony_ci PKCS7Data::PrintCertChainSub(certs); 57054aa6d63Sopenharmony_ci EXPECT_EQ(certs, nullptr); 57154aa6d63Sopenharmony_ci} 57254aa6d63Sopenharmony_ci 57354aa6d63Sopenharmony_ci/** 57454aa6d63Sopenharmony_ci * @tc.name: profile_test020 57554aa6d63Sopenharmony_ci * @tc.desc: Test function of PKCS7Data::GetASN1Time() failed for nullptr asn1_time. 57654aa6d63Sopenharmony_ci * @tc.size: MEDIUM 57754aa6d63Sopenharmony_ci * @tc.type: FUNC 57854aa6d63Sopenharmony_ci * @tc.level Level 1 57954aa6d63Sopenharmony_ci * @tc.require: SR000H63TL 58054aa6d63Sopenharmony_ci */ 58154aa6d63Sopenharmony_ciHWTEST_F(ProfileTest, profile_test020, testing::ext::TestSize.Level1) 58254aa6d63Sopenharmony_ci{ 58354aa6d63Sopenharmony_ci ASN1_TIME* time = nullptr; 58454aa6d63Sopenharmony_ci std::string result = PKCS7Data::GetASN1Time(time); 58554aa6d63Sopenharmony_ci EXPECT_TRUE(result.empty()); 58654aa6d63Sopenharmony_ci} 58754aa6d63Sopenharmony_ci 58854aa6d63Sopenharmony_ci/** 58954aa6d63Sopenharmony_ci * @tc.name: profile_test021 59054aa6d63Sopenharmony_ci * @tc.desc: Test function of PKCS7Data::SortX509Stack() failed for invalide certs. 59154aa6d63Sopenharmony_ci * @tc.size: MEDIUM 59254aa6d63Sopenharmony_ci * @tc.type: FUNC 59354aa6d63Sopenharmony_ci * @tc.level Level 1 59454aa6d63Sopenharmony_ci * @tc.require: SR000H63TL 59554aa6d63Sopenharmony_ci */ 59654aa6d63Sopenharmony_ciHWTEST_F(ProfileTest, profile_test021, testing::ext::TestSize.Level1) 59754aa6d63Sopenharmony_ci{ 59854aa6d63Sopenharmony_ci STACK_OF(X509)* certs = nullptr; 59954aa6d63Sopenharmony_ci EXPECT_TRUE(PKCS7Data::SortX509Stack(certs) < 0); 60054aa6d63Sopenharmony_ci} 60154aa6d63Sopenharmony_ci 60254aa6d63Sopenharmony_ci/** 60354aa6d63Sopenharmony_ci * @tc.name: profile_test022 60454aa6d63Sopenharmony_ci * @tc.desc: Test function of ParseProfile() interface for SUCCESS. 60554aa6d63Sopenharmony_ci * @tc.size: MEDIUM 60654aa6d63Sopenharmony_ci * @tc.type: FUNC 60754aa6d63Sopenharmony_ci * @tc.level Level 1 60854aa6d63Sopenharmony_ci * @tc.require: SR000H63TL 60954aa6d63Sopenharmony_ci */ 61054aa6d63Sopenharmony_ciHWTEST_F(ProfileTest, profile_test022, testing::ext::TestSize.Level1) 61154aa6d63Sopenharmony_ci{ 61254aa6d63Sopenharmony_ci std::string provision = "{\"bundle-info\":{\"app-feature\":\"hos_system_app\",\"bundle-n" 61354aa6d63Sopenharmony_ci "ame\":\"com.OpenHarmony.app.test\",\"developer-id\":\"OpenHarmony\",\"development-certi" 61454aa6d63Sopenharmony_ci "ficate\":\"-----BEGIN CERTIFICATE-----\\n" 61554aa6d63Sopenharmony_ci "MIICMzCCAbegAwIBAgIEaOC/zDAMBggqhkjOPQQDAwUAMGMxCzAJBgNVBAYTAkNO\\n" 61654aa6d63Sopenharmony_ci "MRQwEgYDVQQKEwtPcGVuSGFybW9ueTEZMBcGA1UECxMQT3Blbkhhcm1vbnkgVGVh\\n" 61754aa6d63Sopenharmony_ci "bTEjMCEGA1UEAxMaT3Blbkhhcm1vbnkgQXBwbGljYXRpb24gQ0EwHhcNMjEwMjAy\\n" 61854aa6d63Sopenharmony_ci "MTIxOTMxWhcNNDkxMjMxMTIxOTMxWjBoMQswCQYDVQQGEwJDTjEUMBIGA1UEChML\\n" 61954aa6d63Sopenharmony_ci "T3Blbkhhcm1vbnkxGTAXBgNVBAsTEE9wZW5IYXJtb255IFRlYW0xKDAmBgNVBAMT\\n" 62054aa6d63Sopenharmony_ci "H09wZW5IYXJtb255IEFwcGxpY2F0aW9uIFJlbGVhc2UwWTATBgcqhkjOPQIBBggq\\n" 62154aa6d63Sopenharmony_ci "hkjOPQMBBwNCAATbYOCQQpW5fdkYHN45v0X3AHax12jPBdEDosFRIZ1eXmxOYzSG\\n" 62254aa6d63Sopenharmony_ci "JwMfsHhUU90E8lI0TXYZnNmgM1sovubeQqATo1IwUDAfBgNVHSMEGDAWgBTbhrci\\n" 62354aa6d63Sopenharmony_ci "FtULoUu33SV7ufEFfaItRzAOBgNVHQ8BAf8EBAMCB4AwHQYDVR0OBBYEFPtxruhl\\n" 62454aa6d63Sopenharmony_ci "cRBQsJdwcZqLu9oNUVgaMAwGCCqGSM49BAMDBQADaAAwZQIxAJta0PQ2p4DIu/ps\\n" 62554aa6d63Sopenharmony_ci "LMdLCDgQ5UH1l0B4PGhBlMgdi2zf8nk9spazEQI/0XNwpft8QAIwHSuA2WelVi/o\\n" 62654aa6d63Sopenharmony_ci "zAlF08DnbJrOOtOnQq5wHOPlDYB4OtUzOYJk9scotrEnJxJzGsh/\\n" 62754aa6d63Sopenharmony_ci "-----END CERTIFICATE-----\\n" 62854aa6d63Sopenharmony_ci "\"},\"debug-info\":{\"device-id-type\":\"udid\",\"device-ids\":[\"69C7505BE341BDA594" 62954aa6d63Sopenharmony_ci "8C3C0CB44ABCD530296054159EFE0BD16A16CD0129CC42\",\"7EED06506FCE6325EB2E2FAA019458B856" 63054aa6d63Sopenharmony_ci "AB10493A6718C7679A73F958732865\"]},\"issuer\":\"pki_internal\",\"permissions\":{\"rest" 63154aa6d63Sopenharmony_ci "ricted-permissions\":[\"\"]},\"type\":\"debug\",\"uuid\":\"fe686e1b-3770-4824-a938-961" 63254aa6d63Sopenharmony_ci "b140a7c98\",\"validity\":{\"not-after\":1705127532,\"not-before\":\"1610519532\"},\"ve" 63354aa6d63Sopenharmony_ci "rsion-code\":1,\"version-name\":\"1.0.0\"}"; 63454aa6d63Sopenharmony_ci ProfileInfo info; 63554aa6d63Sopenharmony_ci AppProvisionVerifyResult result = ParseProfile(provision, info); 63654aa6d63Sopenharmony_ci EXPECT_EQ(result, AppProvisionVerifyResult::PROVISION_OK); 63754aa6d63Sopenharmony_ci} 63854aa6d63Sopenharmony_ci 63954aa6d63Sopenharmony_ci/** 64054aa6d63Sopenharmony_ci * @tc.name: profile_test023 64154aa6d63Sopenharmony_ci * @tc.desc: Test function of ParseProfile() interface for SUCCESS. 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(ProfileTest, profile_test023, testing::ext::TestSize.Level1) 64854aa6d63Sopenharmony_ci{ 64954aa6d63Sopenharmony_ci std::string provision = "{\"bundle-info\":{\"app-feature\":\"hos_system_app\",\"bundle-nam" 65054aa6d63Sopenharmony_ci "e\":\"com.OpenHarmony.app.test\",\"developer-id\":\"OpenHarmony\",\"development-certi" 65154aa6d63Sopenharmony_ci "ficate\":\"-----BEGIN CERTIFICATE-----\\n" 65254aa6d63Sopenharmony_ci "MIICMzCCAbegAwIBAgIEaOC/zDAMBggqhkjOPQQDAwUAMGMxCzAJBgNVBAYTAkNO\\n" 65354aa6d63Sopenharmony_ci "MRQwEgYDVQQKEwtPcGVuSGFybW9ueTEZMBcGA1UECxMQT3Blbkhhcm1vbnkgVGVh\\n" 65454aa6d63Sopenharmony_ci "bTEjMCEGA1UEAxMaT3Blbkhhcm1vbnkgQXBwbGljYXRpb24gQ0EwHhcNMjEwMjAy\\n" 65554aa6d63Sopenharmony_ci "MTIxOTMxWhcNNDkxMjMxMTIxOTMxWjBoMQswCQYDVQQGEwJDTjEUMBIGA1UEChML\\n" 65654aa6d63Sopenharmony_ci "T3Blbkhhcm1vbnkxGTAXBgNVBAsTEE9wZW5IYXJtb255IFRlYW0xKDAmBgNVBAMT\\n" 65754aa6d63Sopenharmony_ci "H09wZW5IYXJtb255IEFwcGxpY2F0aW9uIFJlbGVhc2UwWTATBgcqhkjOPQIBBggq\\n" 65854aa6d63Sopenharmony_ci "hkjOPQMBBwNCAATbYOCQQpW5fdkYHN45v0X3AHax12jPBdEDosFRIZ1eXmxOYzSG\\n" 65954aa6d63Sopenharmony_ci "JwMfsHhUU90E8lI0TXYZnNmgM1sovubeQqATo1IwUDAfBgNVHSMEGDAWgBTbhrci\\n" 66054aa6d63Sopenharmony_ci "FtULoUu33SV7ufEFfaItRzAOBgNVHQ8BAf8EBAMCB4AwHQYDVR0OBBYEFPtxruhl\\n" 66154aa6d63Sopenharmony_ci "cRBQsJdwcZqLu9oNUVgaMAwGCCqGSM49BAMDBQADaAAwZQIxAJta0PQ2p4DIu/ps\\n" 66254aa6d63Sopenharmony_ci "LMdLCDgQ5UH1l0B4PGhBlMgdi2zf8nk9spazEQI/0XNwpft8QAIwHSuA2WelVi/o\\n" 66354aa6d63Sopenharmony_ci "zAlF08DnbJrOOtOnQq5wHOPlDYB4OtUzOYJk9scotrEnJxJzGsh/\\n" 66454aa6d63Sopenharmony_ci "-----END CERTIFICATE-----\\n" 66554aa6d63Sopenharmony_ci "\"},\"debug-info\":{\"device-id-type\":\"udid\",\"device-ids\":[\"69C7505BE341BDA5948C" 66654aa6d63Sopenharmony_ci "3C0CB44ABCD530296054159EFE0BD16A16CD0129CC42\",\"7EED06506FCE6325EB2E2FAA019458B856AB1" 66754aa6d63Sopenharmony_ci "0493A6718C7679A73F958732865\"]},\"issuer\":\"pki_internal\",\"permissions\":{\"restric" 66854aa6d63Sopenharmony_ci "ted-permissions\":[\"\"]},\"type\":\"debug\",\"uuid\":\"fe686e1b-3770-4824-a938-961b14" 66954aa6d63Sopenharmony_ci "0a7c98\",\"validity\":{\"name\":\"weixing\"},\"version-code\":1,\"version-name\":\"1.0.0\"}"; 67054aa6d63Sopenharmony_ci ProfileInfo info; 67154aa6d63Sopenharmony_ci AppProvisionVerifyResult result = ParseProfile(provision, info); 67254aa6d63Sopenharmony_ci EXPECT_EQ(result, AppProvisionVerifyResult::PROVISION_OK); 67354aa6d63Sopenharmony_ci} 67454aa6d63Sopenharmony_ci 67554aa6d63Sopenharmony_ci/** 67654aa6d63Sopenharmony_ci * @tc.name: profile_test024 67754aa6d63Sopenharmony_ci * @tc.desc: Test function of ParseProvision() interface for SUCCESS. 67854aa6d63Sopenharmony_ci * @tc.size: MEDIUM 67954aa6d63Sopenharmony_ci * @tc.type: FUNC 68054aa6d63Sopenharmony_ci * @tc.level Level 1 68154aa6d63Sopenharmony_ci * @tc.require: SR000H63TL 68254aa6d63Sopenharmony_ci */ 68354aa6d63Sopenharmony_ciHWTEST_F(ProfileTest, profile_test024, testing::ext::TestSize.Level1) 68454aa6d63Sopenharmony_ci{ 68554aa6d63Sopenharmony_ci std::string provision = "{\"app-distribution-type\": \"app_gallery\",\"bundle-info\":{\"app-" 68654aa6d63Sopenharmony_ci "feature\":\"hos_system_app\",\"bundle-name\":\"com.OpenHarmony.app.test\",\"developer-id\":\"O" 68754aa6d63Sopenharmony_ci "penHarmony\",\"distribution-certificate\":\"-----BEGIN CERTIFICATE-----\\n" 68854aa6d63Sopenharmony_ci "MIICMzCCAbegAwIBAgIEaOC/zDAMBggqhkjOPQQDAwUAMGMxCzAJBgNVBAYTAkNO\\n" 68954aa6d63Sopenharmony_ci "MRQwEgYDVQQKEwtPcGVuSGFybW9ueTEZMBcGA1UECxMQT3Blbkhhcm1vbnkgVGVh\\n" 69054aa6d63Sopenharmony_ci "bTEjMCEGA1UEAxMaT3Blbkhhcm1vbnkgQXBwbGljYXRpb24gQ0EwHhcNMjEwMjAy\\n" 69154aa6d63Sopenharmony_ci "MTIxOTMxWhcNNDkxMjMxMTIxOTMxWjBoMQswCQYDVQQGEwJDTjEUMBIGA1UEChML\\n" 69254aa6d63Sopenharmony_ci "T3Blbkhhcm1vbnkxGTAXBgNVBAsTEE9wZW5IYXJtb255IFRlYW0xKDAmBgNVBAMT\\n" 69354aa6d63Sopenharmony_ci "H09wZW5IYXJtb255IEFwcGxpY2F0aW9uIFJlbGVhc2UwWTATBgcqhkjOPQIBBggq\\n" 69454aa6d63Sopenharmony_ci "hkjOPQMBBwNCAATbYOCQQpW5fdkYHN45v0X3AHax12jPBdEDosFRIZ1eXmxOYzSG\\n" 69554aa6d63Sopenharmony_ci "JwMfsHhUU90E8lI0TXYZnNmgM1sovubeQqATo1IwUDAfBgNVHSMEGDAWgBTbhrci\\n" 69654aa6d63Sopenharmony_ci "FtULoUu33SV7ufEFfaItRzAOBgNVHQ8BAf8EBAMCB4AwHQYDVR0OBBYEFPtxruhl\\n" 69754aa6d63Sopenharmony_ci "cRBQsJdwcZqLu9oNUVgaMAwGCCqGSM49BAMDBQADaAAwZQIxAJta0PQ2p4DIu/ps\\n" 69854aa6d63Sopenharmony_ci "LMdLCDgQ5UH1l0B4PGhBlMgdi2zf8nk9spazEQI/0XNwpft8QAIwHSuA2WelVi/o\\n" 69954aa6d63Sopenharmony_ci "zAlF08DnbJrOOtOnQq5wHOPlDYB4OtUzOYJk9scotrEnJxJzGsh/\\n" 70054aa6d63Sopenharmony_ci "-----END CERTIFICATE-----\\n" 70154aa6d63Sopenharmony_ci "\"},\"debug-info\":{\"device-id-type\":\"udid\",\"device-ids\":[\"69C7505BE341BDA5948C3C0CB" 70254aa6d63Sopenharmony_ci "44ABCD530296054159EFE0BD16A16CD0129CC42\",\"7EED06506FCE6325EB2E2FAA019458B856AB10493A6718C76" 70354aa6d63Sopenharmony_ci "79A73F958732865\"]},\"issuer\":\"pki_internal\",\"permissions\":{\"restricted-permissions\":" 70454aa6d63Sopenharmony_ci "[\"\"]},\"type\":\"release\",\"uuid\":\"fe686e1b-3770-4824-a938-961b140a7c98\",\"validity\":" 70554aa6d63Sopenharmony_ci "{\"not-after\":1705127532,\"not-before\":1610519532},\"version-code\":1,\"version-name\":\"1.0.0\"}"; 70654aa6d63Sopenharmony_ci ProfileInfo info; 70754aa6d63Sopenharmony_ci AppProvisionVerifyResult result = ParseProvision(provision, info); 70854aa6d63Sopenharmony_ci EXPECT_EQ(result, AppProvisionVerifyResult::PROVISION_OK); 70954aa6d63Sopenharmony_ci} 71054aa6d63Sopenharmony_ci 71154aa6d63Sopenharmony_ci/** 71254aa6d63Sopenharmony_ci * @tc.name: profile_test027 71354aa6d63Sopenharmony_ci * @tc.desc: Test function of ParseProvision() interface for SUCCESS. 71454aa6d63Sopenharmony_ci * @tc.size: MEDIUM 71554aa6d63Sopenharmony_ci * @tc.type: FUNC 71654aa6d63Sopenharmony_ci * @tc.level Level 1 71754aa6d63Sopenharmony_ci * @tc.require: SR000H63TL 71854aa6d63Sopenharmony_ci */ 71954aa6d63Sopenharmony_ciHWTEST_F(ProfileTest, profile_test027, testing::ext::TestSize.Level1) 72054aa6d63Sopenharmony_ci{ 72154aa6d63Sopenharmony_ci std::string provision = "{\"app-distribution-type\": \"app_gallery\"," 72254aa6d63Sopenharmony_ci "\"bundle-info\":{\"app-feature\":\"hos_system_app\",\"bundle-name\":" 72354aa6d63Sopenharmony_ci "\"com.OpenHarmony.app.test\",\"developer-id\":\"OpenHarmony\"," 72454aa6d63Sopenharmony_ci "\"distribution-certificate\":\"-----BEGIN CERTIFICATE-----\\n" 72554aa6d63Sopenharmony_ci "MIICMzCCAbegAwIBAgIEaOC/zDAMBggqhkjOPQQDAwUAMGMxCzAJBgNVBAYTAkNO\\n" 72654aa6d63Sopenharmony_ci "MRQwEgYDVQQKEwtPcGVuSGFybW9ueTEZMBcGA1UECxMQT3Blbkhhcm1vbnkgVGVh\\n" 72754aa6d63Sopenharmony_ci "bTEjMCEGA1UEAxMaT3Blbkhhcm1vbnkgQXBwbGljYXRpb24gQ0EwHhcNMjEwMjAy\\n" 72854aa6d63Sopenharmony_ci "MTIxOTMxWhcNNDkxMjMxMTIxOTMxWjBoMQswCQYDVQQGEwJDTjEUMBIGA1UEChML\\n" 72954aa6d63Sopenharmony_ci "T3Blbkhhcm1vbnkxGTAXBgNVBAsTEE9wZW5IYXJtb255IFRlYW0xKDAmBgNVBAMT\\n" 73054aa6d63Sopenharmony_ci "H09wZW5IYXJtb255IEFwcGxpY2F0aW9uIFJlbGVhc2UwWTATBgcqhkjOPQIBBggq\\n" 73154aa6d63Sopenharmony_ci "hkjOPQMBBwNCAATbYOCQQpW5fdkYHN45v0X3AHax12jPBdEDosFRIZ1eXmxOYzSG\\n" 73254aa6d63Sopenharmony_ci "JwMfsHhUU90E8lI0TXYZnNmgM1sovubeQqATo1IwUDAfBgNVHSMEGDAWgBTbhrci\\n" 73354aa6d63Sopenharmony_ci "FtULoUu33SV7ufEFfaItRzAOBgNVHQ8BAf8EBAMCB4AwHQYDVR0OBBYEFPtxruhl\\n" 73454aa6d63Sopenharmony_ci "cRBQsJdwcZqLu9oNUVgaMAwGCCqGSM49BAMDBQADaAAwZQIxAJta0PQ2p4DIu/ps\\n" 73554aa6d63Sopenharmony_ci "LMdLCDgQ5UH1l0B4PGhBlMgdi2zf8nk9spazEQI/0XNwpft8QAIwHSuA2WelVi/o\\n" 73654aa6d63Sopenharmony_ci "zAlF08DnbJrOOtOnQq5wHOPlDYB4OtUzOYJk9scotrEnJxJzGsh/\\n" 73754aa6d63Sopenharmony_ci "-----END CERTIFICATE-----\\n" 73854aa6d63Sopenharmony_ci "\"},\"debug-info\":{\"device-id-type\":\"udid\",\"device-ids\":[" 73954aa6d63Sopenharmony_ci "\"69C7505BE341BDA5948C3C0CB44ABCD530296054159EFE0BD16A16CD0129CC42\"," 74054aa6d63Sopenharmony_ci "\"7EED06506FCE6325EB2E2FAA019458B856AB10493A6718C7679A73F958732865\"]}," 74154aa6d63Sopenharmony_ci "\"issuer\":\"pki_internal\",\"permissions\":{\"restricted-permissions" 74254aa6d63Sopenharmony_ci "\":[\"\"]},\"type\":\"release\",\"uuid\":\"\",\"validity\":{\"not-after" 74354aa6d63Sopenharmony_ci "\":1705127532,\"not-before\":1610519532},\"version-code\":1,\"version-name\":\"1.0.0\"}"; 74454aa6d63Sopenharmony_ci ProfileInfo info; 74554aa6d63Sopenharmony_ci AppProvisionVerifyResult result = ParseProvision(provision, info); 74654aa6d63Sopenharmony_ci EXPECT_EQ(result, AppProvisionVerifyResult::PROVISION_OK); 74754aa6d63Sopenharmony_ci} 74854aa6d63Sopenharmony_ci 74954aa6d63Sopenharmony_ci/** 75054aa6d63Sopenharmony_ci * @tc.name: profile_test028 75154aa6d63Sopenharmony_ci * @tc.desc: Test function of ParseProvision() interface for SUCCESS. 75254aa6d63Sopenharmony_ci * @tc.size: MEDIUM 75354aa6d63Sopenharmony_ci * @tc.type: FUNC 75454aa6d63Sopenharmony_ci * @tc.level Level 1 75554aa6d63Sopenharmony_ci * @tc.require: SR000H63TL 75654aa6d63Sopenharmony_ci */ 75754aa6d63Sopenharmony_ciHWTEST_F(ProfileTest, profile_test028, testing::ext::TestSize.Level1) 75854aa6d63Sopenharmony_ci{ 75954aa6d63Sopenharmony_ci std::string provision = "{\"app-distribution-type\": \"app_gallery\"," 76054aa6d63Sopenharmony_ci "\"bundle-info\":{\"app-feature\":\"hos_system_app\",\"bundle-name\":" 76154aa6d63Sopenharmony_ci "\"com.OpenHarmony.app.test\",\"developer-id\":\"OpenHarmony\"," 76254aa6d63Sopenharmony_ci "\"distribution-certificate\":\"-----BEGIN CERTIFICATE-----\\n" 76354aa6d63Sopenharmony_ci "MIICMzCCAbegAwIBAgIEaOC/zDAMBggqhkjOPQQDAwUAMGMxCzAJBgNVBAYTAkNO\\n" 76454aa6d63Sopenharmony_ci "MRQwEgYDVQQKEwtPcGVuSGFybW9ueTEZMBcGA1UECxMQT3Blbkhhcm1vbnkgVGVh\\n" 76554aa6d63Sopenharmony_ci "bTEjMCEGA1UEAxMaT3Blbkhhcm1vbnkgQXBwbGljYXRpb24gQ0EwHhcNMjEwMjAy\\n" 76654aa6d63Sopenharmony_ci "MTIxOTMxWhcNNDkxMjMxMTIxOTMxWjBoMQswCQYDVQQGEwJDTjEUMBIGA1UEChML\\n" 76754aa6d63Sopenharmony_ci "T3Blbkhhcm1vbnkxGTAXBgNVBAsTEE9wZW5IYXJtb255IFRlYW0xKDAmBgNVBAMT\\n" 76854aa6d63Sopenharmony_ci "H09wZW5IYXJtb255IEFwcGxpY2F0aW9uIFJlbGVhc2UwWTATBgcqhkjOPQIBBggq\\n" 76954aa6d63Sopenharmony_ci "hkjOPQMBBwNCAATbYOCQQpW5fdkYHN45v0X3AHax12jPBdEDosFRIZ1eXmxOYzSG\\n" 77054aa6d63Sopenharmony_ci "JwMfsHhUU90E8lI0TXYZnNmgM1sovubeQqATo1IwUDAfBgNVHSMEGDAWgBTbhrci\\n" 77154aa6d63Sopenharmony_ci "FtULoUu33SV7ufEFfaItRzAOBgNVHQ8BAf8EBAMCB4AwHQYDVR0OBBYEFPtxruhl\\n" 77254aa6d63Sopenharmony_ci "cRBQsJdwcZqLu9oNUVgaMAwGCCqGSM49BAMDBQADaAAwZQIxAJta0PQ2p4DIu/ps\\n" 77354aa6d63Sopenharmony_ci "LMdLCDgQ5UH1l0B4PGhBlMgdi2zf8nk9spazEQI/0XNwpft8QAIwHSuA2WelVi/o\\n" 77454aa6d63Sopenharmony_ci "zAlF08DnbJrOOtOnQq5wHOPlDYB4OtUzOYJk9scotrEnJxJzGsh/\\n" 77554aa6d63Sopenharmony_ci "-----END CERTIFICATE-----\\n" 77654aa6d63Sopenharmony_ci "\"},\"debug-info\":{\"device-id-type\":\"udid\",\"device-ids\":[" 77754aa6d63Sopenharmony_ci "\"69C7505BE341BDA5948C3C0CB44ABCD530296054159EFE0BD16A16CD0129CC42\"," 77854aa6d63Sopenharmony_ci "\"7EED06506FCE6325EB2E2FAA019458B856AB10493A6718C7679A73F958732865\"]}," 77954aa6d63Sopenharmony_ci "\"issuer\":\"pki_internal\",\"permissions\":{\"restricted-permissions" 78054aa6d63Sopenharmony_ci "\":[\"\"]},\"type\":\"release\",\"uuid\":\"\",\"validity\":{\"not-after" 78154aa6d63Sopenharmony_ci "\":1705127532,\"not-before\":1610519532},\"version-code\":1,\"version-name\":\"1.0.0\"}"; 78254aa6d63Sopenharmony_ci ProfileInfo info; 78354aa6d63Sopenharmony_ci AppProvisionVerifyResult result = ParseProvision(provision, info); 78454aa6d63Sopenharmony_ci EXPECT_EQ(result, AppProvisionVerifyResult::PROVISION_OK); 78554aa6d63Sopenharmony_ci} 78654aa6d63Sopenharmony_ci 78754aa6d63Sopenharmony_ci/** 78854aa6d63Sopenharmony_ci * @tc.name: profile_test029 78954aa6d63Sopenharmony_ci * @tc.desc: Test function of RunSignApp() failed for invalid json. 79054aa6d63Sopenharmony_ci * @tc.size: MEDIUM 79154aa6d63Sopenharmony_ci * @tc.type: FUNC 79254aa6d63Sopenharmony_ci * @tc.level Level 1 79354aa6d63Sopenharmony_ci * @tc.require: SR000H63TL 79454aa6d63Sopenharmony_ci */ 79554aa6d63Sopenharmony_ciHWTEST_F(ProfileTest, profile_test029, testing::ext::TestSize.Level1) 79654aa6d63Sopenharmony_ci{ 79754aa6d63Sopenharmony_ci std::unique_ptr<SignToolServiceImpl> api = std::make_unique<SignToolServiceImpl>(); 79854aa6d63Sopenharmony_ci std::shared_ptr<Options> params = std::make_shared<Options>(); 79954aa6d63Sopenharmony_ci char keyPwd[] = "123456"; 80054aa6d63Sopenharmony_ci char keystorePwd[] = "123456"; 80154aa6d63Sopenharmony_ci std::string provision = "{\"app-distribution-type\": \"app_gallery\",\"bundle-info\":{\"app-" 80254aa6d63Sopenharmony_ci "feature\":\"hos_system_app\",\"bundle-name\":\"com.OpenHarmony.app.test\",\"developer-id\":\"O" 80354aa6d63Sopenharmony_ci "penHarmony\",\"distribution-certificate\":\"-----BEGIN CERTIFICATE-----\\n" 80454aa6d63Sopenharmony_ci "MIICMzCCAbegAwIBAgIEaOC/zDAMBggqhkjOPQQDAwUAMGMxCzAJBgNVBAYTAkNO\\n" 80554aa6d63Sopenharmony_ci "MRQwEgYDVQQKEwtPcGVuSGFybW9ueTEZMBcGA1UECxMQT3Blbkhhcm1vbnkgVGVh\\n" 80654aa6d63Sopenharmony_ci "bTEjMCEGA1UEAxMaT3Blbkhhcm1vbnkgQXBwbGljYXRpb24gQ0EwHhcNMjEwMjAy\\n" 80754aa6d63Sopenharmony_ci "MTIxOTMxWhcNNDkxMjMxMTIxOTMxWjBoMQswCQYDVQQGEwJDTjEUMBIGA1UEChML\\n" 80854aa6d63Sopenharmony_ci "T3Blbkhhcm1vbnkxGTAXBgNVBAsTEE9wZW5IYXJtb255IFRlYW0xKDAmBgNVBAMT\\n" 80954aa6d63Sopenharmony_ci "H09wZW5IYXJtb255IEFwcGxpY2F0aW9uIFJlbGVhc2UwWTATBgcqhkjOPQIBBggq\\n" 81054aa6d63Sopenharmony_ci "hkjOPQMBBwNCAATbYOCQQpW5fdkYHN45v0X3AHax12jPBdEDosFRIZ1eXmxOYzSG\\n" 81154aa6d63Sopenharmony_ci "JwMfsHhUU90E8lI0TXYZnNmgM1sovubeQqATo1IwUDAfBgNVHSMEGDAWgBTbhrci\\n" 81254aa6d63Sopenharmony_ci "FtULoUu33SV7ufEFfaItRzAOBgNVHQ8BAf8EBAMCB4AwHQYDVR0OBBYEFPtxruhl\\n" 81354aa6d63Sopenharmony_ci "cRBQsJdwcZqLu9oNUVgaMAwGCCqGSM49BAMDBQADaAAwZQIxAJta0PQ2p4DIu/ps\\n" 81454aa6d63Sopenharmony_ci "LMdLCDgQ5UH1l0B4PGhBlMgdi2zf8nk9spazEQI/0XNwpft8QAIwHSuA2WelVi/o\\n" 81554aa6d63Sopenharmony_ci "zAlF08DnbJrOOtOnQq5wHOPlDYB4OtUzOYJk9scotrEnJxJzGsh/\\n" 81654aa6d63Sopenharmony_ci "-----END CERTIFICATE-----\\n" 81754aa6d63Sopenharmony_ci "\"},\"debug-info\":{\"device-id-type\":\"udid\",\"device-ids\":[\"69C7505BE341BDA5948C3C0CB" 81854aa6d63Sopenharmony_ci "44ABCD530296054159EFE0BD16A16CD0129CC42\",\"7EED06506FCE6325EB2E2FAA019458B856AB10493A6718C76" 81954aa6d63Sopenharmony_ci "79A73F958732865\"]},\"issuer\":\"pki_internal\",\"permissions\":{\"restricted-permissions\":" 82054aa6d63Sopenharmony_ci "[\"\"]},\"type\":\"release\",\"uuid\":\"fe686e1b-3770-4824-a938-961b140a7c98\",\"validity\":" 82154aa6d63Sopenharmony_ci "{\"not-after\":1705127532,\"not-before\":1610519532},\"version-code\":1,\"version-name\":\"1.0.0\"}"; 82254aa6d63Sopenharmony_ci FileUtils::Write(provision, VERIFY_PROFILE_OUT_FILE); 82354aa6d63Sopenharmony_ci (*params)["mode"] = SIGN_APP_MODE; 82454aa6d63Sopenharmony_ci (*params)["keyAlias"] = SIGN_APP_KEY_ALIAS; 82554aa6d63Sopenharmony_ci (*params)["signAlg"] = SIGN_APP_SIGN_ALG; 82654aa6d63Sopenharmony_ci (*params)["appCertFile"] = SIGN_APP_APP_CERT_FILE; 82754aa6d63Sopenharmony_ci (*params)["profileFile"] = VERIFY_PROFILE_OUT_FILE; 82854aa6d63Sopenharmony_ci (*params)["inFile"] = SIGN_APP_IN_FILE; 82954aa6d63Sopenharmony_ci (*params)["keystoreFile"] = SIGN_APP_KEY_STORE_FILE; 83054aa6d63Sopenharmony_ci (*params)["outFile"] = SIGN_APP_OUT_FILE; 83154aa6d63Sopenharmony_ci (*params)["keyPwd"] = keyPwd; 83254aa6d63Sopenharmony_ci (*params)["keystorePwd"] = keystorePwd; 83354aa6d63Sopenharmony_ci (*params)["inForm"] = std::string("zip"); 83454aa6d63Sopenharmony_ci (*params)["profileSigned"] = std::string("0"); 83554aa6d63Sopenharmony_ci (*params)["signCode"] = std::string("0"); 83654aa6d63Sopenharmony_ci 83754aa6d63Sopenharmony_ci bool ret = ParamsRunTool::RunSignApp(params.get(), *api); 83854aa6d63Sopenharmony_ci EXPECT_EQ(ret, true); 83954aa6d63Sopenharmony_ci} 84054aa6d63Sopenharmony_ci 84154aa6d63Sopenharmony_cistatic void GenerateTmpP7b() 84254aa6d63Sopenharmony_ci{ 84354aa6d63Sopenharmony_ci Options options; 84454aa6d63Sopenharmony_ci char keyStorePwd[] = "123456"; 84554aa6d63Sopenharmony_ci char keypwd[] = "123456"; 84654aa6d63Sopenharmony_ci options[Options::KEY_ALIAS] = SIGN_PROFILE_KEY_ALIAS; 84754aa6d63Sopenharmony_ci options[Options::MODE] = SIGN_PROFILE_MODE; 84854aa6d63Sopenharmony_ci options[Options::PROFILE_CERT_FILE] = SIGN_PROFILE_DOUBLE_CERT_PEM; 84954aa6d63Sopenharmony_ci options[Options::SIGN_ALG] = SIGN_PROFILE_SIGN_ALG; 85054aa6d63Sopenharmony_ci options[Options::KEY_STORE_FILE] = SIGN_PROFILE_KEY_STORE_FILE; 85154aa6d63Sopenharmony_ci options[Options::OUT_FILE] = SIGN_PROFILE_OUT_FILE; 85254aa6d63Sopenharmony_ci options[Options::IN_FILE] = SIGN_PROFILE_IN_FILE; 85354aa6d63Sopenharmony_ci options[Options::KEY_RIGHTS] = keypwd; 85454aa6d63Sopenharmony_ci options[Options::KEY_STORE_RIGHTS] = keyStorePwd; 85554aa6d63Sopenharmony_ci 85654aa6d63Sopenharmony_ci LocalizationAdapter adapter(&options); 85754aa6d63Sopenharmony_ci std::string provision = "45"; 85854aa6d63Sopenharmony_ci std::string ret; 85954aa6d63Sopenharmony_ci int result = ProfileSignTool::GenerateP7b(adapter, provision, ret); 86054aa6d63Sopenharmony_ci FileUtils::Write(ret, SIGN_PROFILE_TMP_P7B); 86154aa6d63Sopenharmony_ci EXPECT_TRUE(result < 0); 86254aa6d63Sopenharmony_ci} 86354aa6d63Sopenharmony_ci 86454aa6d63Sopenharmony_ci/** 86554aa6d63Sopenharmony_ci * @tc.name: profile_test030 86654aa6d63Sopenharmony_ci * @tc.desc: Test function of RunSignApp() failed for invalid p7b. 86754aa6d63Sopenharmony_ci * @tc.size: MEDIUM 86854aa6d63Sopenharmony_ci * @tc.type: FUNC 86954aa6d63Sopenharmony_ci * @tc.level Level 1 87054aa6d63Sopenharmony_ci * @tc.require: SR000H63TL 87154aa6d63Sopenharmony_ci */ 87254aa6d63Sopenharmony_ciHWTEST_F(ProfileTest, profile_test030, testing::ext::TestSize.Level1) 87354aa6d63Sopenharmony_ci{ 87454aa6d63Sopenharmony_ci GenerateTmpP7b(); 87554aa6d63Sopenharmony_ci std::unique_ptr<SignToolServiceImpl> api = std::make_unique<SignToolServiceImpl>(); 87654aa6d63Sopenharmony_ci std::shared_ptr<Options> params = std::make_shared<Options>(); 87754aa6d63Sopenharmony_ci char keyPwd[] = "123456"; 87854aa6d63Sopenharmony_ci char keystorePwd[] = "123456"; 87954aa6d63Sopenharmony_ci (*params)["mode"] = SIGN_APP_MODE; 88054aa6d63Sopenharmony_ci (*params)["keyAlias"] = SIGN_APP_KEY_ALIAS; 88154aa6d63Sopenharmony_ci (*params)["signAlg"] = SIGN_APP_SIGN_ALG; 88254aa6d63Sopenharmony_ci (*params)["appCertFile"] = SIGN_APP_APP_CERT_FILE; 88354aa6d63Sopenharmony_ci (*params)["profileFile"] = SIGN_PROFILE_TMP_P7B; 88454aa6d63Sopenharmony_ci (*params)["inFile"] = SIGN_APP_IN_FILE; 88554aa6d63Sopenharmony_ci (*params)["keystoreFile"] = SIGN_APP_KEY_STORE_FILE; 88654aa6d63Sopenharmony_ci (*params)["outFile"] = SIGN_APP_OUT_FILE; 88754aa6d63Sopenharmony_ci (*params)["keyPwd"] = keyPwd; 88854aa6d63Sopenharmony_ci (*params)["keystorePwd"] = keystorePwd; 88954aa6d63Sopenharmony_ci (*params)["inForm"] = std::string("zip"); 89054aa6d63Sopenharmony_ci (*params)["profileSigned"] = std::string("1"); 89154aa6d63Sopenharmony_ci (*params)["signCode"] = std::string("0"); 89254aa6d63Sopenharmony_ci 89354aa6d63Sopenharmony_ci bool ret = ParamsRunTool::RunSignApp(params.get(), *api); 89454aa6d63Sopenharmony_ci EXPECT_FALSE(ret); 89554aa6d63Sopenharmony_ci} 89654aa6d63Sopenharmony_ci 89754aa6d63Sopenharmony_cistatic STACK_OF(X509)* ReadCerts(const std::string& path) 89854aa6d63Sopenharmony_ci{ 89954aa6d63Sopenharmony_ci X509* cert = nullptr; 90054aa6d63Sopenharmony_ci BIO* in = nullptr; 90154aa6d63Sopenharmony_ci STACK_OF(X509)* certs = nullptr; 90254aa6d63Sopenharmony_ci certs = sk_X509_new(nullptr); 90354aa6d63Sopenharmony_ci if (certs == nullptr) 90454aa6d63Sopenharmony_ci goto err; 90554aa6d63Sopenharmony_ci in = BIO_new_file(path.c_str(), "rb"); 90654aa6d63Sopenharmony_ci if (in == nullptr) 90754aa6d63Sopenharmony_ci goto err; 90854aa6d63Sopenharmony_ci while ((cert = PEM_read_bio_X509(in, nullptr, nullptr, nullptr))) 90954aa6d63Sopenharmony_ci { 91054aa6d63Sopenharmony_ci sk_X509_push(certs, cert); 91154aa6d63Sopenharmony_ci } 91254aa6d63Sopenharmony_ci BIO_free(in); 91354aa6d63Sopenharmony_ci return certs; 91454aa6d63Sopenharmony_cierr: 91554aa6d63Sopenharmony_ci BIO_free(in); 91654aa6d63Sopenharmony_ci sk_X509_pop_free(certs, X509_free); 91754aa6d63Sopenharmony_ci return nullptr; 91854aa6d63Sopenharmony_ci} 91954aa6d63Sopenharmony_ci 92054aa6d63Sopenharmony_ci/** 92154aa6d63Sopenharmony_ci * @tc.name: profile_test031 92254aa6d63Sopenharmony_ci * @tc.desc: Test function of SortX509Stack() failed for invalid certchain. 92354aa6d63Sopenharmony_ci * @tc.size: MEDIUM 92454aa6d63Sopenharmony_ci * @tc.type: FUNC 92554aa6d63Sopenharmony_ci * @tc.level Level 1 92654aa6d63Sopenharmony_ci * @tc.require: SR000H63TL 92754aa6d63Sopenharmony_ci */ 92854aa6d63Sopenharmony_ciHWTEST_F(ProfileTest, profile_test031, testing::ext::TestSize.Level1) 92954aa6d63Sopenharmony_ci{ 93054aa6d63Sopenharmony_ci STACK_OF(X509)* certs = ReadCerts(SIGN_PROFILE_CERT_PEM); 93154aa6d63Sopenharmony_ci EXPECT_TRUE(PKCS7Data::SortX509Stack(certs) < 0); 93254aa6d63Sopenharmony_ci sk_X509_pop_free(certs, X509_free); 93354aa6d63Sopenharmony_ci} 93454aa6d63Sopenharmony_ci 93554aa6d63Sopenharmony_ci/** 93654aa6d63Sopenharmony_ci * @tc.name: profile_test032 93754aa6d63Sopenharmony_ci * @tc.desc: Test function of SortX509Stack() failed for invalid certchain. 93854aa6d63Sopenharmony_ci * @tc.size: MEDIUM 93954aa6d63Sopenharmony_ci * @tc.type: FUNC 94054aa6d63Sopenharmony_ci * @tc.level Level 1 94154aa6d63Sopenharmony_ci * @tc.require: SR000H63TL 94254aa6d63Sopenharmony_ci */ 94354aa6d63Sopenharmony_ciHWTEST_F(ProfileTest, profile_test032, testing::ext::TestSize.Level1) 94454aa6d63Sopenharmony_ci{ 94554aa6d63Sopenharmony_ci STACK_OF(X509)* certs = ReadCerts(SIGN_PROFILE_PROFILE_CERT_FILE); 94654aa6d63Sopenharmony_ci EXPECT_TRUE(PKCS7Data::SortX509Stack(certs) == 0); 94754aa6d63Sopenharmony_ci X509* entityCert = sk_X509_value(certs, 0); 94854aa6d63Sopenharmony_ci X509* entityCopy = X509_dup(entityCert); 94954aa6d63Sopenharmony_ci X509* root = sk_X509_pop(certs); 95054aa6d63Sopenharmony_ci X509* middle = sk_X509_pop(certs); 95154aa6d63Sopenharmony_ci X509_free(root); 95254aa6d63Sopenharmony_ci X509_free(middle); 95354aa6d63Sopenharmony_ci sk_X509_insert(certs, entityCopy, 0); 95454aa6d63Sopenharmony_ci EXPECT_TRUE(PKCS7Data::SortX509Stack(certs) < 0); 95554aa6d63Sopenharmony_ci sk_X509_pop_free(certs, X509_free); 95654aa6d63Sopenharmony_ci} 95754aa6d63Sopenharmony_ci 95854aa6d63Sopenharmony_ci/** 95954aa6d63Sopenharmony_ci * @tc.name: profile_test033 96054aa6d63Sopenharmony_ci * @tc.desc: Test function of SortX509Stack() failed for invalid certchain. 96154aa6d63Sopenharmony_ci * @tc.size: MEDIUM 96254aa6d63Sopenharmony_ci * @tc.type: FUNC 96354aa6d63Sopenharmony_ci * @tc.level Level 1 96454aa6d63Sopenharmony_ci * @tc.require: SR000H63TL 96554aa6d63Sopenharmony_ci */ 96654aa6d63Sopenharmony_ciHWTEST_F(ProfileTest, profile_test033, testing::ext::TestSize.Level1) 96754aa6d63Sopenharmony_ci{ 96854aa6d63Sopenharmony_ci STACK_OF(X509)* certs = ReadCerts(SIGN_PROFILE_PROFILE_CERT_FILE); 96954aa6d63Sopenharmony_ci EXPECT_TRUE(PKCS7Data::SortX509Stack(certs) == 0); 97054aa6d63Sopenharmony_ci X509* root = sk_X509_pop(certs); 97154aa6d63Sopenharmony_ci X509_free(root); 97254aa6d63Sopenharmony_ci EXPECT_TRUE(PKCS7Data::SortX509Stack(certs) < 0); 97354aa6d63Sopenharmony_ci sk_X509_pop_free(certs, X509_free); 97454aa6d63Sopenharmony_ci} 97554aa6d63Sopenharmony_ci 97654aa6d63Sopenharmony_ci/** 97754aa6d63Sopenharmony_ci * @tc.name: profile_test030 97854aa6d63Sopenharmony_ci * @tc.desc: Test function of SortX509Stack() interface failed for invalid certchain. 97954aa6d63Sopenharmony_ci * @tc.size: MEDIUM 98054aa6d63Sopenharmony_ci * @tc.type: FUNC 98154aa6d63Sopenharmony_ci * @tc.level Level 1 98254aa6d63Sopenharmony_ci * @tc.require: SR000H63TL 98354aa6d63Sopenharmony_ci */ 98454aa6d63Sopenharmony_ciHWTEST_F(ProfileTest, profile_test034, testing::ext::TestSize.Level1) 98554aa6d63Sopenharmony_ci{ 98654aa6d63Sopenharmony_ci STACK_OF(X509)* certs = ReadCerts(SIGN_PROFILE_PROFILE_CERT_FILE); 98754aa6d63Sopenharmony_ci EXPECT_TRUE(PKCS7Data::SortX509Stack(certs) == 0); 98854aa6d63Sopenharmony_ci X509* root = sk_X509_pop(certs); 98954aa6d63Sopenharmony_ci X509* middle = sk_X509_pop(certs); 99054aa6d63Sopenharmony_ci X509* entity = sk_X509_pop(certs); 99154aa6d63Sopenharmony_ci X509_free(entity); 99254aa6d63Sopenharmony_ci sk_X509_insert(certs, middle, 0); 99354aa6d63Sopenharmony_ci sk_X509_insert(certs, X509_dup(middle), 0); 99454aa6d63Sopenharmony_ci sk_X509_insert(certs, root, 0); 99554aa6d63Sopenharmony_ci EXPECT_TRUE(PKCS7Data::SortX509Stack(certs) < 0); 99654aa6d63Sopenharmony_ci sk_X509_pop_free(certs, X509_free); 99754aa6d63Sopenharmony_ci} 99854aa6d63Sopenharmony_ci} 99954aa6d63Sopenharmony_ci} 1000