1 #ifndef UPTANE_TEST_COMMON_H_
2 #define UPTANE_TEST_COMMON_H_
9 #include "config/config.h"
10 #include "uptane/tuf.h"
11 #include "utilities/utils.h"
12 #include "virtualsecondary.h"
13 #include "primary/sotauptaneclient.h"
14 #include "primary/aktualizr.h"
16 static const char* sec_public_key =
"-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAyjUeAzozBEccaGFAJ2Q3\n9QBfItH5i5O7yLRjZlKcEnWnFsxAWHUn5W/msRgZN/pXUrlax0wvrvMvHHLwZA2J\nz+UQApzSqj53HPVAcCH6kB9x0r9PM/0vVTKtmcrdSHj7jJ2yAW2T4Vo/eKlpvz3w\n9kTPAj0j1f5LvUgX5VIjUnsQK1LGzMwnleHk2dkWeWnt3OqomnO7V5C0jkDi58tG\nJ6fnyCYWcMUbpMaldXVXqmQ+iBkWxBjZ99+XJSRjdsskC7x8u8t+sA146VDB977r\nN8D+i+P1tAe810crciUqpYNenDYx47aAm6gaDWr7oeDzp3HyCjx4dZi9Z85rVE36\n8wIDAQAB\n-----END PUBLIC KEY-----\n";
17 static const char* sec_private_key =
"-----BEGIN RSA PRIVATE KEY-----\nMIIEpAIBAAKCAQEAyjUeAzozBEccaGFAJ2Q39QBfItH5i5O7yLRjZlKcEnWnFsxA\nWHUn5W/msRgZN/pXUrlax0wvrvMvHHLwZA2Jz+UQApzSqj53HPVAcCH6kB9x0r9P\nM/0vVTKtmcrdSHj7jJ2yAW2T4Vo/eKlpvz3w9kTPAj0j1f5LvUgX5VIjUnsQK1LG\nzMwnleHk2dkWeWnt3OqomnO7V5C0jkDi58tGJ6fnyCYWcMUbpMaldXVXqmQ+iBkW\nxBjZ99+XJSRjdsskC7x8u8t+sA146VDB977rN8D+i+P1tAe810crciUqpYNenDYx\n47aAm6gaDWr7oeDzp3HyCjx4dZi9Z85rVE368wIDAQABAoIBAA0WlxS6Zab3O11+\nPfrOv9h5566HTNG+BD+ffXeYDUYcm24cVmXjX2u4bIQ1/RvkdlaCbN/NjKCUWQ5M\nWkb/oVX1i62/nNssI+WZ8kvPxzog7usnOucwkim/mAEGYoBYZF/brTPudc32W3lh\n7dhVGA24snWAo5ssVJax3eoYAPVLqFK5Pb8VUxpHtjERMDDUxM3w6WGXLxuBdA5s\n5vIdv+XrdiQhdPn1HMYEBBInkkYK8w4UytOCAS1/3xfVi2QwX5H9bHkduFpjLSQt\n2StWR9Kh4I80xXp7FwGpfkdUn+3qj5WwneuGY/JnD7AzjDlAThj0AE9iaYjkzXKJ\nVD4ULmECgYEA+UGQ1aglftFuTO427Xmi7tHhooo9U1pKMrg5CkCLkA+MudFzMEgj\npRtDdj8lTTWHEIYQXo5hhZfhk63j89RAKRz1MDFOvgknE8yJa9rSyCAEcwzRzXcY\n3WtWozEZ+5u4KYFHhGjJCSqVFdwyXmjP9ldb35Uxh06OuTbdNkSbiUsCgYEAz62t\nJ1EftTkd/YA/9Poq1deil5g0btPXnMJMj7C99dexNAXuVhS10Rz1Hi74wCFEbkcV\nGL/8U80pER9YYYeFUmqs1pYu7zwcYBT+iNrvFaPifid8FqlJEJ727swnWdpzXpwv\n/6q0h3JXU2odrEMNaGqiPycHQ/45EWMbCtpSs/kCgYEAwjMgWicA17bqvkuXRhzQ\nIkwqBU65ixi82JmJ73/sfNhwp1IV8hcylnAQdq+qK2a6Ddi2JkW+m6yDF2GTSiUj\nvCSQr/SqygsthBKHOx4pvbycWtsxF2lkWRdJUCpweQWRTd0o0HQntdmUgIyoPcBh\nzyevMBr4lNhTAOFLJv37RNMCgYAQq+ODjXqbJKuopvv7YX3Azt+phbln0C+10M8u\nlcSaEKeUAongdScnU0jGFIU5fzIsHB6wbvEFlSmfy0FgCu4D8LZRP5si71Njzyuj\ntteMiCxtbiQC+bH42JoAD3l1OBkc1jLwNjbpzJ7//jvFkVhpMm413Z8ysRzJrYgF\nNgN/mQKBgQDNT2nFoqanlQPkZekqNQNcVMHPyOWP40z4HC5JD1Z5F18Kg3El4EdS\nNfwaFGRT5qiFJBmmzl+6EFmUrrBNtV01zQ6rO+xgy2Y7qUQMNAUMjh1cCpWwUlN0\ng4aT/RawS5WpWN3+lEs4Ouxpgg4ZStXNZRJkSDHwZpkXtFfKzsEXaA==\n-----END RSA PRIVATE KEY-----\n";
26 std::shared_ptr<INvStorage> storage,
27 std::shared_ptr<HttpInterface> http)
30 if (boost::filesystem::exists(config.uptane.secondary_config_file)) {
31 for (
const auto& item : Primary::VirtualSecondaryConfig::create_from_file(config.uptane.secondary_config_file)) {
32 AddSecondary(std::make_shared<Primary::VirtualSecondary>(item));
37 std::shared_ptr<SotaUptaneClient>& uptane_client() {
return uptane_client_; }
44 std::shared_ptr<INvStorage> storage_in,
45 std::shared_ptr<HttpInterface> http_client,
46 std::shared_ptr<event::Channel> events_channel_in):
49 if (boost::filesystem::exists(config_in.uptane.secondary_config_file)) {
50 for (
const auto& item : Primary::VirtualSecondaryConfig::create_from_file(config_in.uptane.secondary_config_file)) {
51 addSecondary(std::make_shared<Primary::VirtualSecondary>(item));
57 std::shared_ptr<INvStorage> storage_in,
58 std::shared_ptr<HttpInterface> http_client) :
TestUptaneClient(config_in, storage_in, http_client,
nullptr) {}
61 std::shared_ptr<INvStorage> storage_in) :
TestUptaneClient(config_in, storage_in, std::make_shared<HttpClient>()) {}
65 const std::string& serial,
const std::string& hw_id,
66 bool hardcoded_keys =
true) {
69 ecu_config.partial_verifying =
false;
70 ecu_config.full_client_dir = temp_dir.Path();
71 ecu_config.ecu_serial = serial;
72 ecu_config.ecu_hardware_id = hw_id;
73 ecu_config.ecu_private_key =
"sec.priv";
74 ecu_config.ecu_public_key =
"sec.pub";
75 ecu_config.firmware_path = temp_dir /
"firmware.txt";
76 ecu_config.target_name_path = temp_dir /
"firmware_name.txt";
77 ecu_config.metadata_path = temp_dir /
"secondary_metadata";
79 config.uptane.secondary_config_file = temp_dir / boost::filesystem::unique_path() /
"virtual_secondary_conf.json";
80 ecu_config.dump(config.uptane.secondary_config_file);
84 Utils::writeFile((ecu_config.full_client_dir / ecu_config.ecu_private_key), std::string(sec_private_key));
85 Utils::writeFile((ecu_config.full_client_dir / ecu_config.ecu_public_key), std::string(sec_public_key));
91 Config conf(
"tests/config/basic.toml");
92 conf.uptane.director_server = url +
"/director";
93 conf.uptane.repo_server = url +
"/repo";
94 conf.provision.server = url;
95 conf.provision.primary_ecu_serial =
"CA:FE:A6:D2:84:9D";
96 conf.provision.primary_ecu_hardware_id =
"primary_hw";
97 conf.storage.path = temp_dir.Path();
98 conf.import.base_path = temp_dir.Path() /
"import";
99 conf.tls.server = url;
100 conf.bootloader.reboot_sentinel_dir = temp_dir.Path();
101 UptaneTestCommon::addDefaultSecondary(conf, temp_dir,
"secondary_ecu_serial",
"secondary_hw");
105 static std::vector<Uptane::Target> makePackage(
const std::string &serial,
const std::string &hw_id) {
106 std::vector<Uptane::Target> packages_to_install;
108 ot_json[
"custom"][
"ecuIdentifiers"][serial][
"hardwareId"] = hw_id;
109 ot_json[
"custom"][
"targetFormat"] =
"OSTREE";
110 ot_json[
"length"] = 0;
111 ot_json[
"hashes"][
"sha256"] = serial;
112 packages_to_install.emplace_back(serial, ot_json);
113 return packages_to_install;
117 #endif // UPTANE_TEST_COMMON_H_