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  std::string Type() const override { return ""; }
25  Uptane::EcuSerial getSerial() const override;
26  Uptane::HardwareIdentifier getHwId() const override;
27  PublicKey getPublicKey() const override;
28 
29  Uptane::Manifest getManifest() const override;
30  bool ping() const override { return true; }
31  bool putMetadata(const Uptane::RawMetaPack& meta_pack) override { return putMetadata(Metadata(meta_pack)); }
32  int32_t getRootVersion(bool director) const override;
33  bool putRoot(const std::string& root, bool director) override;
34  bool sendFirmware(const std::string& firmware) override;
35  data::ResultCode::Numeric install(const std::string& target_name) override;
36 
37  bool putMetadata(const Metadata& metadata);
38 
39  private:
40  bool hasPendingUpdate() { return storage_->hasPendingInstall(); }
41  bool doFullVerification(const Metadata& metadata);
42  void uptaneInitialize();
43  void initPendingTargetIfAny();
44 
45  private:
46  Uptane::DirectorRepository director_repo_;
47  Uptane::ImagesRepository image_repo_;
48 
49  Uptane::Target pending_target_{Uptane::Target::Unknown()};
50 
52  std::shared_ptr<INvStorage> storage_;
53  std::shared_ptr<KeyManager> keys_;
54  Uptane::ManifestIssuer::Ptr manifest_issuer_;
55 
56  Uptane::EcuSerial ecu_serial_{Uptane::EcuSerial::Unknown()};
57  Uptane::HardwareIdentifier hardware_id_{Uptane::HardwareIdentifier::Unknown()};
58 
59  std::shared_ptr<UpdateAgent> update_agent_;
60 };
61 
62 #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:534
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:128
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:126