Remove the null-termination for Java string compatibility.
1. Also change the keyname delimiter in CertTool.java.
2. Return NOTFOUND if the result.len==0 in the listKeys().
3. Define the keystore states in the class Keystore.
diff --git a/cmds/keystore/netkeystore.c b/cmds/keystore/netkeystore.c
index b0d683c..e45e24f6 100644
--- a/cmds/keystore/netkeystore.c
+++ b/cmds/keystore/netkeystore.c
@@ -142,7 +142,7 @@
static void do_listkeys(LPC_MARSHAL *cmd, LPC_MARSHAL *reply)
{
reply->retcode = list_keys((const char*)cmd->data, (char*)reply->data);
- if (!reply->retcode) reply->len = strlen((char*)reply->data) + 1;
+ if (!reply->retcode) reply->len = strlen((char*)reply->data);
}
// args of get():
diff --git a/keystore/java/android/security/CertTool.java b/keystore/java/android/security/CertTool.java
index 285def2..1dc575b 100644
--- a/keystore/java/android/security/CertTool.java
+++ b/keystore/java/android/security/CertTool.java
@@ -51,7 +51,7 @@
private static final String USER_CERTIFICATE = "USRCERT";
private static final String USER_KEY = "USRKEY";
- private static final String KEYNAME_DELIMITER = " ";
+ private static final String KEYNAME_DELIMITER = "_";
private static final Keystore keystore = Keystore.getInstance();
private native String generateCertificateRequest(int bits, String subject);
diff --git a/keystore/java/android/security/Keystore.java b/keystore/java/android/security/Keystore.java
index 462645a6..1f14da7 100644
--- a/keystore/java/android/security/Keystore.java
+++ b/keystore/java/android/security/Keystore.java
@@ -25,6 +25,12 @@
private static final String TAG = "Keystore";
private static final String[] NOTFOUND = new String[0];
+ // Keystore States
+ public static final int BOOTUP = 0;
+ public static final int UNINITIALIZED = 1;
+ public static final int LOCKED = 2;
+ public static final int UNLOCKED = 3;
+
/**
*/
public static Keystore getInstance() {
@@ -195,9 +201,11 @@
public String[] listKeys(String namespace) {
Reply result = mServiceCommand.execute(ServiceCommand.LIST_KEYS,
namespace);
- return (result != null) ? ((result.returnCode != 0) ? NOTFOUND :
- new String(result.data, 0, result.len).split("\\s+"))
- : NOTFOUND;
+ if ((result == null) || (result.returnCode != 0) ||
+ (result.len == 0)) {
+ return NOTFOUND;
+ }
+ return new String(result.data, 0, result.len).split("\\s+");
}
@Override