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

Commit 9e7f3ba3 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Automerger Merge Worker
Browse files

Merge "Update associate API by adding certificate param" into sc-dev am: 06cd94a6

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/14686826

Change-Id: I7368fe9124c9a71c1ca5f4961db57857dd6ecd90
parents bc0014b0 06cd94a6
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -2246,7 +2246,7 @@ package android.bluetooth.le {
package android.companion {
  public final class CompanionDeviceManager {
    method @RequiresPermission(android.Manifest.permission.ASSOCIATE_COMPANION_DEVICES) public void associate(@NonNull String, @NonNull android.net.MacAddress);
    method @RequiresPermission(android.Manifest.permission.ASSOCIATE_COMPANION_DEVICES) public void associate(@NonNull String, @NonNull android.net.MacAddress, @NonNull byte[]);
    method @RequiresPermission("android.permission.MANAGE_COMPANION_DEVICES") public boolean canPairWithoutPrompt(@NonNull String, @NonNull String, @NonNull android.os.UserHandle);
    method @RequiresPermission("android.permission.MANAGE_COMPANION_DEVICES") public boolean isDeviceAssociatedForWifiConnection(@NonNull String, @NonNull android.net.MacAddress, @NonNull android.os.UserHandle);
  }
+7 −2
Original line number Diff line number Diff line
@@ -442,13 +442,18 @@ public final class CompanionDeviceManager {
    /**
     * Associates given device with given app for the given user directly, without UI prompt.
     *
     * @param packageName package name of the companion app
     * @param macAddress mac address of the device to associate
     * @param certificate The SHA256 digest of the companion app's signing certificate
     *
     * @hide
     */
    @SystemApi
    @RequiresPermission(android.Manifest.permission.ASSOCIATE_COMPANION_DEVICES)
    public void associate(
            @NonNull String packageName,
            @NonNull MacAddress macAddress) {
            @NonNull MacAddress macAddress,
            @NonNull byte[] certificate) {
        if (!checkFeaturePresent()) {
            return;
        }
@@ -458,7 +463,7 @@ public final class CompanionDeviceManager {
        UserHandle user = android.os.Process.myUserHandle();
        try {
            mService.createAssociation(
                    packageName, macAddress.toString(), user.getIdentifier());
                    packageName, macAddress.toString(), user.getIdentifier(), certificate);
        } catch (RemoteException e) {
            throw e.rethrowFromSystemServer();
        }
+2 −1
Original line number Diff line number Diff line
@@ -52,5 +52,6 @@ interface ICompanionDeviceManager {

    boolean canPairWithoutPrompt(in String packageName, in String deviceMacAddress, int userId);

    void createAssociation(in String packageName, in String macAddress, int userId);
    void createAssociation(in String packageName, in String macAddress, int userId,
        in byte[] certificate);
}
+9 −1
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@ package com.android.server.companion;
import static android.bluetooth.le.ScanSettings.CALLBACK_TYPE_ALL_MATCHES;
import static android.bluetooth.le.ScanSettings.SCAN_MODE_BALANCED;
import static android.content.Context.BIND_IMPORTANT;
import static android.content.pm.PackageManager.CERT_INPUT_SHA256;
import static android.content.pm.PackageManager.MATCH_ALL;
import static android.content.pm.PackageManager.PERMISSION_GRANTED;

@@ -657,7 +658,14 @@ public class CompanionDeviceManagerService extends SystemService implements Bind
        }

        @Override
        public void createAssociation(String packageName, String macAddress, int userId) {
        public void createAssociation(String packageName, String macAddress, int userId,
                byte[] certificate) {
            if (!getContext().getPackageManager().hasSigningCertificate(
                    packageName, certificate, CERT_INPUT_SHA256)) {
                Slog.e(LOG_TAG, "Given certificate doesn't match the package certificate.");
                return;
            }

            getContext().enforceCallingOrSelfPermission(
                    android.Manifest.permission.ASSOCIATE_COMPANION_DEVICES, "createAssociation");