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

Commit aa6b9db9 authored by Treehugger Robot's avatar Treehugger Robot Committed by Gerrit Code Review
Browse files

Merge "Metrics: Use byte[] instead of ByteString in AdapterService.obfuscateAddress"

parents 5d09f537 625df0a4
Loading
Loading
Loading
Loading
+3 −4
Original line number Original line Diff line number Diff line
@@ -73,7 +73,6 @@ import com.android.internal.R;
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.app.IBatteryStats;
import com.android.internal.app.IBatteryStats;


import com.google.protobuf.ByteString;
import com.google.protobuf.InvalidProtocolBufferException;
import com.google.protobuf.InvalidProtocolBufferException;


import java.io.FileDescriptor;
import java.io.FileDescriptor;
@@ -2620,10 +2619,10 @@ public class AdapterService extends Service {
     *  Obfuscate Bluetooth MAC address into a PII free ID string
     *  Obfuscate Bluetooth MAC address into a PII free ID string
     *
     *
     *  @param device Bluetooth device whose MAC address will be obfuscated
     *  @param device Bluetooth device whose MAC address will be obfuscated
     *  @return a {@link ByteString} that is unique to this MAC address on this device
     *  @return a byte array that is unique to this MAC address on this device
     */
     */
    public ByteString obfuscateAddress(BluetoothDevice device) {
    public byte[] obfuscateAddress(BluetoothDevice device) {
        return ByteString.copyFrom(obfuscateAddressNative(Utils.getByteAddress(device)));
        return obfuscateAddressNative(Utils.getByteAddress(device));
    }
    }


    static native void classInitNative();
    static native void classInitNative();
+58 −62
Original line number Original line Diff line number Diff line
@@ -45,8 +45,6 @@ import com.android.bluetooth.R;
import com.android.bluetooth.TestUtils;
import com.android.bluetooth.TestUtils;
import com.android.bluetooth.Utils;
import com.android.bluetooth.Utils;


import com.google.protobuf.ByteString;

import org.junit.After;
import org.junit.After;
import org.junit.Assert;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Before;
@@ -506,11 +504,10 @@ public class AdapterServiceTest {
        byte[] metricsSalt = getMetricsSalt(mAdapterConfig);
        byte[] metricsSalt = getMetricsSalt(mAdapterConfig);
        Assert.assertNotNull(metricsSalt);
        Assert.assertNotNull(metricsSalt);
        BluetoothDevice device = TestUtils.getTestDevice(BluetoothAdapter.getDefaultAdapter(), 0);
        BluetoothDevice device = TestUtils.getTestDevice(BluetoothAdapter.getDefaultAdapter(), 0);
        ByteString obfuscatedAddress = mAdapterService.obfuscateAddress(device);
        byte[] obfuscatedAddress = mAdapterService.obfuscateAddress(device);
        Assert.assertFalse(obfuscatedAddress.isEmpty());
        Assert.assertTrue(obfuscatedAddress.length > 0);
        Assert.assertFalse(isByteArrayAllZero(obfuscatedAddress.toByteArray()));
        Assert.assertFalse(isByteArrayAllZero(obfuscatedAddress));
        Assert.assertArrayEquals(obfuscateInJava(metricsSalt, device),
        Assert.assertArrayEquals(obfuscateInJava(metricsSalt, device), obfuscatedAddress);
                obfuscatedAddress.toByteArray());
    }
    }


    /**
    /**
@@ -525,11 +522,10 @@ public class AdapterServiceTest {
        byte[] metricsSalt = getMetricsSalt(mAdapterConfig);
        byte[] metricsSalt = getMetricsSalt(mAdapterConfig);
        Assert.assertNotNull(metricsSalt);
        Assert.assertNotNull(metricsSalt);
        BluetoothDevice device = TestUtils.getTestDevice(BluetoothAdapter.getDefaultAdapter(), 0);
        BluetoothDevice device = TestUtils.getTestDevice(BluetoothAdapter.getDefaultAdapter(), 0);
        ByteString obfuscatedAddress = mAdapterService.obfuscateAddress(device);
        byte[] obfuscatedAddress = mAdapterService.obfuscateAddress(device);
        Assert.assertFalse(obfuscatedAddress.isEmpty());
        Assert.assertTrue(obfuscatedAddress.length > 0);
        Assert.assertFalse(isByteArrayAllZero(obfuscatedAddress.toByteArray()));
        Assert.assertFalse(isByteArrayAllZero(obfuscatedAddress));
        Assert.assertArrayEquals(obfuscateInJava(metricsSalt, device),
        Assert.assertArrayEquals(obfuscateInJava(metricsSalt, device), obfuscatedAddress);
                obfuscatedAddress.toByteArray());
    }
    }


    /**
    /**
@@ -541,27 +537,27 @@ public class AdapterServiceTest {
        byte[] metricsSalt = getMetricsSalt(mAdapterConfig);
        byte[] metricsSalt = getMetricsSalt(mAdapterConfig);
        Assert.assertNotNull(metricsSalt);
        Assert.assertNotNull(metricsSalt);
        BluetoothDevice device = TestUtils.getTestDevice(BluetoothAdapter.getDefaultAdapter(), 0);
        BluetoothDevice device = TestUtils.getTestDevice(BluetoothAdapter.getDefaultAdapter(), 0);
        ByteString obfuscatedAddress1 = mAdapterService.obfuscateAddress(device);
        byte[] obfuscatedAddress1 = mAdapterService.obfuscateAddress(device);
        Assert.assertFalse(obfuscatedAddress1.isEmpty());
        Assert.assertTrue(obfuscatedAddress1.length > 0);
        Assert.assertFalse(isByteArrayAllZero(obfuscatedAddress1.toByteArray()));
        Assert.assertFalse(isByteArrayAllZero(obfuscatedAddress1));
        Assert.assertArrayEquals(obfuscateInJava(metricsSalt, device),
        Assert.assertArrayEquals(obfuscateInJava(metricsSalt, device),
                obfuscatedAddress1.toByteArray());
                obfuscatedAddress1);
        // Enable
        // Enable
        doEnable(0, false);
        doEnable(0, false);
        Assert.assertTrue(mAdapterService.isEnabled());
        Assert.assertTrue(mAdapterService.isEnabled());
        ByteString obfuscatedAddress3 = mAdapterService.obfuscateAddress(device);
        byte[] obfuscatedAddress3 = mAdapterService.obfuscateAddress(device);
        Assert.assertFalse(obfuscatedAddress3.isEmpty());
        Assert.assertTrue(obfuscatedAddress3.length > 0);
        Assert.assertFalse(isByteArrayAllZero(obfuscatedAddress3.toByteArray()));
        Assert.assertFalse(isByteArrayAllZero(obfuscatedAddress3));
        Assert.assertArrayEquals(obfuscatedAddress3.toByteArray(),
        Assert.assertArrayEquals(obfuscatedAddress3,
                obfuscatedAddress1.toByteArray());
                obfuscatedAddress1);
        // Disable
        // Disable
        doDisable(0, false);
        doDisable(0, false);
        Assert.assertFalse(mAdapterService.isEnabled());
        Assert.assertFalse(mAdapterService.isEnabled());
        ByteString obfuscatedAddress4 = mAdapterService.obfuscateAddress(device);
        byte[] obfuscatedAddress4 = mAdapterService.obfuscateAddress(device);
        Assert.assertFalse(obfuscatedAddress4.isEmpty());
        Assert.assertTrue(obfuscatedAddress4.length > 0);
        Assert.assertFalse(isByteArrayAllZero(obfuscatedAddress4.toByteArray()));
        Assert.assertFalse(isByteArrayAllZero(obfuscatedAddress4));
        Assert.assertArrayEquals(obfuscatedAddress4.toByteArray(),
        Assert.assertArrayEquals(obfuscatedAddress4,
                obfuscatedAddress1.toByteArray());
                obfuscatedAddress1);
    }
    }


    /**
    /**
@@ -575,19 +571,19 @@ public class AdapterServiceTest {
        Assert.assertNotNull(metricsSalt);
        Assert.assertNotNull(metricsSalt);
        Assert.assertFalse(mAdapterService.isEnabled());
        Assert.assertFalse(mAdapterService.isEnabled());
        BluetoothDevice device = TestUtils.getTestDevice(BluetoothAdapter.getDefaultAdapter(), 0);
        BluetoothDevice device = TestUtils.getTestDevice(BluetoothAdapter.getDefaultAdapter(), 0);
        ByteString obfuscatedAddress1 = mAdapterService.obfuscateAddress(device);
        byte[] obfuscatedAddress1 = mAdapterService.obfuscateAddress(device);
        Assert.assertFalse(obfuscatedAddress1.isEmpty());
        Assert.assertTrue(obfuscatedAddress1.length > 0);
        Assert.assertFalse(isByteArrayAllZero(obfuscatedAddress1.toByteArray()));
        Assert.assertFalse(isByteArrayAllZero(obfuscatedAddress1));
        Assert.assertArrayEquals(obfuscateInJava(metricsSalt, device),
        Assert.assertArrayEquals(obfuscateInJava(metricsSalt, device),
                obfuscatedAddress1.toByteArray());
                obfuscatedAddress1);
        tearDown();
        tearDown();
        setUp();
        setUp();
        Assert.assertFalse(mAdapterService.isEnabled());
        Assert.assertFalse(mAdapterService.isEnabled());
        ByteString obfuscatedAddress2 = mAdapterService.obfuscateAddress(device);
        byte[] obfuscatedAddress2 = mAdapterService.obfuscateAddress(device);
        Assert.assertFalse(obfuscatedAddress2.isEmpty());
        Assert.assertTrue(obfuscatedAddress2.length > 0);
        Assert.assertFalse(isByteArrayAllZero(obfuscatedAddress2.toByteArray()));
        Assert.assertFalse(isByteArrayAllZero(obfuscatedAddress2));
        Assert.assertArrayEquals(obfuscatedAddress2.toByteArray(),
        Assert.assertArrayEquals(obfuscatedAddress2,
                obfuscatedAddress1.toByteArray());
                obfuscatedAddress1);
    }
    }


    /**
    /**
@@ -611,27 +607,27 @@ public class AdapterServiceTest {
    public void testObfuscateBluetoothAddress_FactoryReset() {
    public void testObfuscateBluetoothAddress_FactoryReset() {
        Assert.assertFalse(mAdapterService.isEnabled());
        Assert.assertFalse(mAdapterService.isEnabled());
        BluetoothDevice device = TestUtils.getTestDevice(BluetoothAdapter.getDefaultAdapter(), 0);
        BluetoothDevice device = TestUtils.getTestDevice(BluetoothAdapter.getDefaultAdapter(), 0);
        ByteString obfuscatedAddress1 = mAdapterService.obfuscateAddress(device);
        byte[] obfuscatedAddress1 = mAdapterService.obfuscateAddress(device);
        Assert.assertFalse(obfuscatedAddress1.isEmpty());
        Assert.assertTrue(obfuscatedAddress1.length > 0);
        Assert.assertFalse(isByteArrayAllZero(obfuscatedAddress1.toByteArray()));
        Assert.assertFalse(isByteArrayAllZero(obfuscatedAddress1));
        mAdapterService.factoryReset();
        mAdapterService.factoryReset();
        ByteString obfuscatedAddress2 = mAdapterService.obfuscateAddress(device);
        byte[] obfuscatedAddress2 = mAdapterService.obfuscateAddress(device);
        Assert.assertFalse(obfuscatedAddress2.isEmpty());
        Assert.assertTrue(obfuscatedAddress2.length > 0);
        Assert.assertFalse(isByteArrayAllZero(obfuscatedAddress2.toByteArray()));
        Assert.assertFalse(isByteArrayAllZero(obfuscatedAddress2));
        Assert.assertFalse(Arrays.equals(obfuscatedAddress2.toByteArray(),
        Assert.assertFalse(Arrays.equals(obfuscatedAddress2,
                obfuscatedAddress1.toByteArray()));
                obfuscatedAddress1));
        doEnable(0, false);
        doEnable(0, false);
        ByteString obfuscatedAddress3 = mAdapterService.obfuscateAddress(device);
        byte[] obfuscatedAddress3 = mAdapterService.obfuscateAddress(device);
        Assert.assertFalse(obfuscatedAddress3.isEmpty());
        Assert.assertTrue(obfuscatedAddress3.length > 0);
        Assert.assertFalse(isByteArrayAllZero(obfuscatedAddress3.toByteArray()));
        Assert.assertFalse(isByteArrayAllZero(obfuscatedAddress3));
        Assert.assertArrayEquals(obfuscatedAddress3.toByteArray(),
        Assert.assertArrayEquals(obfuscatedAddress3,
                obfuscatedAddress2.toByteArray());
                obfuscatedAddress2);
        mAdapterService.factoryReset();
        mAdapterService.factoryReset();
        ByteString obfuscatedAddress4 = mAdapterService.obfuscateAddress(device);
        byte[] obfuscatedAddress4 = mAdapterService.obfuscateAddress(device);
        Assert.assertFalse(obfuscatedAddress4.isEmpty());
        Assert.assertTrue(obfuscatedAddress4.length > 0);
        Assert.assertFalse(isByteArrayAllZero(obfuscatedAddress4.toByteArray()));
        Assert.assertFalse(isByteArrayAllZero(obfuscatedAddress4));
        Assert.assertFalse(Arrays.equals(obfuscatedAddress4.toByteArray(),
        Assert.assertFalse(Arrays.equals(obfuscatedAddress4,
                obfuscatedAddress3.toByteArray()));
                obfuscatedAddress3));
    }
    }


    /**
    /**
@@ -645,20 +641,20 @@ public class AdapterServiceTest {
        Assert.assertNotNull(metricsSalt1);
        Assert.assertNotNull(metricsSalt1);
        Assert.assertFalse(mAdapterService.isEnabled());
        Assert.assertFalse(mAdapterService.isEnabled());
        BluetoothDevice device = TestUtils.getTestDevice(BluetoothAdapter.getDefaultAdapter(), 0);
        BluetoothDevice device = TestUtils.getTestDevice(BluetoothAdapter.getDefaultAdapter(), 0);
        ByteString obfuscatedAddress1 = mAdapterService.obfuscateAddress(device);
        byte[] obfuscatedAddress1 = mAdapterService.obfuscateAddress(device);
        Assert.assertFalse(obfuscatedAddress1.isEmpty());
        Assert.assertTrue(obfuscatedAddress1.length > 0);
        Assert.assertFalse(isByteArrayAllZero(obfuscatedAddress1.toByteArray()));
        Assert.assertFalse(isByteArrayAllZero(obfuscatedAddress1));
        Assert.assertArrayEquals(obfuscateInJava(metricsSalt1, device),
        Assert.assertArrayEquals(obfuscateInJava(metricsSalt1, device),
                obfuscatedAddress1.toByteArray());
                obfuscatedAddress1);
        mAdapterService.factoryReset();
        mAdapterService.factoryReset();
        tearDown();
        tearDown();
        setUp();
        setUp();
        // Cannot verify metrics salt since it is not written to disk until native cleanup
        // Cannot verify metrics salt since it is not written to disk until native cleanup
        ByteString obfuscatedAddress2 = mAdapterService.obfuscateAddress(device);
        byte[] obfuscatedAddress2 = mAdapterService.obfuscateAddress(device);
        Assert.assertFalse(obfuscatedAddress2.isEmpty());
        Assert.assertTrue(obfuscatedAddress2.length > 0);
        Assert.assertFalse(isByteArrayAllZero(obfuscatedAddress2.toByteArray()));
        Assert.assertFalse(isByteArrayAllZero(obfuscatedAddress2));
        Assert.assertFalse(Arrays.equals(obfuscatedAddress2.toByteArray(),
        Assert.assertFalse(Arrays.equals(obfuscatedAddress2,
                obfuscatedAddress1.toByteArray()));
                obfuscatedAddress1));
    }
    }


    private static byte[] getMetricsSalt(HashMap<String, HashMap<String, String>> adapterConfig) {
    private static byte[] getMetricsSalt(HashMap<String, HashMap<String, String>> adapterConfig) {