From 000011116ac03d2146cae309d68ca19972fa3f9f Mon Sep 17 00:00:00 2001 From: Billy Lau Date: Mon, 28 Nov 2022 14:53:02 -0600 Subject: [PATCH] BinaryTransparencyService: Translate content digest algo ID to string Created a new helper method (`translateContentDigestAlgorithmIdToString`) that translates an int representing a content digest algorithm ID to a string that is more human readable, explaining what algorithm that is being used to compute the content digest. Bug: 259348134 Test: atest BinaryTransparencyServiceTest. Change-Id: I64853145fa7d46269a1533bd59398bc52ee958f5 --- .../server/BinaryTransparencyService.java | 64 +++++++------------ 1 file changed, 22 insertions(+), 42 deletions(-) diff --git a/services/core/java/com/android/server/BinaryTransparencyService.java b/services/core/java/com/android/server/BinaryTransparencyService.java index 68880bd09a408..59024e797d7ab 100644 --- a/services/core/java/com/android/server/BinaryTransparencyService.java +++ b/services/core/java/com/android/server/BinaryTransparencyService.java @@ -489,24 +489,10 @@ public class BinaryTransparencyService extends SystemService { Integer algorithmId = entry.getKey(); byte[] contentDigest = entry.getValue(); - // TODO(b/259348134): consider refactoring the following to a helper method - switch (algorithmId) { - case ApkSigningBlockUtils.CONTENT_DIGEST_CHUNKED_SHA256: - pw.print("CHUNKED_SHA256:"); - break; - case ApkSigningBlockUtils.CONTENT_DIGEST_CHUNKED_SHA512: - pw.print("CHUNKED_SHA512:"); - break; - case ApkSigningBlockUtils.CONTENT_DIGEST_VERITY_CHUNKED_SHA256: - pw.print("VERITY_CHUNKED_SHA256:"); - break; - case ApkSigningBlockUtils.CONTENT_DIGEST_SHA256: - pw.print("SHA256:"); - break; - default: - pw.print("UNKNOWN_ALGO_ID(" + algorithmId + "):"); - } + pw.print(translateContentDigestAlgorithmIdToString(algorithmId)); + pw.print(":"); pw.print(HexEncoding.encodeToString(contentDigest, false)); + pw.print("\n"); } } @@ -533,31 +519,13 @@ public class BinaryTransparencyService extends SystemService { pw.println("ERROR: Failed to compute package content digest for " + origPackageFilepath); } else { - // TODO(b/259348134): consider refactoring this to a helper method for (Map.Entry entry : contentDigests.entrySet()) { Integer algorithmId = entry.getKey(); byte[] contentDigest = entry.getValue(); - pw.print("|--> Pre-installed package content digest algorithm: "); - switch (algorithmId) { - case ApkSigningBlockUtils.CONTENT_DIGEST_CHUNKED_SHA256: - pw.print("CHUNKED_SHA256"); - break; - case ApkSigningBlockUtils.CONTENT_DIGEST_CHUNKED_SHA512: - pw.print("CHUNKED_SHA512"); - break; - case ApkSigningBlockUtils.CONTENT_DIGEST_VERITY_CHUNKED_SHA256: - pw.print("VERITY_CHUNKED_SHA256"); - break; - case ApkSigningBlockUtils.CONTENT_DIGEST_SHA256: - pw.print("SHA256"); - break; - default: - pw.print("UNKNOWN"); - } - pw.print("\n"); - pw.print("|--> Pre-installed package content digest: "); - pw.print(HexEncoding.encodeToString(contentDigest, false)); - pw.print("\n"); + pw.println("|--> Pre-installed package content digest: " + + HexEncoding.encodeToString(contentDigest, false)); + pw.println("|--> Pre-installed package content digest algorithm: " + + translateContentDigestAlgorithmIdToString(algorithmId)); } } } @@ -739,7 +707,6 @@ public class BinaryTransparencyService extends SystemService { pw.print(packageName + "," + packageInfo.getLongVersionCode() + ","); printPackageMeasurements(packageInfo, pw); - pw.print("\n"); if (verbose) { ModuleInfo moduleInfo; @@ -802,7 +769,6 @@ public class BinaryTransparencyService extends SystemService { pw.print(packageInfo.packageName + ","); pw.print(packageInfo.getLongVersionCode() + ","); printPackageMeasurements(packageInfo, pw); - pw.print("\n"); if (verbose) { printModuleDetails(module, pw); @@ -858,7 +824,6 @@ public class BinaryTransparencyService extends SystemService { pw.print(packageInfo.packageName + ","); pw.print(packageInfo.getLongVersionCode() + ","); printPackageMeasurements(packageInfo, pw); - pw.print("\n"); if (verbose) { printAppDetails(packageInfo, printLibraries, pw); @@ -1079,6 +1044,21 @@ public class BinaryTransparencyService extends SystemService { FrameworkStatsLog.write(FrameworkStatsLog.VBMETA_DIGEST_REPORTED, mVbmetaDigest); } + private String translateContentDigestAlgorithmIdToString(int algorithmId) { + switch (algorithmId) { + case ApkSigningBlockUtils.CONTENT_DIGEST_CHUNKED_SHA256: + return "CHUNKED_SHA256"; + case ApkSigningBlockUtils.CONTENT_DIGEST_CHUNKED_SHA512: + return "CHUNKED_SHA512"; + case ApkSigningBlockUtils.CONTENT_DIGEST_VERITY_CHUNKED_SHA256: + return "VERITY_CHUNKED_SHA256"; + case ApkSigningBlockUtils.CONTENT_DIGEST_SHA256: + return "SHA256"; + default: + return "UNKNOWN_ALGO_ID(" + algorithmId + ")"; + } + } + @NonNull private List getCurrentInstalledApexs() { List results = new ArrayList<>();