From c3bf3d00a3077b66aa178f00fb789d34a042c9e8 Mon Sep 17 00:00:00 2001 From: Tianjie Date: Wed, 14 Jul 2021 15:56:37 -0700 Subject: [PATCH] Write the vbmeta digest to the output zipfile also During signing, we write the entry directly to the output zip, intead of a temp directory. Add the logic to write vbmeta_digest.txt to output zipfile too. So the digest file will show up in the signed target files. Bug: 189926233 Test: add_img_to_target_files -a Change-Id: Ibf28a8f97512bda8c8c695e06190e1fb6573c53e --- tools/releasetools/add_img_to_target_files.py | 39 ++++++++++++------- 1 file changed, 26 insertions(+), 13 deletions(-) diff --git a/tools/releasetools/add_img_to_target_files.py b/tools/releasetools/add_img_to_target_files.py index 28a2f5a191..b8c812d80d 100644 --- a/tools/releasetools/add_img_to_target_files.py +++ b/tools/releasetools/add_img_to_target_files.py @@ -706,6 +706,31 @@ def AddApexInfo(output_zip): common.ZipWrite(output_zip, output_file, arc_name) +def AddVbmetaDigest(output_zip): + """Write the vbmeta digest to the output dir and zipfile.""" + + # Calculate the vbmeta digest and put the result in to META/ + boot_images = OPTIONS.info_dict.get("boot_images") + # Disable the digest calculation if the target_file is used as a container + # for boot images. + boot_container = boot_images and len(boot_images.split()) >= 2 + if (OPTIONS.info_dict.get("avb_enable") == "true" and not boot_container and + OPTIONS.info_dict.get("avb_building_vbmeta_image") == "true"): + avbtool = OPTIONS.info_dict["avb_avbtool"] + digest = verity_utils.CalculateVbmetaDigest(OPTIONS.input_tmp, avbtool) + vbmeta_digest_txt = os.path.join(OPTIONS.input_tmp, "META", + "vbmeta_digest.txt") + with open(vbmeta_digest_txt, 'w') as f: + f.write(digest) + # writes to the output zipfile + if output_zip: + arc_name = "META/vbmeta_digest.txt" + if arc_name in output_zip.namelist(): + OPTIONS.replace_updated_files_list.append(arc_name) + else: + common.ZipWriteStr(output_zip, arc_name, digest) + + def AddImagesToTargetFiles(filename): """Creates and adds images (boot/recovery/system/...) to a target_files.zip. @@ -959,19 +984,7 @@ def AddImagesToTargetFiles(filename): with open(pack_radioimages_txt) as f: AddPackRadioImages(output_zip, f.readlines()) - # Calculate the vbmeta digest and put the result in to META/ - boot_images = OPTIONS.info_dict.get("boot_images") - # Disable the digest calculation if the target_file is used as a container - # for boot images. - boot_container = boot_images and len(boot_images.split()) >= 2 - if (OPTIONS.info_dict.get("avb_enable") == "true" and not boot_container and - OPTIONS.info_dict.get("avb_building_vbmeta_image") == "true"): - avbtool = OPTIONS.info_dict["avb_avbtool"] - digest = verity_utils.CalculateVbmetaDigest(OPTIONS.input_tmp, avbtool) - vbmeta_digest_txt = os.path.join(OPTIONS.input_tmp, "META", - "vbmeta_digest.txt") - with open(vbmeta_digest_txt, 'w') as f: - f.write(digest) + AddVbmetaDigest(output_zip) if output_zip: common.ZipClose(output_zip)