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

Commit 4d48d500 authored by Tianjie's avatar Tianjie
Browse files

Handles capex in signing script

Today, the signing script simply ignores capex files, because it
looks for hardcoded '.apex' suffix. Add support to handle capex
as well.

Bug: 190574334
Test: Sign a target file locally
Change-Id: I3085ca7b0396a4fbf1b220f7de44d4eafb60c3d8
parent d3c78b8c
Loading
Loading
Loading
Loading
+20 −6
Original line number Diff line number Diff line
@@ -217,6 +217,18 @@ for partition in common.AVB_PARTITIONS:
    raise RuntimeError("Missing {} in AVB_FOOTER_ARGS".format(partition))


def IsApexFile(filename):
  return filename.endswith(".apex") or filename.endswith(".capex")


def GetApexFilename(filename):
  name = os.path.basename(filename)
  # Replace the suffix for compressed apex
  if name.endswith(".capex"):
    return name.replace(".capex", ".apex")
  return name


def GetApkCerts(certmap):
  # apply the key remapping to the contents of the file
  for apk, cert in certmap.items():
@@ -356,8 +368,8 @@ def CheckApkAndApexKeysAvailable(input_tf_zip, known_keys,
  unknown_files = []
  for info in input_tf_zip.infolist():
    # Handle APEXes on all partitions
    if info.filename.endswith('.apex'):
      name = os.path.basename(info.filename)
    if IsApexFile(info.filename):
      name = GetApexFilename(info.filename)
      if name not in known_keys:
        unknown_files.append(name)
      continue
@@ -388,10 +400,11 @@ def CheckApkAndApexKeysAvailable(input_tf_zip, known_keys,

  invalid_apexes = []
  for info in input_tf_zip.infolist():
    if not info.filename.endswith('.apex'):
    if not IsApexFile(info.filename):
      continue

    name = os.path.basename(info.filename)
    name = GetApexFilename(info.filename)

    (payload_key, container_key) = apex_keys[name]
    if ((payload_key in common.SPECIAL_CERT_STRINGS and
         container_key not in common.SPECIAL_CERT_STRINGS) or
@@ -541,8 +554,9 @@ def ProcessTargetFiles(input_tf_zip, output_tf_zip, misc_info,
        common.ZipWriteStr(output_tf_zip, out_info, data)

    # Sign bundled APEX files on all partitions
    elif filename.endswith(".apex"):
      name = os.path.basename(filename)
    elif IsApexFile(filename):
      name = GetApexFilename(filename)

      payload_key, container_key = apex_keys[name]

      # We've asserted not having a case with only one of them PRESIGNED.