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

Commit 2f057467 authored by Tao Bao's avatar Tao Bao
Browse files

releasetools: build_image.BuildVerityTree() returns a tuple.

We don't need verity_root_hash or verity_salt to be in the prop dict.

Test: `m dist` with aosp_marlin-userdebug
Test: python -m unittest test_verity_utils
Change-Id: I5a9c50f4741dfb1083b3f590136335b6bc0e5216
parent 08fff562
Loading
Loading
Loading
Loading
+3 −6
Original line number Original line Diff line number Diff line
@@ -330,7 +330,7 @@ def BuildVerityFEC(sparse_image_path, verity_path, verity_fec_path,
        "Failed to build FEC data:\n{}".format(output))
        "Failed to build FEC data:\n{}".format(output))




def BuildVerityTree(sparse_image_path, verity_image_path, prop_dict):
def BuildVerityTree(sparse_image_path, verity_image_path):
  cmd = ["build_verity_tree", "-A", FIXED_SALT, sparse_image_path,
  cmd = ["build_verity_tree", "-A", FIXED_SALT, sparse_image_path,
         verity_image_path]
         verity_image_path]
  output, exit_code = RunCommand(cmd)
  output, exit_code = RunCommand(cmd)
@@ -338,8 +338,7 @@ def BuildVerityTree(sparse_image_path, verity_image_path, prop_dict):
    raise BuildImageError(
    raise BuildImageError(
        "Failed to build verity tree:\n{}".format(output))
        "Failed to build verity tree:\n{}".format(output))
  root, salt = output.split()
  root, salt = output.split()
  prop_dict["verity_root_hash"] = root
  return root, salt
  prop_dict["verity_salt"] = salt




def BuildVerityMetadata(image_size, verity_metadata_path, root_hash, salt,
def BuildVerityMetadata(image_size, verity_metadata_path, root_hash, salt,
@@ -453,11 +452,9 @@ def MakeVerityEnabledImage(out_file, fec_supported, prop_dict):
  verity_fec_path = os.path.join(tempdir_name, "verity_fec.img")
  verity_fec_path = os.path.join(tempdir_name, "verity_fec.img")


  # Build the verity tree and get the root hash and salt.
  # Build the verity tree and get the root hash and salt.
  BuildVerityTree(out_file, verity_image_path, prop_dict)
  root_hash, salt = BuildVerityTree(out_file, verity_image_path)


  # Build the metadata blocks.
  # Build the metadata blocks.
  root_hash = prop_dict["verity_root_hash"]
  salt = prop_dict["verity_salt"]
  verity_disable = "verity_disable" in prop_dict
  verity_disable = "verity_disable" in prop_dict
  BuildVerityMetadata(
  BuildVerityMetadata(
      image_size, verity_metadata_path, root_hash, salt, block_dev, signer_path,
      image_size, verity_metadata_path, root_hash, salt, block_dev, signer_path,
+12 −8
Original line number Original line Diff line number Diff line
@@ -169,14 +169,17 @@ class VerifiedBootVersion1HashtreeInfoGenerator(HashtreeInfoGenerator):
      self.image.WriteRangeDataToFd(self.hashtree_info.filesystem_range, fd)
      self.image.WriteRangeDataToFd(self.hashtree_info.filesystem_range, fd)


    generated_verity_tree = common.MakeTempFile(prefix="verity")
    generated_verity_tree = common.MakeTempFile(prefix="verity")
    prop_dict = {}
    root_hash, salt = BuildVerityTree(adjusted_partition, generated_verity_tree)
    BuildVerityTree(adjusted_partition, generated_verity_tree, prop_dict)


    # The salt should be always identical, as we use fixed value.
    assert prop_dict["verity_salt"] == self.hashtree_info.salt
    assert salt == self.hashtree_info.salt, \
    if prop_dict["verity_root_hash"] != self.hashtree_info.root_hash:
        "Calculated salt {} doesn't match the one in metadata {}".format(
      print("Calculated verty root hash {} doesn't match the one in metadata"
            salt, self.hashtree_info.salt)
            " {}".format(prop_dict["verity_root_hash"],

                         self.hashtree_info.root_hash))
    if root_hash != self.hashtree_info.root_hash:
      print(
          "Calculated root hash {} doesn't match the one in metadata {}".format(
              root_hash, self.hashtree_info.root_hash))
      return False
      return False


    # Reads the generated hash tree and checks if it has the exact same bytes
    # Reads the generated hash tree and checks if it has the exact same bytes
@@ -190,6 +193,7 @@ class VerifiedBootVersion1HashtreeInfoGenerator(HashtreeInfoGenerator):


    Returns:
    Returns:
      hashtree_info: The information needed to reconstruct the hashtree.
      hashtree_info: The information needed to reconstruct the hashtree.

    Raises:
    Raises:
      HashtreeInfoGenerationError: If we fail to generate the exact bytes of
      HashtreeInfoGenerationError: If we fail to generate the exact bytes of
          the hashtree.
          the hashtree.