diff options
| author | Android (Google) Code Review <android-gerrit@google.com> | 2009-09-13 23:44:52 -0400 |
|---|---|---|
| committer | Android (Google) Code Review <android-gerrit@google.com> | 2009-09-13 23:44:52 -0400 |
| commit | 3ccfaaa70f25c8343ab45974a7a43cf9b9b15903 (patch) | |
| tree | 5d3239183b9e4b3616bfb01f5cba7742767b7773 /keystore/java | |
| parent | 6085b4e7b5c592c398904748b56f95a77ced4ed5 (diff) | |
| parent | a7df557aa2573a4718c7bbd069268e62bc036753 (diff) | |
| download | frameworks_base-3ccfaaa70f25c8343ab45974a7a43cf9b9b15903.zip frameworks_base-3ccfaaa70f25c8343ab45974a7a43cf9b9b15903.tar.gz frameworks_base-3ccfaaa70f25c8343ab45974a7a43cf9b9b15903.tar.bz2 | |
Merge change 24673 into eclair
* changes:
Add tests and misc fixes on keystore.
Diffstat (limited to 'keystore/java')
| -rw-r--r-- | keystore/java/android/security/Keystore.java | 15 | ||||
| -rw-r--r-- | keystore/java/android/security/ServiceCommand.java | 20 |
2 files changed, 21 insertions, 14 deletions
diff --git a/keystore/java/android/security/Keystore.java b/keystore/java/android/security/Keystore.java index a706c89..b47ae12 100644 --- a/keystore/java/android/security/Keystore.java +++ b/keystore/java/android/security/Keystore.java @@ -60,7 +60,7 @@ public abstract class Keystore { @Override public int lock() { - Reply result = mServiceCommand.execute(ServiceCommand.LOCK, null); + Reply result = mServiceCommand.execute(ServiceCommand.LOCK); return (result != null) ? result.returnCode : -1; } @@ -73,15 +73,14 @@ public abstract class Keystore { @Override public int getState() { - Reply result = mServiceCommand.execute(ServiceCommand.GET_STATE, - null); + Reply result = mServiceCommand.execute(ServiceCommand.GET_STATE); return (result != null) ? result.returnCode : -1; } @Override public int changePassword(String oldPassword, String newPassword) { Reply result = mServiceCommand.execute(ServiceCommand.PASSWD, - oldPassword + "\0" + newPassword + "\0"); + oldPassword, newPassword); return (result != null) ? result.returnCode : -1; } @@ -106,14 +105,14 @@ public abstract class Keystore { @Override public int put(String namespace, String keyname, String value) { Reply result = mServiceCommand.execute(ServiceCommand.PUT_KEY, - namespace + "\0" + keyname + "\0" + value); + namespace, keyname, value); return (result != null) ? result.returnCode : -1; } @Override public String get(String namespace, String keyname) { Reply result = mServiceCommand.execute(ServiceCommand.GET_KEY, - namespace + "\0" + keyname + "\0"); + namespace, keyname); return (result != null) ? ((result.returnCode != 0) ? null : new String(result.data, 0, result.len)) : null; } @@ -121,13 +120,13 @@ public abstract class Keystore { @Override public int remove(String namespace, String keyname) { Reply result = mServiceCommand.execute(ServiceCommand.REMOVE_KEY, - namespace + "\0" + keyname + "\0"); + namespace, keyname); return (result != null) ? result.returnCode : -1; } @Override public int reset() { - Reply result = mServiceCommand.execute(ServiceCommand.RESET, null); + Reply result = mServiceCommand.execute(ServiceCommand.RESET); return (result != null) ? result.returnCode : -1; } } diff --git a/keystore/java/android/security/ServiceCommand.java b/keystore/java/android/security/ServiceCommand.java index cefae40..ee80014 100644 --- a/keystore/java/android/security/ServiceCommand.java +++ b/keystore/java/android/security/ServiceCommand.java @@ -141,10 +141,18 @@ public class ServiceCommand { return reply; } - private boolean writeCommand(int cmd, String _data) { + private byte[] convert(String... data) { + StringBuilder sb = new StringBuilder(); + if (data.length >=1) sb.append(data[0]).append("\0"); + if (data.length >=2) sb.append(data[1]).append("\0"); + if (data.length >=3) sb.append(data[2]); + return sb.toString().getBytes(); + } + + private boolean writeCommand(int cmd, String... data) { byte buf[] = new byte[8]; - byte[] data = (_data == null) ? new byte[0] : _data.getBytes(); - int len = data.length; + byte[] dataBytes = convert(data); + int len = dataBytes.length; // the length of data buf[0] = (byte) ((len >> 24) & 0xff); buf[1] = (byte) ((len >> 16) & 0xff); @@ -157,7 +165,7 @@ public class ServiceCommand { buf[7] = (byte) (cmd & 0xff); try { mOut.write(buf, 0, 8); - mOut.write(data, 0, len); + mOut.write(dataBytes, 0, len); } catch (IOException ex) { Log.e(mTag,"write error", ex); disconnect(); @@ -166,7 +174,7 @@ public class ServiceCommand { return true; } - private Reply executeCommand(int cmd, String data) { + private Reply executeCommand(int cmd, String... data) { if (!writeCommand(cmd, data)) { /* If service died and restarted in the background * (unlikely but possible) we'll fail on the next @@ -181,7 +189,7 @@ public class ServiceCommand { return readReply(); } - public synchronized Reply execute(int cmd, String data) { + public synchronized Reply execute(int cmd, String... data) { Reply result; if (!connect()) { Log.e(mTag, "connection failed"); |
