From c90e776055f2bbf860b7d961dde3ca3271407131 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20Sch=C3=BCrmann?= Date: Sun, 15 Sep 2013 22:19:15 +0200 Subject: Reorder security providers in application class, document functionality --- .../keychain/KeychainApplication.java | 35 +++++++++++++++++----- .../keychain/util/PRNGFixes.java | 4 +-- 2 files changed, 29 insertions(+), 10 deletions(-) (limited to 'OpenPGP-Keychain/src/org/sufficientlysecure') diff --git a/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/KeychainApplication.java b/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/KeychainApplication.java index 654eca5b8..4a25f2df1 100644 --- a/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/KeychainApplication.java +++ b/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/KeychainApplication.java @@ -18,6 +18,7 @@ package org.sufficientlysecure.keychain; import java.io.File; +import java.security.Provider; import java.security.Security; import org.spongycastle.jce.provider.BouncyCastleProvider; @@ -29,18 +30,37 @@ import android.os.Environment; public class KeychainApplication extends Application { - static { - // Define Java Security Provider to be Bouncy Castle - Security.insertProviderAt(new BouncyCastleProvider(), 1); - } - + /** + * Called when the application is starting, before any activity, service, or receiver objects + * (excluding content providers) have been created. + */ @Override public void onCreate() { super.onCreate(); - // apply RNG fixes + /* + * Sets Bouncy (Spongy) Castle as preferred security provider + * + * insertProviderAt() position starts from 1 + */ + Security.insertProviderAt(new BouncyCastleProvider(), 1); + + /* + * apply RNG fixes + * + * among other things, executes Security.insertProviderAt(new + * LinuxPRNGSecureRandomProvider(), 1) for Android <= SDK 17 + */ PRNGFixes.apply(); - Log.d(Constants.TAG, "PRNG Fixes applied!"); + Log.d(Constants.TAG, "Bouncy Castle set and PRNG Fixes applied!"); + + if (Constants.DEBUG) { + Provider[] providers = Security.getProviders(); + Log.d(Constants.TAG, "Installed Security Providers:"); + for (Provider p : providers) { + Log.d(Constants.TAG, "provider class: " + p.getClass().getName()); + } + } // Create APG directory on sdcard if not existing if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) { @@ -51,5 +71,4 @@ public class KeychainApplication extends Application { } } } - } diff --git a/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/util/PRNGFixes.java b/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/util/PRNGFixes.java index 9346ca878..9736bb4b8 100644 --- a/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/util/PRNGFixes.java +++ b/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/util/PRNGFixes.java @@ -1,5 +1,3 @@ -package org.sufficientlysecure.keychain.util; - /* * This software is provided 'as-is', without any express or implied * warranty. In no event will Google be held liable for any damages @@ -10,6 +8,8 @@ package org.sufficientlysecure.keychain.util; * freely, as long as the origin is not misrepresented. */ +package org.sufficientlysecure.keychain.util; + import android.os.Build; import android.os.Process; -- cgit v1.2.3