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 */
HWTEST_F(MerkleTreeBuilderTest, GenerateMerkleTree001, testing::ext::TestSize.Level1)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 */
HWTEST_F(MerkleTreeBuilderTest, GenerateMerkleTree002, testing::ext::TestSize.Level1)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 */
HWTEST_F(MerkleTreeBuilderTest, GenerateMerkleTree003, testing::ext::TestSize.Level1)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