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

Commit 923bd98f authored by Benoit Goby's avatar Benoit Goby Committed by Android (Google) Code Review
Browse files

Merge "UsbDebuggingManager: Add interface to clear secure adb keys"

parents 4843993e cd7a17c6
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -95,4 +95,7 @@ interface IUsbManager

    /* Deny USB debugging from the attached host */
    void denyUsbDebugging();

    /* Clear public keys installed for secure USB debugging */
    void clearUsbDebuggingKeys();
}
+25 −3
Original line number Diff line number Diff line
@@ -151,6 +151,7 @@ public class UsbDebuggingManager implements Runnable {
        private static final int MESSAGE_ADB_ALLOW = 3;
        private static final int MESSAGE_ADB_DENY = 4;
        private static final int MESSAGE_ADB_CONFIRM = 5;
        private static final int MESSAGE_ADB_CLEAR = 6;

        public UsbDebuggingHandler(Looper looper) {
            super(looper);
@@ -214,6 +215,10 @@ public class UsbDebuggingManager implements Runnable {
                    showConfirmationDialog(key, mFingerprints);
                    break;
                }

                case MESSAGE_ADB_CLEAR:
                    deleteKeyFile();
                    break;
            }
        }
    }
@@ -257,17 +262,25 @@ public class UsbDebuggingManager implements Runnable {
        }
    }

    private void writeKey(String key) {
    private File getUserKeyFile() {
        File dataDir = Environment.getDataDirectory();
        File adbDir = new File(dataDir, ADB_DIRECTORY);

        if (!adbDir.exists()) {
            Slog.e(TAG, "ADB data directory does not exist");
            return;
            return null;
        }

        return new File(adbDir, ADB_KEYS_FILE);
    }

    private void writeKey(String key) {
        try {
            File keyFile = new File(adbDir, ADB_KEYS_FILE);
            File keyFile = getUserKeyFile();

            if (keyFile == null) {
                return;
            }

            if (!keyFile.exists()) {
                keyFile.createNewFile();
@@ -286,6 +299,12 @@ public class UsbDebuggingManager implements Runnable {
        }
    }

    private void deleteKeyFile() {
        File keyFile = getUserKeyFile();
        if (keyFile != null) {
            keyFile.delete();
        }
    }

    public void setAdbEnabled(boolean enabled) {
        mHandler.sendEmptyMessage(enabled ? UsbDebuggingHandler.MESSAGE_ADB_ENABLED
@@ -303,6 +322,9 @@ public class UsbDebuggingManager implements Runnable {
        mHandler.sendEmptyMessage(UsbDebuggingHandler.MESSAGE_ADB_DENY);
    }

    public void clearUsbDebuggingKeys() {
        mHandler.sendEmptyMessage(UsbDebuggingHandler.MESSAGE_ADB_CLEAR);
    }

    public void dump(FileDescriptor fd, PrintWriter pw) {
        pw.println("  USB Debugging State:");
+9 −0
Original line number Diff line number Diff line
@@ -864,6 +864,15 @@ public class UsbDeviceManager {
        }
    }

    public void clearUsbDebuggingKeys() {
        if (mDebuggingManager != null) {
            mDebuggingManager.clearUsbDebuggingKeys();
        } else {
            throw new RuntimeException("Cannot clear Usb Debugging keys, "
                        + "UsbDebuggingManager not enabled");
        }
    }

    public void dump(FileDescriptor fd, PrintWriter pw) {
        if (mHandler != null) {
            mHandler.dump(fd, pw);
+6 −0
Original line number Diff line number Diff line
@@ -254,6 +254,12 @@ public class UsbService extends IUsbManager.Stub {
        mDeviceManager.denyUsbDebugging();
    }

    @Override
    public void clearUsbDebuggingKeys() {
        mContext.enforceCallingOrSelfPermission(android.Manifest.permission.MANAGE_USB, null);
        mDeviceManager.clearUsbDebuggingKeys();
    }

    @Override
    public void dump(FileDescriptor fd, PrintWriter writer, String[] args) {
        mContext.enforceCallingOrSelfPermission(android.Manifest.permission.DUMP, TAG);