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