1 //
2 // Copyright (C) 2020 The Android Open Source Project
3 //
4 // Licensed under the Apache License, Version 2.0 (the "License");
5 // you may not use this file except in compliance with the License.
6 // You may obtain a copy of the License at
7 //
8 //      http://www.apache.org/licenses/LICENSE-2.0
9 //
10 // Unless required by applicable law or agreed to in writing, software
11 // distributed under the License is distributed on an "AS IS" BASIS,
12 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 // See the License for the specific language governing permissions and
14 // limitations under the License.
15 
16 #pragma once
17 
18 #include <map>
19 #include <set>
20 #include <string>
21 
22 #include "common/libs/utils/result.h"
23 #include "host/libs/avb/avb.h"
24 
25 namespace cuttlefish {
26 
27 // TODO(chadreynolds): rename MiscInfo to more generic KeyValueFile since this
28 // logic is processing multiple filetypes now
29 using MiscInfo = std::map<std::string, std::string>;
30 
31 struct VbmetaArgs {
32   std::string algorithm;
33   std::string key_path;
34   std::vector<ChainPartition> chained_partitions;
35   std::vector<std::string> included_partitions;
36   std::vector<std::string> extra_arguments;
37 };
38 
39 Result<MiscInfo> ParseMiscInfo(const std::string& file_contents);
40 Result<void> WriteMiscInfo(const MiscInfo& misc_info,
41                            const std::string& output_path);
42 Result<MiscInfo> GetCombinedDynamicPartitions(
43     const MiscInfo& vendor_info, const MiscInfo& system_info,
44     const std::set<std::string>& extracted_images);
45 Result<MiscInfo> MergeMiscInfos(
46     const MiscInfo& vendor_info, const MiscInfo& system_info,
47     const MiscInfo& combined_dp_info,
48     const std::vector<std::string>& system_partitions);
49 Result<VbmetaArgs> GetVbmetaArgs(const MiscInfo& misc_info,
50                                  const std::string& image_path);
51 
52 } // namespace cuttlefish
53