OSDN Git Service

Migrate to the CertTool library.
authorChung-yih Wang <cywang@google.com>
Thu, 2 Jul 2009 15:42:12 +0000 (23:42 +0800)
committerChung-yih Wang <cywang@google.com>
Fri, 3 Jul 2009 16:22:51 +0000 (00:22 +0800)
Keystore is reimplemented and it is mainly for storing
(key, value) pair generically. The certificate related
APIs are moved to the class CertTool instead.

Updates:
  Provide the getInstance() which gives the singleton.
  Fix the missing construction of the BIO in cert.c.

core/java/android/webkit/JWebCoreJavaBridge.java
core/java/android/webkit/LoadListener.java
keystore/java/android/security/CertTool.java
keystore/jni/cert.c

index 5c0bd93..1dbd007 100644 (file)
@@ -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();
index 07e03ff..39360cd 100644 (file)
@@ -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();
index 1dc575b..5319330 100644 (file)
@@ -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;
     }
index 07f0e86..cc36b84 100644 (file)
@@ -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;