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/imagerepository.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  void completeInstall();
38  bool putMetadata(const Metadata& metadata);
39 
40  private:
41  bool hasPendingUpdate() { return storage_->hasPendingInstall(); }
42  bool doFullVerification(const Metadata& metadata);
43  void uptaneInitialize();
44  void initPendingTargetIfAny();
45 
46  private:
47  Uptane::DirectorRepository director_repo_;
48  Uptane::ImageRepository image_repo_;
49 
50  Uptane::Target pending_target_{Uptane::Target::Unknown()};
51 
53  std::shared_ptr<INvStorage> storage_;
54  std::shared_ptr<KeyManager> keys_;
55  Uptane::ManifestIssuer::Ptr manifest_issuer_;
56 
57  Uptane::EcuSerial ecu_serial_{Uptane::EcuSerial::Unknown()};
58  Uptane::HardwareIdentifier hardware_id_{Uptane::HardwareIdentifier::Unknown()};
59 
60  std::shared_ptr<UpdateAgent> update_agent_;
61 };
62 
63 #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:40
Uptane::ImageRepository
Definition: imagerepository.h:13
Uptane::HardwareIdentifier
Definition: tuf.h:143
Uptane::RawMetaPack
Definition: tuf.h:535
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
INvStorage
Definition: invstorage.h:126