SyntheticPasswordManager: consolidate hex encoding logic
Remove the in-class implementation of hex encoding and just use HexEncoding, which was already being used in one place. No change in behavior since the encoding remains the same. In particular, upper case A-F is still used instead of lower case a-f. Test: atest SyntheticPasswordTests Change-Id: I493e4b894f76670bcb9cba8a8a774f3f5832e769
This commit is contained in:
@@ -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();
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user