1 /* 2 * Copyright (c) 2024-2024 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16 #include <memory> 17 #include <fstream> 18 #include <gtest/gtest.h> 19 #include "merkle_tree_builder.h" 20 21 namespace OHOS { 22 namespace SignatureTools { 23 24 class MerkleTreeBuilderTest : public testing::Test { 25 public: SetUpTestCase(void)26 static void SetUpTestCase(void) 27 { 28 (void)rename("./codeSigning/entry-default-signed-so.txt", "./codeSigning/entry-default-signed-so.hap"); 29 } TearDownTestCase()30 static void TearDownTestCase() 31 { 32 } SetUp()33 void SetUp() {}; TearDown()34 void TearDown() {}; 35 }; 36 37 /** 38 * @tc.name: GenerateMerkleTree001 39 * @tc.desc: Test function of MerkleTreeBuilder::GenerateMerkleTree() interface for SUCCESS. 40 * @tc.size: MEDIUM 41 * @tc.type: FUNC 42 * @tc.level Level 1 43 * @tc.require: SR000H63TL 44 */ 45 HWTEST_F(MerkleTreeBuilderTest, GenerateMerkleTree001, testing::ext::TestSize.Level1) 46 { 47 const FsVerityHashAlgorithm SHA256((char)1, "SHA-256", 256 / 8); 48 std::ifstream inputStream("./codeSigning/entry-default-signed-so.hap", std::ios::binary); 49 50 MerkleTreeBuilder builder; 51 MerkleTree* merkleTree = builder.GenerateMerkleTree(inputStream, 69632, SHA256); 52 53 EXPECT_NE(merkleTree, nullptr); 54 } 55 56 /** 57 * @tc.name: GenerateMerkleTree002 58 * @tc.desc: Test function of MerkleTreeBuilder::GenerateMerkleTree() interface for SUCCESS. 59 * @tc.size: MEDIUM 60 * @tc.type: FUNC 61 * @tc.level Level 1 62 * @tc.require: SR000H63TL 63 */ 64 HWTEST_F(MerkleTreeBuilderTest, GenerateMerkleTree002, testing::ext::TestSize.Level1) 65 { 66 const FsVerityHashAlgorithm SHA256((char)1, "SHA-256", 256 / 8); 67 std::ifstream inputStream("./codeSigning/entry-default-signed-so.hap", std::ios::binary); 68 69 MerkleTreeBuilder builder; 70 MerkleTree* merkleTree = builder.GenerateMerkleTree(inputStream, 4095, SHA256); 71 72 EXPECT_EQ(merkleTree, nullptr); 73 } 74 75 /** 76 * @tc.name: GenerateMerkleTree003 77 * @tc.desc: Test function of MerkleTreeBuilder::GenerateMerkleTree() interface for SUCCESS. 78 * @tc.size: MEDIUM 79 * @tc.type: FUNC 80 * @tc.level Level 1 81 * @tc.require: SR000H63TL 82 */ 83 HWTEST_F(MerkleTreeBuilderTest, GenerateMerkleTree003, testing::ext::TestSize.Level1) 84 { 85 const FsVerityHashAlgorithm SHA256((char)1, "SHA-256", 256 / 8); 86 std::ifstream inputStream("./codeSigning/entry-default-signed-so.hap", std::ios::binary); 87 88 MerkleTreeBuilder builder; 89 MerkleTree* merkleTree = builder.GenerateMerkleTree(inputStream, 0, SHA256); 90 91 EXPECT_EQ(merkleTree, nullptr); 92 } 93 } // namespace SignatureTools 94 } // namespace OHOS