1 #include "update_agent_file.h"
2 #include "logging/logging.h"
3 #include "uptane/manifest.h"
5 bool FileUpdateAgent::isTargetSupported(
const Uptane::Target& target)
const {
return target.type() !=
"OSTREE"; }
8 if (boost::filesystem::exists(target_filepath_)) {
9 auto file_content = Utils::readFile(target_filepath_);
11 installed_image_info.name = current_target_name_;
12 installed_image_info.len = file_content.size();
13 installed_image_info.hash = Uptane::ManifestIssuer::generateVersionHashStr(file_content);
16 auto unknown_target = Uptane::Target::Unknown();
17 installed_image_info.name = unknown_target.filename();
18 installed_image_info.len = unknown_target.length();
19 installed_image_info.hash = unknown_target.sha256Hash();
25 bool FileUpdateAgent::download(
const Uptane::Target& target,
const std::string&
data) {
26 auto target_hashes = target.hashes();
27 if (target_hashes.size() == 0) {
28 LOG_ERROR <<
"No hash found in the target metadata: " << target.filename();
33 auto received_image_data_hash = Uptane::ManifestIssuer::generateVersionHash(
data);
35 if (!target.MatchHash(received_image_data_hash)) {
36 LOG_ERROR <<
"The received image data hash doesn't match the hash specified in the target metadata,"
38 << target_hashes[0].TypeString();
42 Utils::writeFile(target_filepath_,
data);
43 current_target_name_ = target.filename();
45 }
catch (
const std::exception& exc) {
46 LOG_ERROR <<
"Failed to generate a hash of the received image data: " << exc.what();
54 return data::ResultCode::Numeric::kOk;
60 "Applying of the pending updates are not supported by the file update agent");