From 2b0dfed0126a3b5bb77e79108d036fcddffe8ab8 Mon Sep 17 00:00:00 2001 From: str4d <str4d@mail.i2p> Date: Fri, 7 Mar 2014 08:27:14 +0000 Subject: [PATCH] Fixed Android API version detection, load cacerts dir for API >= 14 --- core/java/src/net/i2p/crypto/KeyStoreUtil.java | 11 ++++++++--- core/java/src/net/i2p/util/SystemVersion.java | 2 +- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/core/java/src/net/i2p/crypto/KeyStoreUtil.java b/core/java/src/net/i2p/crypto/KeyStoreUtil.java index 654a058683..fb690b7cf6 100644 --- a/core/java/src/net/i2p/crypto/KeyStoreUtil.java +++ b/core/java/src/net/i2p/crypto/KeyStoreUtil.java @@ -94,9 +94,14 @@ public class KeyStoreUtil { success = loadCerts(new File(override), ks); if (!success) { if (SystemVersion.isAndroid()) { - // thru API 13. As of API 14 (ICS), the file is gone, but - // ks.load(null, pw) will bring in the default certs? - success = loadCerts(new File(System.getProperty("java.home"), "etc/security/cacerts.bks"), ks); + if (SystemVersion.getAndroidVersion() >= 14) { + try { + ks.load(null, DEFAULT_KEYSTORE_PASSWORD.toCharArray()); + success = addCerts(new File(System.getProperty("java.home"), "etc/security/cacerts"), ks) > 0; + } catch (Exception e) {} + } else { + success = loadCerts(new File(System.getProperty("java.home"), "etc/security/cacerts.bks"), ks); + } } else { success = loadCerts(new File(System.getProperty("java.home"), "lib/security/jssecacerts"), ks); if (!success) diff --git a/core/java/src/net/i2p/util/SystemVersion.java b/core/java/src/net/i2p/util/SystemVersion.java index 639bab00b6..224b79031e 100644 --- a/core/java/src/net/i2p/util/SystemVersion.java +++ b/core/java/src/net/i2p/util/SystemVersion.java @@ -47,7 +47,7 @@ public abstract class SystemVersion { int sdk = 0; if (_isAndroid) { try { - Class<?> ver = Class.forName("android.os.Build.VERSION", true, ClassLoader.getSystemClassLoader()); + Class<?> ver = Class.forName("android.os.Build$VERSION", true, ClassLoader.getSystemClassLoader()); Field field = ver.getField("SDK_INT"); sdk = field.getInt(null); } catch (Exception e) {} -- GitLab