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 
7 #include "aktualizr_secondary_interface.h"
8 #include "msg_dispatcher.h"
9 
10 #include "uptane/directorrepository.h"
11 #include "uptane/imagerepository.h"
12 
13 class UpdateAgent;
14 class INvStorage;
15 class KeyManager;
16 
18  public:
19  using Ptr = std::shared_ptr<AktualizrSecondary>;
20 
21  public:
22  AktualizrSecondary(AktualizrSecondaryConfig config, std::shared_ptr<INvStorage> storage,
23  std::shared_ptr<KeyManager> key_mngr, std::shared_ptr<UpdateAgent> update_agent);
24 
25  std::tuple<Uptane::EcuSerial, Uptane::HardwareIdentifier, PublicKey> getInfo() const override;
26  Uptane::Manifest getManifest() const override;
27  bool putMetadata(const Uptane::RawMetaPack& meta_pack) override { return putMetadata(Metadata(meta_pack)); }
28  bool sendFirmware(const std::string& firmware) override;
29  data::ResultCode::Numeric install(const std::string& target_name) override;
30 
31  MsgDispatcher& getDispatcher() { return dispatcher_; }
32 
33  Uptane::EcuSerial getSerial() const;
34  Uptane::HardwareIdentifier getHwId() const;
35  PublicKey getPublicKey() const;
36  bool putMetadata(const Metadata& metadata);
37  void completeInstall();
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::ImageRepository 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 
62 };
63 
64 #endif // AKTUALIZR_SECONDARY_H
AktualizrSecondaryMsgDispatcher
Definition: msg_dispatcher.h:35
UpdateAgent
Definition: update_agent.h:6
Uptane::DirectorRepository
Definition: directorrepository.h:13
KeyManager
Definition: keymanager.h:13
IAktualizrSecondary
Definition: aktualizr_secondary_interface.h:6
AktualizrSecondaryConfig
Definition: aktualizr_secondary_config.h:40
Uptane::ImageRepository
Definition: imagerepository.h:13
Uptane::HardwareIdentifier
Definition: tuf.h:146
Uptane::RawMetaPack
Definition: tuf.h:507
Uptane::EcuSerial
Definition: tuf.h:177
AktualizrSecondary
Definition: aktualizr_secondary.h:17
PublicKey
Definition: crypto.h:26
MsgDispatcher
Definition: msg_dispatcher.h:12
Uptane::Target
Definition: tuf.h:210
data::ResultCode::Numeric
Numeric
Definition: types.h:128
Metadata
Definition: aktualizr_secondary_metadata.h:8
Uptane::Manifest
Definition: manifest.h:15
INvStorage
Definition: invstorage.h:126