// Copyright 2018 The Chromium OS Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef LIBBRILLO_BRILLO_IMAGELOADER_MANIFEST_H_ #define LIBBRILLO_BRILLO_IMAGELOADER_MANIFEST_H_ #include <map> #include <string> #include <vector> #include <base/macros.h> #include <brillo/brillo_export.h> namespace brillo { namespace imageloader { // The supported file systems for images. enum class FileSystem { kExt4, kSquashFS }; // A class to parse and store imageloader.json manifest. class BRILLO_EXPORT Manifest { public: Manifest(); // Parse the manifest raw string. Return true if successful. bool ParseManifest(const std::string& manifest_raw); // Getters for manifest fields: int manifest_version() const; const std::vector<uint8_t>& image_sha256() const; const std::vector<uint8_t>& table_sha256() const; const std::string& version() const; FileSystem fs_type() const; bool is_removable() const; const std::map<std::string, std::string> metadata() const; private: // Manifest fields: int manifest_version_; std::vector<uint8_t> image_sha256_; std::vector<uint8_t> table_sha256_; std::string version_; FileSystem fs_type_; bool is_removable_; std::map<std::string, std::string> metadata_; DISALLOW_COPY_AND_ASSIGN(Manifest); }; } // namespace imageloader } // namespace brillo #endif // LIBBRILLO_BRILLO_IMAGELOADER_MANIFEST_H_