TrustManagers.java

 1package eu.siacs.conversations.crypto;
 2
 3import androidx.annotation.Nullable;
 4
 5import com.google.common.collect.Iterables;
 6
 7import java.security.KeyStore;
 8import java.security.KeyStoreException;
 9import java.security.NoSuchAlgorithmException;
10import java.util.Arrays;
11
12import javax.net.ssl.TrustManagerFactory;
13import javax.net.ssl.X509TrustManager;
14
15public final class TrustManagers {
16
17    private TrustManagers() {
18        throw new IllegalStateException("Do not instantiate me");
19    }
20
21    public static X509TrustManager createTrustManager(@Nullable final KeyStore keyStore)
22            throws NoSuchAlgorithmException, KeyStoreException {
23        final TrustManagerFactory trustManagerFactory =
24                TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
25        trustManagerFactory.init(keyStore);
26        return Iterables.getOnlyElement(
27                Iterables.filter(
28                        Arrays.asList(trustManagerFactory.getTrustManagers()),
29                        X509TrustManager.class));
30    }
31
32    public static X509TrustManager createDefaultTrustManager()
33            throws NoSuchAlgorithmException, KeyStoreException {
34        return createTrustManager(null);
35    }
36
37
38}