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

Commit 828e390d authored by Eric Biggers's avatar Eric Biggers Committed by Automerger Merge Worker
Browse files

Merge "SyntheticPasswordManager: consolidate hex encoding logic" am: 2be0e5e3

parents 5282397a 2be0e5e3
Loading
Loading
Loading
Loading
+5 −15
Original line number Diff line number Diff line
@@ -272,9 +272,8 @@ public class SyntheticPasswordManager {
         * AuthenticationToken.mSyntheticPassword for details on what each block means.
         */
        private void recreate(byte[] escrowSplit0, byte[] escrowSplit1) {
            mSyntheticPassword = String.valueOf(HexEncoding.encode(
                    SyntheticPasswordCrypto.personalisedHash(
                            PERSONALIZATION_SP_SPLIT, escrowSplit0, escrowSplit1))).getBytes();
            mSyntheticPassword = bytesToHex(SyntheticPasswordCrypto.personalisedHash(
                    PERSONALIZATION_SP_SPLIT, escrowSplit0, escrowSplit1));
        }

        /**
@@ -1415,18 +1414,9 @@ public class SyntheticPasswordManager {
        return result;
    }

    protected static final byte[] HEX_ARRAY = "0123456789ABCDEF".getBytes();
    private static byte[] bytesToHex(byte[] bytes) {
        if (bytes == null) {
            return "null".getBytes();
        }
        byte[] hexBytes = new byte[bytes.length * 2];
        for ( int j = 0; j < bytes.length; j++ ) {
            int v = bytes[j] & 0xFF;
            hexBytes[j * 2] = HEX_ARRAY[v >>> 4];
            hexBytes[j * 2 + 1] = HEX_ARRAY[v & 0x0F];
        }
        return hexBytes;
    @VisibleForTesting
    static byte[] bytesToHex(byte[] bytes) {
        return HexEncoding.encodeToString(bytes).getBytes();
    }

    /**
+7 −0
Original line number Diff line number Diff line
@@ -567,6 +567,13 @@ public class SyntheticPasswordTests extends BaseLockSettingsServiceTests {
        }
    }

    @Test
    public void testHexEncodingIsUppercase() {
        final byte[] raw = new byte[] { (byte)0xAB, (byte)0xCD, (byte)0xEF };
        final byte[] expected = new byte[] { 'A', 'B', 'C', 'D', 'E', 'F' };
        assertArrayEquals(expected, SyntheticPasswordManager.bytesToHex(raw));
    }

    // b/62213311
    //TODO: add non-migration work profile case, and unify/un-unify transition.
    //TODO: test token after user resets password