Fix pvmfw.img signing error

This commit fixes the following error, by extracting
'SYSTEM/apex/com.android.virt.apex' from a target-files
zip file to a temp file, then gets the Microdroid AVB
key from it.

FileNotFoundError:
  [Errno 2] No such file or directory: 'SYSTEM/apex/com.android.virt.apex'

Bug: 384813199
Bug: 395932577
Test: m sign_target_files_apks
Test: sign_target_files_apks --allow_gsi_debug_sepolicy \
        --extra_apex_payload_key com.android.virt.apex= \
        -e com.android.virt.apex= \
        gsi_arm64-target_files-${build_id}.zip signed.zip
Test: unzip signed.zip IMAGES/pvmfw.img
Test: avbtool extract_public_key --key external/avb/test/data/testkey_rsa4096.pem --out key.pub
Test: grep -U -F -f key.pub IMAGES/pvmfw.img => grep: IMAGES/pvmfw.img: binary file matches
(cherry picked from https://android-review.googlesource.com/q/commit:a7d257cc8fc0055812b93912926e3f5bf827f162)
Merged-In: I4a4129d221778906fb739a574d7adb48e91e9eda
Change-Id: I4a4129d221778906fb739a574d7adb48e91e9eda
diff --git a/tools/releasetools/sign_target_files_apks.py b/tools/releasetools/sign_target_files_apks.py
index ef90085..29e97e0 100755
--- a/tools/releasetools/sign_target_files_apks.py
+++ b/tools/releasetools/sign_target_files_apks.py
@@ -800,8 +800,11 @@
 
         # b/384813199: handles the pre-signed com.android.virt.apex in GSI.
         if payload_key == 'PRESIGNED':
-          new_pubkey = GetMicrodroidVbmetaKey(virt_apex_path,
-                                              misc_info['avb_avbtool'])
+          with tempfile.NamedTemporaryFile() as virt_apex_temp_file:
+            virt_apex_temp_file.write(input_tf_zip.read(virt_apex_path))
+            virt_apex_temp_file.flush()
+            new_pubkey = GetMicrodroidVbmetaKey(virt_apex_temp_file.name,
+                                                misc_info['avb_avbtool'])
         else:
           new_pubkey_path = common.ExtractAvbPublicKey(
               misc_info['avb_avbtool'], payload_key)