From f6fe0a9c9c790e456955273b2c9e14a9c6ea6999 Mon Sep 17 00:00:00 2001 From: Kelvin Zhang Date: Fri, 25 Aug 2023 13:41:42 -0700 Subject: [PATCH] Reduce OTA tools's dependency on brillo_update_payload brillo_update_payload is thin bash wrapper for delta_generator, and OTA tools are wrappers around brillo_update_payload. This is inconveinent, as adding a new flag requires changing 3 places. Since brillo_update_payload is really thin, skip it and invoke delta_generator directly. Test: th Bug: 293313353 Change-Id: I2fd5af95c571ea45aea62f9eec475f0f4e864953 --- tools/releasetools/ota_utils.py | 25 +------------------------ tools/releasetools/payload_signer.py | 23 +++++++++++------------ 2 files changed, 12 insertions(+), 36 deletions(-) diff --git a/tools/releasetools/ota_utils.py b/tools/releasetools/ota_utils.py index 8993da9eb7..9b3367ebe1 100644 --- a/tools/releasetools/ota_utils.py +++ b/tools/releasetools/ota_utils.py @@ -897,30 +897,7 @@ class PayloadGenerator(object): """ assert isinstance(payload_signer, PayloadSigner) - # 1. Generate hashes of the payload and metadata files. - payload_sig_file = common.MakeTempFile(prefix="sig-", suffix=".bin") - metadata_sig_file = common.MakeTempFile(prefix="sig-", suffix=".bin") - cmd = ["brillo_update_payload", "hash", - "--unsigned_payload", self.payload_file, - "--signature_size", str(payload_signer.maximum_signature_size), - "--metadata_hash_file", metadata_sig_file, - "--payload_hash_file", payload_sig_file] - self._Run(cmd) - - # 2. Sign the hashes. - signed_payload_sig_file = payload_signer.SignHashFile(payload_sig_file) - signed_metadata_sig_file = payload_signer.SignHashFile(metadata_sig_file) - - # 3. Insert the signatures back into the payload file. - signed_payload_file = common.MakeTempFile(prefix="signed-payload-", - suffix=".bin") - cmd = ["brillo_update_payload", "sign", - "--unsigned_payload", self.payload_file, - "--payload", signed_payload_file, - "--signature_size", str(payload_signer.maximum_signature_size), - "--metadata_signature_file", signed_metadata_sig_file, - "--payload_signature_file", signed_payload_sig_file] - self._Run(cmd) + signed_payload_file = payload_signer.SignPayload(self.payload_file) self.payload_file = signed_payload_file diff --git a/tools/releasetools/payload_signer.py b/tools/releasetools/payload_signer.py index 9933aefeb8..bbd2896508 100644 --- a/tools/releasetools/payload_signer.py +++ b/tools/releasetools/payload_signer.py @@ -95,11 +95,11 @@ class PayloadSigner(object): # 1. Generate hashes of the payload and metadata files. payload_sig_file = common.MakeTempFile(prefix="sig-", suffix=".bin") metadata_sig_file = common.MakeTempFile(prefix="sig-", suffix=".bin") - cmd = ["brillo_update_payload", "hash", - "--unsigned_payload", unsigned_payload, - "--signature_size", str(self.maximum_signature_size), - "--metadata_hash_file", metadata_sig_file, - "--payload_hash_file", payload_sig_file] + cmd = ["delta_generator", + "--in_file=" + unsigned_payload, + "--signature_size=" + str(self.maximum_signature_size), + "--out_metadata_hash_file=" + metadata_sig_file, + "--out_hash_file=" + payload_sig_file] self._Run(cmd) # 2. Sign the hashes. @@ -109,16 +109,15 @@ class PayloadSigner(object): # 3. Insert the signatures back into the payload file. signed_payload_file = common.MakeTempFile(prefix="signed-payload-", suffix=".bin") - cmd = ["brillo_update_payload", "sign", - "--unsigned_payload", unsigned_payload, - "--payload", signed_payload_file, - "--signature_size", str(self.maximum_signature_size), - "--metadata_signature_file", signed_metadata_sig_file, - "--payload_signature_file", signed_payload_sig_file] + cmd = ["delta_generator", + "--in_file=" + unsigned_payload, + "--out_file=" + signed_payload_file, + "--signature_size=" + str(self.maximum_signature_size), + "--metadata_signature_file=" + signed_metadata_sig_file, + "--payload_signature_file=" + signed_payload_sig_file] self._Run(cmd) return signed_payload_file - def SignHashFile(self, in_file): """Signs the given input file. Returns the output filename.""" out_file = common.MakeTempFile(prefix="signed-", suffix=".bin")