Aktualizr
C++ SOTA Client
initializer.h
1 #ifndef INITIALIZER_H_
2 #define INITIALIZER_H_
3 
4 #include "libaktualizr/secondaryinterface.h"
5 
6 #include "crypto/keymanager.h"
7 #include "http/httpinterface.h"
8 #include "libaktualizr/config.h"
9 #include "storage/invstorage.h"
10 #include "uptane/tuf.h"
11 
12 const int MaxInitializationAttempts = 3;
13 
14 class Initializer {
15  public:
16  Initializer(const ProvisionConfig& config_in, std::shared_ptr<INvStorage> storage_in,
17  std::shared_ptr<HttpInterface> http_client_in, KeyManager& keys_in,
18  const std::map<Uptane::EcuSerial, std::shared_ptr<SecondaryInterface> >& secondaries_in);
19 
20  class Error : public std::runtime_error {
21  public:
22  Error(const std::string& what) : std::runtime_error(std::string("Initializer error: ") + what) {}
23  };
24  class KeyGenerationError : public Error {
25  public:
26  KeyGenerationError(const std::string& what) : Error(std::string("Could not generate Uptane key pair: ") + what) {}
27  };
28  class StorageError : public Error {
29  public:
30  StorageError(const std::string& what) : Error(std::string("Storage error: ") + what) {}
31  };
32  class ServerError : public Error {
33  public:
34  ServerError(const std::string& what) : Error(std::string("Server error: ") + what) {}
35  };
36  class ServerOccupied : public Error {
37  public:
38  ServerOccupied() : Error("") {}
39  };
40 
41  private:
42  void initDeviceId();
43  void resetDeviceId();
44  void initEcuSerials();
45  void initPrimaryEcuKeys();
46  void initTlsCreds();
47  void resetTlsCreds();
48  void initSecondaryInfo();
49  void initEcuRegister();
50  bool loadSetTlsCreds();
51  void initEcuReportCounter();
52 
53  const ProvisionConfig& config_;
54  std::shared_ptr<INvStorage> storage_;
55  std::shared_ptr<HttpInterface> http_client_;
56  KeyManager& keys_;
57  const std::map<Uptane::EcuSerial, SecondaryInterface::Ptr>& secondaries_;
58  std::vector<SecondaryInfo> sec_info_;
59  EcuSerials new_ecu_serials_;
60  bool register_ecus_{false};
61 };
62 
63 class EcuCompare {
64  public:
65  explicit EcuCompare(std::pair<Uptane::EcuSerial, Uptane::HardwareIdentifier> ecu_in)
66  : serial(std::move(ecu_in.first)), hardware_id(std::move(ecu_in.second)) {}
67  bool operator()(const std::pair<Uptane::EcuSerial, Uptane::HardwareIdentifier>& in) const {
68  return (in.first == serial && in.second == hardware_id);
69  }
70 
71  private:
72  const Uptane::EcuSerial serial;
73  const Uptane::HardwareIdentifier hardware_id;
74 };
75 
76 #endif // INITIALIZER_H_
Initializer::StorageError
Definition: initializer.h:28
ProvisionConfig
Definition: config.h:51
Initializer::ServerError
Definition: initializer.h:32
KeyManager
Definition: keymanager.h:13
EcuCompare
Definition: initializer.h:63
Initializer::ServerOccupied
Definition: initializer.h:36
Uptane::HardwareIdentifier
Definition: types.h:315
Uptane::EcuSerial
Definition: types.h:346
Initializer::KeyGenerationError
Definition: initializer.h:24
Initializer
Definition: initializer.h:14
Initializer::Error
Definition: initializer.h:20