| #pragma once |
| #include <experimental/filesystem> |
| |
| namespace phosphor |
| { |
| namespace software |
| { |
| namespace image |
| { |
| |
| namespace fs = std::experimental::filesystem; |
| |
| /** @class Signature |
| * @brief Contains signature verification functions. |
| * @details The software image class that contains the signature |
| * verification functions for signed image. |
| */ |
| class Signature |
| { |
| public: |
| Signature() = delete; |
| Signature(const Signature&) = delete; |
| Signature& operator=(const Signature&) = delete; |
| Signature(Signature&&) = default; |
| Signature& operator=(Signature&&) = default; |
| ~Signature() = default; |
| |
| /** @brief Constructs Verify Class |
| * |
| * @param[in] imageDirPath - file path |
| */ |
| Signature(const fs::path& imageDirPath) : imageDirPath(imageDirPath){}; |
| |
| /** |
| * @brief Image signature verification function. |
| * Verify the Manifest and public key file signature using the |
| * public keys available in the system first. After successful |
| * validation, continue the whole image files signature |
| * validation using the image specific public key and the |
| * hash function. |
| * |
| * @return true if signature verification was successful, |
| * false if not |
| */ |
| bool verify(); |
| |
| private: |
| /** @brief Directory where software images are placed*/ |
| fs::path imageDirPath; |
| }; |
| |
| } // namespace image |
| } // namespace software |
| } // namespace phosphor |