private static <T> Iterator<T> getFactories(Class<T> type, ClassLoader classLoader, boolean includeGlobal) { Set<T> factories = new LinkedHashSet<>(); final ServiceLoader<T> loader = ServiceLoader.load(type, classLoader); for (T factory : loader) { factories.add(factory); } if (includeGlobal) { Set<String> loadedClasses = new HashSet<>(); final String filter = type.getSimpleName() + "."; Provider[] providers = Security.getProviders(); for (Provider currentProvider : providers) { final ClassLoader cl = currentProvider.getClass().getClassLoader(); currentProvider.keySet().stream().filter(currentKey -> currentKey instanceof String && ((String)currentKey).startsWith(filter) && ((String)currentKey).indexOf(' ') < 0).forEach(currentKey -> { String className=currentProvider.getProperty((String)currentKey); if(className != null && loadedClasses.add(className)) { try { factories.add(Class.forName(className, true, cl).asSubclass(type).newInstance()); } catch(ClassNotFoundException | ClassCastException | InstantiationException | IllegalAccessException e) { } } }); } } return factories.iterator(); }
for (Object currentKey : currentProvider.keySet()) { if (currentKey instanceof String && ((String) currentKey).startsWith(filter) &&
for (Provider p : Security.getProviders()) { for (Object o : p.keySet()) { System.out.println(o); } }
Provider[] providers = Security.getProviders(); for (Provider provider : providers) { for (Object entry : provider.keySet()) { String name = String.valueOf(entry); if (name.startsWith("Cipher")) { Log.d("Cipher", "Supports: " + name.substring(7)); } } }
Provider[] providers = Security.getProviders(); for (Provider provider : providers) { for (Object entry : provider.keySet()) { String name = String.valueOf(entry); if (name.startsWith("Cipher")) { Log.d("Cipher", "Supports: " + name.substring(7)); } } }
public static String[] getCryptoImpls() { Set<String> result = new HashSet<String>(); for (Provider provider : Security.getProviders()) { for (Object providerKey : provider.keySet()) { String key = providerKey.toString(); key = key.split(" ")[0]; result.add(key); } } return result.toArray(new String[result.size()]); }
public static String[] getCryptoImpls() { Set<String> result = new HashSet<String>(); for (Provider provider : Security.getProviders()) { for (Object providerKey : provider.keySet()) { String key = providerKey.toString(); key = key.split(" ")[0]; result.add(key); } } return result.toArray(new String[result.size()]); }
public static String[] getServiceTypes() { Set<String> result = new HashSet<String>(); for (Provider provider : Security.getProviders()) { for (Object providerKey : provider.keySet()) { String key = providerKey.toString(); key = key.split(" ")[0]; if (key.startsWith("Alg.Alias.")) { key = key.substring(10); } int ix = key.indexOf('.'); result.add(key.substring(0, ix)); } } return result.toArray(new String[result.size()]); }
public Set<Object> keySet() { Provider p = getProvider(); if (p != null) { return p.keySet(); } else { return Collections.emptySet(); } }
public static String[] getServiceTypes() { Set<String> result = new HashSet<String>(); for (Provider provider : Security.getProviders()) { for (Object providerKey : provider.keySet()) { String key = providerKey.toString(); key = key.split(" ")[0]; if (key.startsWith("Alg.Alias.")) { key = key.substring(10); } int ix = key.indexOf('.'); result.add(key.substring(0, ix)); } } return result.toArray(new String[result.size()]); }
public static String[] getCryptoImpls(String serviceType) { Set<String> result = new HashSet<String>(); for (Provider provider : Security.getProviders()) { for (Object providerKey : provider.keySet()) { String key = providerKey.toString(); key = key.split(" ")[0]; if (key.startsWith(serviceType + ".")) { result.add(key.substring(serviceType.length() + 1)); } else if (key.startsWith("Alg.Alias." + serviceType + ".")) { result.add(key.substring(serviceType.length() + 11)); } } } return result.toArray(new String[result.size()]); }
public static String[] getCryptoImpls(String serviceType) { Set<String> result = new HashSet<String>(); for (Provider provider : Security.getProviders()) { for (Object providerKey : provider.keySet()) { String key = providerKey.toString(); key = key.split(" ")[0]; if (key.startsWith(serviceType + ".")) { result.add(key.substring(serviceType.length() + 1)); } else if (key.startsWith("Alg.Alias." + serviceType + ".")) { result.add(key.substring(serviceType.length() + 11)); } } } return result.toArray(new String[result.size()]); }
public static void main(final String[] args) { final Provider[] providers = Security.getProviders(); for (int i = 0; i < providers.length; i++) { final String name = providers[i].getName(); final double version = providers[i].getVersion(); System.out.println("Provider[" + i + "]:: " + name + " " + version); if (args.length > 0) { final Iterator it = providers[i].keySet().iterator(); while (it.hasNext()) { final String element = (String) it.next(); if (element.toLowerCase().startsWith(args[0].toLowerCase()) || args[0].equals("-all")) System.out.println("\t" + element); } } } }
/** * Provides a list of algorithms for the specified service (which, for our purposes, is * "MessageDigest". * * <p>This method was only very slightly adapted (to use a TreeSet) from the Java Almanac at * http://javaalmanac.com/egs/java.security/ListServices.html * * @param serviceType The name of the service we're looking for. It's "MessageDigest" */ private static Set getCryptoImpls(String serviceType) { Set result = new TreeSet(); // All all providers Provider[] providers = Security.getProviders(); for (int i = 0; i < providers.length; i++) { // Get services provided by each provider Set keys = providers[i].keySet(); for (Object okey : providers[i].keySet()) { String key = (String) okey; key = key.split(" ")[0]; if (key.startsWith(serviceType + ".")) { result.add(key.substring(serviceType.length() + 1)); } else if (key.startsWith("Alg.Alias." + serviceType + ".")) { // This is an alias result.add(key.substring(serviceType.length() + 11)); } } } return result; }
/** * This method returns the available implementations for a service type */ public static String[] getCryptoImpls(String serviceType) { Set<String> result = new HashSet<String>(); // All all providers Provider[] providers = Security.getProviders(); for (int i = 0; i < providers.length; i++) { // Get services provided by each provider Set<Object> keys = providers[i].keySet(); for (Iterator<Object> it = keys.iterator(); it.hasNext(); ) { String key = (String) it.next(); key = key.split(" ")[0]; if (key.startsWith(serviceType + ".")) { result.add(key.substring(serviceType.length() + 1)); } else if (key.startsWith("Alg.Alias." + serviceType + ".")) { // This is an alias result.add(key.substring(serviceType.length() + 11)); } } } return result.toArray(new String[result.size()]); } }
/** * Exploratory part. This method returns all available services types */ public static String[] getServiceTypes() { Set<String> result = new HashSet<String>(); // All all providers Provider[] providers = Security.getProviders(); for (int i = 0; i < providers.length; i++) { // Get services provided by each provider Set<Object> keys = providers[i].keySet(); for (Iterator<Object> it = keys.iterator(); it.hasNext(); ) { String key = (String) it.next(); key = key.split(" ")[0]; if (key.startsWith("Alg.Alias.")) { // Strip the alias key = key.substring(10); } int ix = key.indexOf('.'); result.add(key.substring(0, ix)); } } return result.toArray(new String[result.size()]); }
/** * Exploratory part. This method returns all available services types */ public static String[] getServiceTypes() { Set<String> result = new HashSet<String>(); // All all providers Provider[] providers = Security.getProviders(); for ( int i = 0; i < providers.length; i++ ) { // Get services provided by each provider Set<Object> keys = providers[i].keySet(); for ( Iterator<Object> it = keys.iterator(); it.hasNext(); ) { String key = (String) it.next(); key = key.split( " " )[0]; if ( key.startsWith( "Alg.Alias." ) ) { // Strip the alias key = key.substring( 10 ); } int ix = key.indexOf( '.' ); result.add( key.substring( 0, ix ) ); } } return result.toArray( new String[result.size()] ); }
private static <T> Iterator<T> getFactories(Class<T> type, ClassLoader classLoader, boolean includeGlobal) { Set<T> factories = new LinkedHashSet<>(); final ServiceLoader<T> loader = ServiceLoader.load(type, classLoader); for (T factory : loader) { factories.add(factory); } if (includeGlobal) { Set<String> loadedClasses = new HashSet<>(); final String filter = type.getSimpleName() + "."; Provider[] providers = Security.getProviders(); for (Provider currentProvider : providers) { final ClassLoader cl = currentProvider.getClass().getClassLoader(); currentProvider.keySet().stream().filter(currentKey -> currentKey instanceof String && ((String)currentKey).startsWith(filter) && ((String)currentKey).indexOf(' ') < 0).forEach(currentKey -> { String className=currentProvider.getProperty((String)currentKey); if(className != null && loadedClasses.add(className)) { try { factories.add(Class.forName(className, true, cl).asSubclass(type).newInstance()); } catch(ClassNotFoundException | ClassCastException | InstantiationException | IllegalAccessException e) { } } }); } } return factories.iterator(); }
for (Provider currentProvider : providers) { final ClassLoader cl = currentProvider.getClass().getClassLoader(); for (Object currentKey : currentProvider.keySet()) { if (currentKey instanceof String && ((String) currentKey).startsWith(filter) &&
import java.security.Provider; import java.security.Security; import java.util.Arrays; public class ShowCryptoProviders { private static final String EOL = System.getProperty("line.separator"); public static void main(final String[] args) { final Provider[] providers = Security.getProviders(); final Boolean verbose = Arrays.asList(args).contains("-v"); for (final Provider p : providers) { System.out.format("%s %s%s", p.getName(), p.getVersion(), EOL); for (final Object o : p.keySet()) { if (verbose) { System.out.format("\t%s : %s%s", o, p.getProperty((String)o), EOL); } } } } }