summaryrefslogtreecommitdiff
path: root/core/java/android/transparency/BinaryTransparencyManager.java
diff options
context:
space:
mode:
authorBilly Lau <billylau@google.com>2022-01-20 15:42:17 -0800
committerBilly Lau <billylau@google.com>2022-01-24 15:58:05 -0800
commitd1fb08be0a3e4415ae5ac9935ca51a8c02ad90c1 (patch)
treeceacdc8711284c67f31c667006bbcf9eb288eec4 /core/java/android/transparency/BinaryTransparencyManager.java
parent5a6ec226765ecddcaee8274a9ae24fa8ee35717a (diff)
Add BinaryTransparencyService as new SystemService.
Bug: 197684182 Created a new system service that aggregates information about: 1) signed partitions on device 2) APEXs installed on device 3) Modules installed on device Introduces new adb shell commands as below: adb shell cmd transparency get image_info [-a] adb shell cmd transparency get apex_info [-v] adb shell cmd transparency get module_info [-v] Test: Built and tested locally on a bramble - the device boots. Issuing adb shell commands as above provides correct outputs. Change-Id: I2cae1bd794456688779c70c65b3f5ec8bcd7c6b3
Diffstat (limited to 'core/java/android/transparency/BinaryTransparencyManager.java')
-rw-r--r--core/java/android/transparency/BinaryTransparencyManager.java83
1 files changed, 83 insertions, 0 deletions
diff --git a/core/java/android/transparency/BinaryTransparencyManager.java b/core/java/android/transparency/BinaryTransparencyManager.java
new file mode 100644
index 000000000000..18783f507085
--- /dev/null
+++ b/core/java/android/transparency/BinaryTransparencyManager.java
@@ -0,0 +1,83 @@
+/*
+ * Copyright (C) 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.transparency;
+
+import android.annotation.NonNull;
+import android.annotation.SystemService;
+import android.content.Context;
+import android.os.RemoteException;
+import android.util.Slog;
+
+import com.android.internal.os.IBinaryTransparencyService;
+
+import java.util.Map;
+
+/**
+ * BinaryTransparencyManager defines a number of system interfaces that other system apps or
+ * services can make use of, when trying to get more information about the various binaries
+ * that are installed on this device.
+ * @hide
+ */
+@SystemService(Context.BINARY_TRANSPARENCY_SERVICE)
+public class BinaryTransparencyManager {
+ private static final String TAG = "TransparencyManager";
+
+ private final Context mContext;
+ private final IBinaryTransparencyService mService;
+
+ /**
+ * Constructor
+ * @param context The calling context.
+ * @param service A valid instance of IBinaryTransparencyService.
+ * @hide
+ */
+ public BinaryTransparencyManager(Context context, IBinaryTransparencyService service) {
+ mContext = context;
+ mService = service;
+ }
+
+
+ /**
+ * Obtains a string containing information that describes the signed images that are installed
+ * on this device. Currently, this piece of information is identified as the VBMeta digest.
+ * @return A String containing the VBMeta Digest of the signed partitions loaded on this device.
+ */
+ @NonNull
+ public String getSignedImageInfo() {
+ try {
+ return mService.getSignedImageInfo();
+ } catch (RemoteException e) {
+ throw e.rethrowFromSystemServer();
+ }
+ }
+
+ /**
+ * Returns a map of all installed APEXs consisting of package name to SHA256 hash of the
+ * package.
+ * @return A Map with the following entries: {apex package name : sha256 digest of package}
+ */
+ @NonNull
+ public Map getApexInfo() {
+ try {
+ Slog.d(TAG, "Calling backend's getApexInfo()");
+ return mService.getApexInfo();
+ } catch (RemoteException e) {
+ throw e.rethrowFromSystemServer();
+ }
+ }
+
+}