Loading tools/releasetools/check_target_files_signatures.py +5 −0 Original line number Diff line number Diff line Loading @@ -39,6 +39,7 @@ Usage: check_target_file_signatures [flags] target_files """ import logging import os import re import subprocess Loading @@ -52,6 +53,8 @@ if sys.hexversion < 0x02070000: sys.exit(1) logger = logging.getLogger(__name__) # Work around a bug in Python's zipfile module that prevents opening of zipfiles # if any entry has an extra field of between 1 and 3 bytes (which is common with # zipaligned APKs). This overrides the ZipInfo._decodeExtra() method (which Loading Loading @@ -415,6 +418,8 @@ def main(argv): common.Usage(__doc__) sys.exit(1) common.InitLogging() ALL_CERTS.FindLocalCerts() Push("input target_files:") Loading tools/releasetools/common.py +18 −6 Original line number Diff line number Diff line Loading @@ -50,7 +50,8 @@ class Options(object): if base_out_path is None: base_search_path = "out" else: base_search_path = os.path.join(base_out_path, os.path.basename(os.getcwd())) base_search_path = os.path.join(base_out_path, os.path.basename(os.getcwd())) platform_search_path = { "linux2": os.path.join(base_search_path, "host/linux-x86"), Loading Loading @@ -552,11 +553,7 @@ def GetAvbChainedPartitionArg(partition, info_dict, key=None): """ if key is None: key = info_dict["avb_" + partition + "_key_path"] avbtool = os.getenv('AVBTOOL') or info_dict["avb_avbtool"] pubkey_path = MakeTempFile(prefix="avb-", suffix=".pubkey") RunAndCheckOutput( [avbtool, "extract_public_key", "--key", key, "--output", pubkey_path]) pubkey_path = ExtractAvbPublicKey(key) rollback_index_location = info_dict[ "avb_" + partition + "_rollback_index_location"] return "{}:{}:{}".format(partition, rollback_index_location, pubkey_path) Loading Loading @@ -2123,6 +2120,21 @@ def ExtractPublicKey(cert): return pubkey def ExtractAvbPublicKey(key): """Extracts the AVB public key from the given public or private key. Args: key: The input key file, which should be PEM-encoded public or private key. Returns: The path to the extracted AVB public key file. """ output = MakeTempFile(prefix='avb-', suffix='.avbpubkey') RunAndCheckOutput( ['avbtool', 'extract_public_key', "--key", key, "--output", output]) return output def MakeRecoveryPatch(input_dir, output_sink, recovery_img, boot_img, info_dict=None): """Generates the recovery-from-boot patch and writes the script to output. Loading tools/releasetools/sign_target_files_apks.py +8 −6 Original line number Diff line number Diff line Loading @@ -102,6 +102,7 @@ import base64 import copy import errno import gzip import logging import os import re import shutil Loading @@ -121,6 +122,8 @@ if sys.hexversion < 0x02070000: sys.exit(1) logger = logging.getLogger(__name__) OPTIONS = common.OPTIONS OPTIONS.extra_apks = {} Loading Loading @@ -180,11 +183,8 @@ def GetApkFileInfo(filename, compressed_extension, skipped_prefixes): # skipped_prefixes should be one of set/list/tuple types. Other types such as # str shouldn't be accepted. assert (isinstance(skipped_prefixes, tuple) or isinstance(skipped_prefixes, set) or isinstance(skipped_prefixes, list)), \ "Invalid skipped_prefixes input type: {}".format( type(skipped_prefixes)) assert isinstance(skipped_prefixes, (set, list, tuple)), \ "Invalid skipped_prefixes input type: {}".format(type(skipped_prefixes)) compressed_apk_extension = ( ".apk" + compressed_extension if compressed_extension else None) Loading Loading @@ -816,7 +816,7 @@ def GetCodenameToApiLevelMap(input_tf_zip): result = dict() for codename in codenames: codename = codename.strip() if len(codename) > 0: if codename: result[codename] = api_level return result Loading Loading @@ -926,6 +926,8 @@ def main(argv): common.Usage(__doc__) sys.exit(1) common.InitLogging() input_zip = zipfile.ZipFile(args[0], "r") output_zip = zipfile.ZipFile(args[1], "w", compression=zipfile.ZIP_DEFLATED, Loading tools/releasetools/test_common.py +8 −1 Original line number Diff line number Diff line Loading @@ -491,6 +491,13 @@ class CommonApkUtilsTest(test_utils.ReleaseToolsTestCase): wrong_input = os.path.join(self.testdata_dir, 'testkey.pk8') self.assertRaises(AssertionError, common.ExtractPublicKey, wrong_input) def test_ExtractAvbPublicKey(self): privkey = os.path.join(self.testdata_dir, 'testkey.key') pubkey = os.path.join(self.testdata_dir, 'testkey.pubkey.pem') with open(common.ExtractAvbPublicKey(privkey)) as privkey_fp, \ open(common.ExtractAvbPublicKey(pubkey)) as pubkey_fp: self.assertEqual(privkey_fp.read(), pubkey_fp.read()) def test_ParseCertificate(self): cert = os.path.join(self.testdata_dir, 'testkey.x509.pem') Loading Loading
tools/releasetools/check_target_files_signatures.py +5 −0 Original line number Diff line number Diff line Loading @@ -39,6 +39,7 @@ Usage: check_target_file_signatures [flags] target_files """ import logging import os import re import subprocess Loading @@ -52,6 +53,8 @@ if sys.hexversion < 0x02070000: sys.exit(1) logger = logging.getLogger(__name__) # Work around a bug in Python's zipfile module that prevents opening of zipfiles # if any entry has an extra field of between 1 and 3 bytes (which is common with # zipaligned APKs). This overrides the ZipInfo._decodeExtra() method (which Loading Loading @@ -415,6 +418,8 @@ def main(argv): common.Usage(__doc__) sys.exit(1) common.InitLogging() ALL_CERTS.FindLocalCerts() Push("input target_files:") Loading
tools/releasetools/common.py +18 −6 Original line number Diff line number Diff line Loading @@ -50,7 +50,8 @@ class Options(object): if base_out_path is None: base_search_path = "out" else: base_search_path = os.path.join(base_out_path, os.path.basename(os.getcwd())) base_search_path = os.path.join(base_out_path, os.path.basename(os.getcwd())) platform_search_path = { "linux2": os.path.join(base_search_path, "host/linux-x86"), Loading Loading @@ -552,11 +553,7 @@ def GetAvbChainedPartitionArg(partition, info_dict, key=None): """ if key is None: key = info_dict["avb_" + partition + "_key_path"] avbtool = os.getenv('AVBTOOL') or info_dict["avb_avbtool"] pubkey_path = MakeTempFile(prefix="avb-", suffix=".pubkey") RunAndCheckOutput( [avbtool, "extract_public_key", "--key", key, "--output", pubkey_path]) pubkey_path = ExtractAvbPublicKey(key) rollback_index_location = info_dict[ "avb_" + partition + "_rollback_index_location"] return "{}:{}:{}".format(partition, rollback_index_location, pubkey_path) Loading Loading @@ -2123,6 +2120,21 @@ def ExtractPublicKey(cert): return pubkey def ExtractAvbPublicKey(key): """Extracts the AVB public key from the given public or private key. Args: key: The input key file, which should be PEM-encoded public or private key. Returns: The path to the extracted AVB public key file. """ output = MakeTempFile(prefix='avb-', suffix='.avbpubkey') RunAndCheckOutput( ['avbtool', 'extract_public_key', "--key", key, "--output", output]) return output def MakeRecoveryPatch(input_dir, output_sink, recovery_img, boot_img, info_dict=None): """Generates the recovery-from-boot patch and writes the script to output. Loading
tools/releasetools/sign_target_files_apks.py +8 −6 Original line number Diff line number Diff line Loading @@ -102,6 +102,7 @@ import base64 import copy import errno import gzip import logging import os import re import shutil Loading @@ -121,6 +122,8 @@ if sys.hexversion < 0x02070000: sys.exit(1) logger = logging.getLogger(__name__) OPTIONS = common.OPTIONS OPTIONS.extra_apks = {} Loading Loading @@ -180,11 +183,8 @@ def GetApkFileInfo(filename, compressed_extension, skipped_prefixes): # skipped_prefixes should be one of set/list/tuple types. Other types such as # str shouldn't be accepted. assert (isinstance(skipped_prefixes, tuple) or isinstance(skipped_prefixes, set) or isinstance(skipped_prefixes, list)), \ "Invalid skipped_prefixes input type: {}".format( type(skipped_prefixes)) assert isinstance(skipped_prefixes, (set, list, tuple)), \ "Invalid skipped_prefixes input type: {}".format(type(skipped_prefixes)) compressed_apk_extension = ( ".apk" + compressed_extension if compressed_extension else None) Loading Loading @@ -816,7 +816,7 @@ def GetCodenameToApiLevelMap(input_tf_zip): result = dict() for codename in codenames: codename = codename.strip() if len(codename) > 0: if codename: result[codename] = api_level return result Loading Loading @@ -926,6 +926,8 @@ def main(argv): common.Usage(__doc__) sys.exit(1) common.InitLogging() input_zip = zipfile.ZipFile(args[0], "r") output_zip = zipfile.ZipFile(args[1], "w", compression=zipfile.ZIP_DEFLATED, Loading
tools/releasetools/test_common.py +8 −1 Original line number Diff line number Diff line Loading @@ -491,6 +491,13 @@ class CommonApkUtilsTest(test_utils.ReleaseToolsTestCase): wrong_input = os.path.join(self.testdata_dir, 'testkey.pk8') self.assertRaises(AssertionError, common.ExtractPublicKey, wrong_input) def test_ExtractAvbPublicKey(self): privkey = os.path.join(self.testdata_dir, 'testkey.key') pubkey = os.path.join(self.testdata_dir, 'testkey.pubkey.pem') with open(common.ExtractAvbPublicKey(privkey)) as privkey_fp, \ open(common.ExtractAvbPublicKey(pubkey)) as pubkey_fp: self.assertEqual(privkey_fp.read(), pubkey_fp.read()) def test_ParseCertificate(self): cert = os.path.join(self.testdata_dir, 'testkey.x509.pem') Loading