android: Change how CA certificates from different sources are accessed
authorTobias Brunner <tobias@strongswan.org>
Wed, 11 Jun 2014 12:48:08 +0000 (14:48 +0200)
committerTobias Brunner <tobias@strongswan.org>
Tue, 22 Jul 2014 08:41:49 +0000 (10:41 +0200)
src/frontends/android/src/org/strongswan/android/logic/TrustedCertificateManager.java
src/frontends/android/src/org/strongswan/android/ui/TrustedCertificateListFragment.java

index a5cea44..6e0c9f7 100644 (file)
@@ -36,6 +36,25 @@ public class TrustedCertificateManager
        private boolean mLoaded;
        private final ArrayList<KeyStore> mKeyStores = new ArrayList<KeyStore>();
 
+       public enum TrustedCertificateSource
+       {
+               SYSTEM("system:"),
+               USER("user:"),
+               LOCAL("local:");
+
+               private final String mPrefix;
+
+               private TrustedCertificateSource(String prefix)
+               {
+                       mPrefix = prefix;
+               }
+
+               private String getPrefix()
+               {
+                       return mPrefix;
+               }
+       }
+
        /**
         * Private constructor to prevent instantiation from other classes.
         */
@@ -202,44 +221,17 @@ public class TrustedCertificateManager
        }
 
        /**
-        * Get only the system-wide CA certificates.
-        * @return Hashtable mapping aliases to certificates
-        */
-       public Hashtable<String, X509Certificate> getSystemCACertificates()
-       {
-               return getCertificates("system:");
-       }
-
-       /**
-        * Get only the CA certificates installed by the user.
-        * @return Hashtable mapping aliases to certificates
-        */
-       public Hashtable<String, X509Certificate> getUserCACertificates()
-       {
-               return getCertificates("user:");
-       }
-
-       /**
-        * Get only the local CA certificates installed by the user.
-        * @return Hashtable mapping aliases to certificates
-        */
-       public Hashtable<String, X509Certificate> getLocalCACertificates()
-       {
-               return getCertificates("local:");
-       }
-
-       /**
-        * Get all certificates whose aliases start with the given prefix.
-        * @param prefix prefix to filter certificates
+        * Get all certificates from the given source.
+        * @param source type to filter certificates
         * @return Hashtable mapping aliases to certificates
         */
-       private Hashtable<String, X509Certificate> getCertificates(String prefix)
+       public Hashtable<String, X509Certificate> getCACertificates(TrustedCertificateSource source)
        {
                Hashtable<String, X509Certificate> certs = new Hashtable<String, X509Certificate>();
                this.mLock.readLock().lock();
                for (String alias : this.mCACerts.keySet())
                {
-                       if (alias.startsWith(prefix))
+                       if (alias.startsWith(source.getPrefix()))
                        {
                                certs.put(alias, this.mCACerts.get(alias));
                        }
index 2f07b96..918393f 100644 (file)
@@ -24,6 +24,7 @@ import java.util.Map.Entry;
 
 import org.strongswan.android.R;
 import org.strongswan.android.logic.TrustedCertificateManager;
+import org.strongswan.android.logic.TrustedCertificateManager.TrustedCertificateSource;
 import org.strongswan.android.security.TrustedCertificateEntry;
 import org.strongswan.android.ui.adapter.TrustedCertificateAdapter;
 
@@ -172,7 +173,7 @@ public class TrustedCertificateListFragment extends ListFragment implements Load
                        Hashtable<String,X509Certificate> certificates;
                        List<TrustedCertificateEntry> selected;
 
-                       certificates = mUser ? certman.getUserCACertificates() : certman.getSystemCACertificates();
+                       certificates = mUser ? certman.getCACertificates(TrustedCertificateSource.USER) : certman.getCACertificates(TrustedCertificateSource.SYSTEM);
                        selected = new ArrayList<TrustedCertificateEntry>();
                        for (Entry<String, X509Certificate> entry : certificates.entrySet())
                        {