diff options
-rw-r--r-- | core/java/android/webkit/JWebCoreJavaBridge.java | 6 | ||||
-rw-r--r-- | core/java/android/webkit/LoadListener.java | 4 | ||||
-rw-r--r-- | keystore/java/android/security/CertTool.java | 9 | ||||
-rw-r--r-- | keystore/jni/cert.c | 3 |
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; |