Aktualizr
C++ SOTA Client
All Classes Namespaces Files Functions Variables Enumerations Enumerator Pages
aktualizr_secondary.h
1 #ifndef AKTUALIZR_SECONDARY_H
2 #define AKTUALIZR_SECONDARY_H
3 
4 #include "aktualizr_secondary_config.h"
5 #include "aktualizr_secondary_metadata.h"
6 #include "uptane/secondaryinterface.h"
7 
8 #include "uptane/directorrepository.h"
9 #include "uptane/imagesrepository.h"
10 #include "uptane/manifest.h"
11 
12 class UpdateAgent;
13 class INvStorage;
14 class KeyManager;
15 
17  public:
18  using Ptr = std::shared_ptr<AktualizrSecondary>;
19 
20  public:
21  AktualizrSecondary(AktualizrSecondaryConfig config, std::shared_ptr<INvStorage> storage,
22  std::shared_ptr<KeyManager> key_mngr, std::shared_ptr<UpdateAgent> update_agent);
23 
24  Uptane::EcuSerial getSerial() const override;
25  Uptane::HardwareIdentifier getHwId() const override;
26  PublicKey getPublicKey() const override;
27 
28  Uptane::Manifest getManifest() const override;
29  bool putMetadata(const Uptane::RawMetaPack& meta_pack) override { return putMetadata(Metadata(meta_pack)); }
30  int32_t getRootVersion(bool director) const override;
31  bool putRoot(const std::string& root, bool director) override;
32  bool sendFirmware(const std::string& firmware) override;
33  data::ResultCode::Numeric install(const std::string& target_name) override;
34 
35  bool putMetadata(const Metadata& metadata);
36 
37  private:
38  bool hasPendingUpdate() { return storage_->hasPendingInstall(); }
39  bool doFullVerification(const Metadata& metadata);
40  bool uptaneInitialize();
41 
42  private:
43  // Uptane verification
44  Uptane::DirectorRepository director_repo_;
45  Uptane::ImagesRepository image_repo_;
46 
47  // installation
48  Uptane::Target pending_target_{Uptane::Target::Unknown()};
49 
51  std::shared_ptr<INvStorage> storage_;
52  std::shared_ptr<KeyManager> keys_;
53  Uptane::ManifestIssuer::Ptr manifest_issuer_;
54 
55  Uptane::EcuSerial ecu_serial_{Uptane::EcuSerial::Unknown()};
56  Uptane::HardwareIdentifier hardware_id_{Uptane::HardwareIdentifier::Unknown()};
57 
58  std::shared_ptr<UpdateAgent> update_agent_;
59 };
60 
61 #endif // AKTUALIZR_SECONDARY_H
UpdateAgent
Definition: update_agent.h:6
Uptane::DirectorRepository
Definition: directorrepository.h:13
KeyManager
Definition: keymanager.h:13
AktualizrSecondaryConfig
Definition: aktualizr_secondary_config.h:39
Uptane::HardwareIdentifier
Definition: tuf.h:143
Uptane::RawMetaPack
Definition: tuf.h:532
Uptane::EcuSerial
Definition: tuf.h:174
AktualizrSecondary
Definition: aktualizr_secondary.h:16
PublicKey
Definition: crypto.h:26
Uptane::Target
Definition: tuf.h:238
data::ResultCode::Numeric
Numeric
Definition: types.h:125
Metadata
Definition: aktualizr_secondary_metadata.h:8
Uptane::SecondaryInterface
Definition: secondaryinterface.h:12
Uptane::Manifest
Definition: manifest.h:13
Uptane::ImagesRepository
Definition: imagesrepository.h:13
INvStorage
Definition: invstorage.h:109