// 
// Decompiled by Procyon v0.6.0
// 

package com.google.crypto.tink.internal;

import java.lang.reflect.Method;
import javax.annotation.Nullable;
import java.security.Security;
import java.security.Provider;

public final class ConscryptUtil
{
    private static final String[] conscryptProviderNames;
    
    @Nullable
    public static Provider providerOrNull() {
        for (final String providerName : ConscryptUtil.conscryptProviderNames) {
            final Provider provider = Security.getProvider(providerName);
            if (provider != null) {
                return provider;
            }
        }
        return null;
    }
    
    @Nullable
    public static Provider providerWithReflectionOrNull() {
        try {
            final Class<?> conscrypt = Class.forName("org.conscrypt.Conscrypt");
            final Method getProvider = conscrypt.getMethod("newProvider", (Class<?>[])new Class[0]);
            return (Provider)getProvider.invoke(null, new Object[0]);
        }
        catch (final Throwable e) {
            return null;
        }
    }
    
    public static final boolean isConscryptProvider(final Provider provider) {
        final String providerName = provider.getName();
        return providerName.equals("GmsCore_OpenSSL") || providerName.equals("AndroidOpenSSL") || providerName.equals("Conscrypt");
    }
    
    private ConscryptUtil() {
    }
    
    static {
        conscryptProviderNames = new String[] { "GmsCore_OpenSSL", "AndroidOpenSSL", "Conscrypt" };
    }
}
