summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--core/java/android/webkit/JWebCoreJavaBridge.java6
-rw-r--r--core/java/android/webkit/LoadListener.java4
-rw-r--r--keystore/java/android/security/CertTool.java9
-rw-r--r--keystore/jni/cert.c3
4 files changed, 17 insertions, 5 deletions
diff --git a/core/java/android/webkit/JWebCoreJavaBridge.java b/core/java/android/webkit/JWebCoreJavaBridge.java
index 5c0bd93..1dbd007 100644
--- a/core/java/android/webkit/JWebCoreJavaBridge.java
+++ b/core/java/android/webkit/JWebCoreJavaBridge.java
@@ -18,7 +18,7 @@ package android.webkit;
import android.os.Handler;
import android.os.Message;
-import android.security.Keystore;
+import android.security.CertTool;
import android.util.Log;
final class JWebCoreJavaBridge extends Handler {
@@ -188,12 +188,12 @@ final class JWebCoreJavaBridge extends Handler {
}
private String[] getKeyStrengthList() {
- return Keystore.getInstance().getSupportedKeyStrenghs();
+ return CertTool.getInstance().getSupportedKeyStrenghs();
}
private String getSignedPublicKey(int index, String challenge, String url) {
// generateKeyPair expects organizations which we don't have. Ignore url.
- return Keystore.getInstance().generateKeyPair(index, challenge, null);
+ return CertTool.getInstance().generateKeyPair(index, challenge, null);
}
private native void nativeConstructor();
diff --git a/core/java/android/webkit/LoadListener.java b/core/java/android/webkit/LoadListener.java
index 07e03ff..39360cd 100644
--- a/core/java/android/webkit/LoadListener.java
+++ b/core/java/android/webkit/LoadListener.java
@@ -28,7 +28,7 @@ import android.net.http.SslError;
import android.os.Handler;
import android.os.Message;
-import android.security.Keystore;
+import android.security.CertTool;
import android.util.Log;
import android.webkit.CacheManager.CacheResult;
import android.widget.Toast;
@@ -999,7 +999,7 @@ class LoadListener extends Handler implements EventHandler {
}
mDataBuilder.releaseChunk(c);
}
- Keystore.getInstance().addCertificate(cert);
+ CertTool.getInstance().addCertificate(cert, mContext);
Toast.makeText(mContext, R.string.certificateSaved,
Toast.LENGTH_SHORT).show();
mBrowserFrame.stopLoading();
diff --git a/keystore/java/android/security/CertTool.java b/keystore/java/android/security/CertTool.java
index 1dc575b..5319330 100644
--- a/keystore/java/android/security/CertTool.java
+++ b/keystore/java/android/security/CertTool.java
@@ -63,6 +63,15 @@ public class CertTool {
private native String getPrivateKeyPEM(int handle);
private native void freeX509Certificate(int handle);
+ private static CertTool singleton = null;
+
+ public static final CertTool getInstance() {
+ if (singleton == null) {
+ singleton = new CertTool();
+ }
+ return singleton;
+ }
+
public String getUserPrivateKey(String key) {
return USER_KEY + KEYNAME_DELIMITER + key;
}
diff --git a/keystore/jni/cert.c b/keystore/jni/cert.c
index 07f0e86..cc36b84 100644
--- a/keystore/jni/cert.c
+++ b/keystore/jni/cert.c
@@ -144,6 +144,9 @@ int is_pkcs12(const char *buf, int bufLen)
if (!buf || bufLen < 1) goto err;
+ bp = BIO_new(BIO_s_mem());
+ if (!bp) goto err;
+
if (buf[0] != 48) goto err; // it is not DER.
if (!BIO_write(bp, buf, bufLen)) goto err;