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

Commit e182a92a authored by Nick Kralevich's avatar Nick Kralevich Committed by Android (Google) Code Review
Browse files

Merge "Don't rely on the system locale for converting to/from bytes."

parents c357df12 34c47c85
Loading
Loading
Loading
Loading
+30 −11
Original line number Diff line number Diff line
@@ -22,6 +22,7 @@ import android.net.LocalSocket;
import java.io.InputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;

/**
@@ -57,12 +58,12 @@ public class KeyStore {

    public byte[] get(byte[] key) {
        ArrayList<byte[]> values = execute('g', key);
        return (values == null || values.size() == 0) ? null : values.get(0);
        return (values == null || values.isEmpty()) ? null : values.get(0);
    }

    public String get(String key) {
        byte[] value = get(key.getBytes());
        return (value == null) ? null : new String(value);
        byte[] value = get(getBytes(key));
        return (value == null) ? null : toString(value);
    }

    public boolean put(byte[] key, byte[] value) {
@@ -71,7 +72,7 @@ public class KeyStore {
    }

    public boolean put(String key, String value) {
        return put(key.getBytes(), value.getBytes());
        return put(getBytes(key), getBytes(value));
    }

    public boolean delete(byte[] key) {
@@ -80,7 +81,7 @@ public class KeyStore {
    }

    public boolean delete(String key) {
        return delete(key.getBytes());
        return delete(getBytes(key));
    }

    public boolean contains(byte[] key) {
@@ -89,7 +90,7 @@ public class KeyStore {
    }

    public boolean contains(String key) {
        return contains(key.getBytes());
        return contains(getBytes(key));
    }

    public byte[][] saw(byte[] prefix) {
@@ -98,13 +99,13 @@ public class KeyStore {
    }

    public String[] saw(String prefix) {
        byte[][] values = saw(prefix.getBytes());
        byte[][] values = saw(getBytes(prefix));
        if (values == null) {
            return null;
        }
        String[] strings = new String[values.length];
        for (int i = 0; i < values.length; ++i) {
            strings[i] = new String(values[i]);
            strings[i] = toString(values[i]);
        }
        return strings;
    }
@@ -120,7 +121,7 @@ public class KeyStore {
    }

    public boolean password(String oldPassword, String newPassword) {
        return password(oldPassword.getBytes(), newPassword.getBytes());
        return password(getBytes(oldPassword), getBytes(newPassword));
    }

    public boolean password(byte[] password) {
@@ -128,7 +129,7 @@ public class KeyStore {
    }

    public boolean password(String password) {
        return password(password.getBytes());
        return password(getBytes(password));
    }

    public boolean lock() {
@@ -142,7 +143,7 @@ public class KeyStore {
    }

    public boolean unlock(String password) {
        return unlock(password.getBytes());
        return unlock(getBytes(password));
    }

    public int getLastError() {
@@ -208,4 +209,22 @@ public class KeyStore {
        }
        return null;
    }

    private static byte[] getBytes(String string) {
        try {
            return string.getBytes("UTF-8");
        } catch (UnsupportedEncodingException e) {
            // will never happen
            throw new RuntimeException(e);
        }
    }

    private static String toString(byte[] bytes) {
        try {
            return new String(bytes, "UTF-8");
        } catch (UnsupportedEncodingException e) {
            // will never happen
            throw new RuntimeException(e);
        }
    }
}
+11 −0
Original line number Diff line number Diff line
@@ -39,6 +39,9 @@ public class KeyStoreTest extends ActivityUnitTestCase<Activity> {
    private static final String TEST_KEYNAME2 = "testkey2";
    private static final String TEST_KEYVALUE = "test value";

    // "Hello, World" in Chinese
    private static final String TEST_I18N = "\u4F60\u597D, \u4E16\u754C";

    private KeyStore mKeyStore = null;

    public KeyStoreTest() {
@@ -83,6 +86,14 @@ public class KeyStoreTest extends ActivityUnitTestCase<Activity> {
        assertTrue(mKeyStore.put(TEST_KEYNAME, TEST_KEYVALUE));
    }

    public void testI18n() throws Exception {
        assertFalse(mKeyStore.put(TEST_I18N, TEST_I18N));
        assertFalse(mKeyStore.contains(TEST_I18N));
        mKeyStore.password(TEST_I18N);
        assertTrue(mKeyStore.put(TEST_I18N, TEST_I18N));
        assertTrue(mKeyStore.contains(TEST_I18N));
    }

    public void testDelete() throws Exception {
        assertTrue(mKeyStore.delete(TEST_KEYNAME));
        mKeyStore.password(TEST_PASSWD);