Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 015f8313 authored by Tao Bao's avatar Tao Bao Committed by Gerrit Code Review
Browse files

Merge changes I1f645008,Ic68c019f

* changes:
  releasetools: Add common.ExtractAvbPublicKey().
  releasetools: Initalize logger when signing.
parents 8c288103 2cc0ca17
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -39,6 +39,7 @@ Usage: check_target_file_signatures [flags] target_files

"""

import logging
import os
import re
import subprocess
@@ -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
@@ -415,6 +418,8 @@ def main(argv):
    common.Usage(__doc__)
    sys.exit(1)

  common.InitLogging()

  ALL_CERTS.FindLocalCerts()

  Push("input target_files:")
+18 −6
Original line number Diff line number Diff line
@@ -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"),
@@ -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)
@@ -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.
+8 −6
Original line number Diff line number Diff line
@@ -102,6 +102,7 @@ import base64
import copy
import errno
import gzip
import logging
import os
import re
import shutil
@@ -121,6 +122,8 @@ if sys.hexversion < 0x02070000:
  sys.exit(1)


logger = logging.getLogger(__name__)

OPTIONS = common.OPTIONS

OPTIONS.extra_apks = {}
@@ -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)
@@ -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

@@ -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,
+8 −1
Original line number Diff line number Diff line
@@ -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')