delta_generator: Add --out_metadata_size_file flag.
delta_generator will write the metadata size in text to the given file.
This flag will only be accepted when generating or signing the payload.
Bug: 24751934
TEST=called delta_generator with this flag.
Change-Id: I824079dc4c18534a80ded77902f4ea8f6dbbd20f
diff --git a/payload_generator/generate_delta_main.cc b/payload_generator/generate_delta_main.cc
index c3232fb..e6e7c98 100644
--- a/payload_generator/generate_delta_main.cc
+++ b/payload_generator/generate_delta_main.cc
@@ -147,7 +147,8 @@
void SignPayload(const string& in_file,
const string& out_file,
- const string& signature_file) {
+ const string& signature_file,
+ const string& out_metadata_size_file) {
LOG(INFO) << "Signing payload.";
LOG_IF(FATAL, in_file.empty())
<< "Must pass --in_file to sign payload.";
@@ -168,6 +169,12 @@
in_file, signatures, out_file, &final_metadata_size));
LOG(INFO) << "Done signing payload. Final metadata size = "
<< final_metadata_size;
+ if (!out_metadata_size_file.empty()) {
+ string metadata_size_string = std::to_string(final_metadata_size);
+ CHECK(utils::WriteFile(out_metadata_size_file.c_str(),
+ metadata_size_string.data(),
+ metadata_size_string.size()));
+ }
}
void VerifySignedPayload(const string& in_file,
@@ -258,6 +265,8 @@
DEFINE_string(out_hash_file, "", "Path to output hash file");
DEFINE_string(out_metadata_hash_file, "",
"Path to output metadata hash file");
+ DEFINE_string(out_metadata_size_file, "",
+ "Path to output metadata size file");
DEFINE_string(private_key, "", "Path to private key in .pem format");
DEFINE_string(public_key, "", "Path to public key in .pem format");
DEFINE_int32(public_key_version, -1,
@@ -346,6 +355,7 @@
ParseSignatureSizes(FLAGS_signature_size, &signature_sizes);
if (!FLAGS_out_hash_file.empty() || !FLAGS_out_metadata_hash_file.empty()) {
+ CHECK(FLAGS_out_metadata_size_file.empty());
if (!FLAGS_out_hash_file.empty()) {
CalculatePayloadHashForSigning(signature_sizes, FLAGS_out_hash_file,
FLAGS_in_file);
@@ -358,7 +368,8 @@
return 0;
}
if (!FLAGS_signature_file.empty()) {
- SignPayload(FLAGS_in_file, FLAGS_out_file, FLAGS_signature_file);
+ SignPayload(FLAGS_in_file, FLAGS_out_file, FLAGS_signature_file,
+ FLAGS_out_metadata_size_file);
return 0;
}
if (!FLAGS_public_key.empty()) {
@@ -520,7 +531,12 @@
&metadata_size)) {
return 1;
}
-
+ if (!FLAGS_out_metadata_size_file.empty()) {
+ string metadata_size_string = std::to_string(metadata_size);
+ CHECK(utils::WriteFile(FLAGS_out_metadata_size_file.c_str(),
+ metadata_size_string.data(),
+ metadata_size_string.size()));
+ }
return 0;
}