Aktualizr
C++ SOTA Client
All Classes Namespaces Files Functions Variables Enumerations Enumerator Pages
manifest.h
1 #ifndef AKTUALIZR_UPTANE_MANIFEST_H
2 #define AKTUALIZR_UPTANE_MANIFEST_H
3 
4 #include "json/json.h"
5 #include "tuf.h"
6 
7 #include <memory>
8 
9 class KeyManager;
10 
11 namespace Uptane {
12 
13 class Manifest : public Json::Value {
14  public:
15  Manifest(const Json::Value &value = Json::Value()) : Json::Value(value) {}
16 
17  public:
18  std::string filepath() const;
19  Hash installedImageHash() const;
20  std::string signature() const;
21  std::string signedBody() const;
22  bool verifySignature(PublicKey &&pub_key) const;
23 };
24 
26  public:
27  using Ptr = std::shared_ptr<ManifestIssuer>;
28 
29  public:
30  ManifestIssuer(std::shared_ptr<KeyManager> &key_mngr, Uptane::EcuSerial ecu_serial)
31  : ecu_serial_(std::move(ecu_serial)), key_mngr_(key_mngr) {}
32 
33  static Manifest assembleManifest(const InstalledImageInfo &installed_image_info, const Uptane::EcuSerial &ecu_serial);
34  static Hash generateVersionHash(const std::string &data);
35  static std::string generateVersionHashStr(const std::string &data);
36 
37  Manifest sign(const Manifest &manifest, const std::string &report_counter = "") const;
38 
39  Manifest assembleManifest(const InstalledImageInfo &installed_image_info) const;
40  Manifest assembleManifest(const Uptane::Target &target) const;
41 
42  Manifest assembleAndSignManifest(const InstalledImageInfo &installed_image_info) const;
43 
44  private:
45  const Uptane::EcuSerial ecu_serial_;
46  std::shared_ptr<KeyManager> key_mngr_;
47 };
48 
49 } // namespace Uptane
50 
51 #endif // AKTUALIZR_UPTANE_MANIFEST_H
KeyManager
Definition: keymanager.h:13
Uptane::ManifestIssuer
Definition: manifest.h:25
data
General data structures.
Definition: types.cc:44
Uptane::Hash
The hash of a file or TUF metadata.
Definition: tuf.h:209
Uptane::InstalledImageInfo
Definition: tuf.h:132
Uptane::EcuSerial
Definition: tuf.h:174
PublicKey
Definition: crypto.h:26
Uptane::Target
Definition: tuf.h:238
Uptane
Base data types that are used in The Update Framework (TUF), part of UPTANE.
Definition: secondary_tcp_server.h:8
Uptane::Manifest
Definition: manifest.h:13