1 #include "aktualizr_secondary_metadata.h"
4 : _director_metadata{{Uptane::Role::ROOT, meta_pack.director_root},
5 {Uptane::Role::TARGETS, meta_pack.director_targets}},
7 {Uptane::Role::ROOT, meta_pack.image_root},
8 {Uptane::Role::TIMESTAMP, meta_pack.image_timestamp},
9 {Uptane::Role::SNAPSHOT, meta_pack.image_snapshot},
10 {Uptane::Role::TARGETS, meta_pack.image_targets},
12 director_root_version =
Uptane::Version(Uptane::extractVersionUntrusted(meta_pack.director_root));
13 image_root_version =
Uptane::Version(Uptane::extractVersionUntrusted(meta_pack.image_root));
20 getRoleMetadata(
result, repo, role, version);
31 const std::unordered_map<std::string, std::string>* metadata_map =
nullptr;
33 if (repo == Uptane::RepositoryType::Director()) {
34 metadata_map = &_director_metadata;
35 }
else if (repo == Uptane::RepositoryType::Image()) {
36 metadata_map = &_image_metadata;
39 if (metadata_map ==
nullptr) {
40 LOG_ERROR <<
"There are no any metadata for the given type of repository: " << repo.toString();
41 throw std::runtime_error(
"TODO");
44 auto found_meta_it = metadata_map->find(role.ToString());
45 if (found_meta_it == metadata_map->end()) {
46 LOG_ERROR <<
"There are no any metadata for the given type of role: " << repo.toString() <<
": " << role.ToString();
47 throw std::runtime_error(
"TODO");
54 if (repo == Uptane::RepositoryType::Director() && director_root_version < version) {
55 LOG_DEBUG <<
"Requested Director root version " << version <<
" but only version " << director_root_version
57 throw std::runtime_error(
"TODO");
58 }
else if (repo == Uptane::RepositoryType::Image() && image_root_version < version) {
59 LOG_DEBUG <<
"Requested Image repo root version " << version <<
" but only version " << image_root_version
61 throw std::runtime_error(
"TODO");
65 *
result = found_meta_it->second;