diff --git a/core/java/src/net/i2p/crypto/KeyStoreUtil.java b/core/java/src/net/i2p/crypto/KeyStoreUtil.java index 654a0586834074a7f23f7bd0564e640d33c235d3..fb690b7cf6d4c1750b34f55d3d5107bfaf1e9211 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 639bab00b653d8fc6e3837b08fc4e87c8e6d9398..224b79031e1aa5c7e9e83380e66f198b00b319f0 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) {}