releasetools: Fix an issue with pubkey extraction.
When calling 'openssl x509 -pubkey' to extract the public key from a certificate, openssl 1.0 and 1.1 handle the '-out' parameter differently. openssl 1.0 doesn't write the output into the specified filename, which leads to the payload verification failure in check_ota_package_signature.VerifyAbOtaPayload(). This CL addresses the issue by always collecting the output from stdout instead. It also refactors the two copies into common.ExtractPublicKey(), and adds unittest. get_testdata_dir() is moved into test_utils.py that holds common utils for running the unittests. Bug: 72884343 Test: python -m unittest test_common Test: python -m unittest test_ota_from_target_files Test: Run sign_target_files_apks with '--replace_ota_keys' on marlin target_files zip. Check the payload pubkey replacement. Test: Trigger the tests with forrest, and tests no longer fail on machines with openssl 1.0.1. Change-Id: Ib0389b360f064053e9aa7cc0546d718e7b23003b
This commit is contained in:
@@ -538,10 +538,7 @@ def ReplaceOtaKeys(input_tf_zip, output_tf_zip, misc_info):
|
||||
" as payload verification key.\n\n")
|
||||
|
||||
print("Using %s for payload verification." % (mapped_keys[0],))
|
||||
cmd = common.Run(
|
||||
["openssl", "x509", "-pubkey", "-noout", "-in", mapped_keys[0]],
|
||||
stdout=subprocess.PIPE)
|
||||
pubkey, _ = cmd.communicate()
|
||||
pubkey = common.ExtractPublicKey(mapped_keys[0])
|
||||
common.ZipWriteStr(
|
||||
output_tf_zip,
|
||||
"SYSTEM/etc/update_engine/update-payload-key.pub.pem",
|
||||
|
Reference in New Issue
Block a user