summaryrefslogtreecommitdiffstats
path: root/src/android
diff options
context:
space:
mode:
authorPaul Olav Tvete <paul.tvete@digia.com>2013-07-25 14:40:06 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-07-29 15:38:51 +0200
commit591584d9a940d374e20a62573d71054e0081c6ac (patch)
tree4b460f575c8018b8e80dd27d8f74ce4049067023 /src/android
parent71535ad6bcad71793e29a7cd92197dda5274b331 (diff)
Android: Get SSL root certificates from TrustManager
On Android, when not using Ministro, we cannot read certificates from the file system, so we have to get them through Java APIs instead. Change-Id: I415329fcb45836735c1112dbe832214b3c73dc9a Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
Diffstat (limited to 'src/android')
-rw-r--r--src/android/jar/src/org/qtproject/qt5/android/QtNative.java33
1 files changed, 33 insertions, 0 deletions
diff --git a/src/android/jar/src/org/qtproject/qt5/android/QtNative.java b/src/android/jar/src/org/qtproject/qt5/android/QtNative.java
index 4586ae2002..22e3701e47 100644
--- a/src/android/jar/src/org/qtproject/qt5/android/QtNative.java
+++ b/src/android/jar/src/org/qtproject/qt5/android/QtNative.java
@@ -57,6 +57,12 @@ import android.view.ContextMenu;
import android.view.Menu;
import android.view.MotionEvent;
+import java.security.KeyStore;
+import java.security.cert.X509Certificate;
+import javax.net.ssl.TrustManagerFactory;
+import javax.net.ssl.TrustManager;
+import javax.net.ssl.X509TrustManager;
+
public class QtNative
{
private static Activity m_activity = null;
@@ -534,6 +540,33 @@ public class QtNative
});
}
+ private static byte[][] getSSLCertificates()
+ {
+ ArrayList<byte[]> certificateList = new ArrayList<byte[]>();
+
+ try {
+ TrustManagerFactory factory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
+ factory.init((KeyStore) null);
+
+ for (TrustManager manager : factory.getTrustManagers()) {
+ if (manager instanceof X509TrustManager) {
+ X509TrustManager trustManager = (X509TrustManager) manager;
+
+ for (X509Certificate certificate : trustManager.getAcceptedIssuers()) {
+ byte buffer[] = certificate.getEncoded();
+ certificateList.add(buffer);
+ }
+ }
+ }
+ } catch (Exception e) {
+ Log.e(QtTAG, "Failed to get certificates", e);
+ }
+
+ byte[][] certificateArray = new byte[certificateList.size()][];
+ certificateArray = certificateList.toArray(certificateArray);
+ return certificateArray;
+ }
+
// screen methods
public static native void setDisplayMetrics(int screenWidthPixels,
int screenHeightPixels,