/** * Adds information about provider services into HashMap. */ public static synchronized void initServiceInfo(Provider p) { for (Provider.Service service : p.getServices()) { String type = service.getType(); if (cachedSecureRandomService == null && type.equals("SecureRandom")) { cachedSecureRandomService = service; } String key = type + "." + service.getAlgorithm().toUpperCase(Locale.US); if (!services.containsKey(key)) { services.put(key, service); } for (String alias : Engine.door.getAliases(service)) { key = type + "." + alias.toUpperCase(Locale.US); if (!services.containsKey(key)) { services.put(key, service); } } } }
/** * @see org.wildfly.security.http.HttpServerAuthenticationMechanismFactory#getMechanismNames(java.util.Map) */ @Override public String[] getMechanismNames(Map<String, ?> properties) { Set<String> names = new LinkedHashSet<>(); for (Provider current : providerSupplier.get()) { Set<Service> services = current.getServices(); if (services != null) { for (Service currentService : services) { if (SERVICE_TYPE.equals(currentService.getType())) { try { String[] serviceMechNames = ((HttpServerAuthenticationMechanismFactory) currentService.newInstance(null)).getMechanismNames(properties); Collections.addAll(names, serviceMechNames); } catch (NoSuchAlgorithmException e) { log.debug("Unable to create instance", e); } } } } } if (names.size() == 0 && log.isTraceEnabled()) { log.tracef("No %s provided by provider loader in %s: %s", SERVICE_TYPE, getClass().getSimpleName(), Arrays.toString(providerSupplier.get())); } return names.toArray(new String[names.size()]); }
@Override public String[] getMechanismNames(final Map<String, ?> props) { final BiPredicate<String, Provider> mechFilter = SaslFactories.getProviderFilterPredicate(props); final Set<String> names = new LinkedHashSet<>(); for (Provider currentProvider : providerSupplier.get()) { Set<Service> services = currentProvider.getServices(); if (services != null) { for (Service service : services) { if (SERVICE_TYPE.equals(service.getType())) { try { final String[] mechanismNames = ((SaslClientFactory) service.newInstance(null)).getMechanismNames(props); Collections.addAll(names, SaslFactories.filterMechanismsByProvider(mechanismNames, 0, 0, currentProvider, mechFilter)); } catch (NoSuchAlgorithmException | ClassCastException | InvalidParameterException e) { log.debug("Unable to create instance", e); } } } } } if (names.size() == 0 && log.isTraceEnabled()) { log.tracef("No %s provided by providers in %s: %s", SERVICE_TYPE, getClass().getSimpleName(), Arrays.toString(providerSupplier.get())); } return names.toArray(new String[names.size()]); } }
import java.security.Security; import java.security.Provider; import java.security.Provider.Service; for (Provider provider : Security.getProviders()) { for (Service service : provider.getServices()) { if (service.getType().equals("SecureRandom")) { System.out.println(service.getAlgorithm()); } } }
@Override public Object newInstance(final Object constructorParameter) throws NoSuchAlgorithmException { if (super.getType().equals(POReIDConfig.DIGITAL_SIGNATURE)) { return new POReIDSignature(this.getAlgorithm()); } return super.newInstance(constructorParameter); } }
private boolean algorithmExists(final String serviceType, final String algorithm) { for (Provider provider : Security.getProviders()) { for (Service service : provider.getServices()) { if (service.getType().equals(serviceType) && service.getAlgorithm().equalsIgnoreCase(algorithm)) { return true; } } } return false; }
// Security.addProvider( new BouncyCastleProvider() ); for ( Provider provider : Security.getProviders() ) { System.out.println( provider ); for ( Provider.Service service : provider.getServices() ) { if ( "SecretKeyFactory".equals( service.getType() ) ) { System.out.println( service ); } } }
for (Provider provider : Security.getProviders()) { for (Provider.Service service : provider.getServices()) { System.out.println(provider.getName() + ": " + service.getType() + "." + service.getAlgorithm()); // check these values and find a best match } }
for (Provider provider : Security.getProviders()) { System.out.println("Provider: " + provider.getName() + " version: " + provider.getVersion()); for (Provider.Service service : provider.getServices()) { System.out.printf(" Type : %-30s Algorithm: %-30s\n", service.getType(), service.getAlgorithm()); } }
public synchronized final Set<Provider.Service> getServices() { Set<Provider.Service> serviceSet = super.getServices(); Set<Provider.Service> bcServiceSet = new HashSet<Provider.Service>(); for (Provider.Service service: serviceSet) { bcServiceSet.add(getService(service.getType(), service.getAlgorithm())); } return bcServiceSet; }
private static String asString(Service s) { String str = "Provider = " + s.getProvider().getName() + SEP; str += "Type = " + s.getType() + SEP; str += "Algorithm = " + s.getAlgorithm() + SEP; str += "Class = " + s.getClassName(); if (isSignature(s) || isCipher(s) || isKeyAgreement(s)) { str += SEP + "SupportedKeyClasses = " + Arrays.toString(getSupportedKeyClasses(s)); } return str; }
private static void addServices(final ModelNode providerModel, final Provider provider) { ModelNode servicesModel = providerModel.get(ElytronDescriptionConstants.SERVICES); for (Service current : provider.getServices()) { ModelNode serviceModel = new ModelNode(); serviceModel.get(ElytronDescriptionConstants.TYPE).set(current.getType()); serviceModel.get(ElytronDescriptionConstants.ALGORITHM).set(current.getAlgorithm()); serviceModel.get(ElytronDescriptionConstants.CLASS_NAME).set(current.getClassName()); servicesModel.add(serviceModel); } }
if (services != null) { for (Provider.Service service : services) { if (SERVICE_TYPE.equals(service.getType())) { String protocolName = service.getAlgorithm(); List<Provider> providerList = preferredProviderByAlgorithm.computeIfAbsent(protocolName.toUpperCase(Locale.ENGLISH), s -> new ArrayList<>());
if (services != null) { for (Service service : currentProvider.getServices()) { if (SERVICE_TYPE.equals(service.getType())) { try { clientFactoryList.add(new Pair(currentProvider, (SaslClientFactory) service.newInstance(null)));
if (services != null) { for (Provider.Service service : services) { if (SERVICE_TYPE.equals(service.getType())) { try { saslServer = ((SaslServerFactory) service.newInstance(null)).createSaslServer(mechanism,
/** * Returns a {@code Set} of all registered algorithms for the specified * cryptographic service. {@code "Signature"}, {@code "Cipher"} and {@code * "KeyStore"} are examples for such kind of services. * * @param serviceName * the case-insensitive name of the service. * @return a {@code Set} of all registered algorithms for the specified * cryptographic service, or an empty {@code Set} if {@code * serviceName} is {@code null} or if no registered provider * provides the requested service. */ public static Set<String> getAlgorithms(String serviceName) { Set<String> result = new HashSet<String>(); // compatibility with RI if (serviceName == null) { return result; } for (Provider provider : getProviders()) { for (Provider.Service service: provider.getServices()) { if (service.getType().equalsIgnoreCase(serviceName)) { result.add(service.getAlgorithm()); } } } return result; }
/** * Adds a {@code Service} to this {@code Provider}. If a service with the * same name was registered via this method, it is replace. * * @param s * the {@code Service} to register */ protected synchronized void putService(Provider.Service s) { if (s == null) { throw new NullPointerException("s == null"); } if ("Provider".equals(s.getType())) { // Provider service type cannot be added return; } servicesChanged(); if (serviceTable == null) { serviceTable = new LinkedHashMap<String, Service>(128); } serviceTable.put(key(s.type, s.algorithm), s); if (s.aliases != null) { if (aliasTable == null) { aliasTable = new LinkedHashMap<String, Service>(256); } for (String alias : s.getAliases()) { aliasTable.put(key(s.type, alias), s); } } serviceInfoToProperties(s); }
/** * @see org.wildfly.security.http.HttpServerAuthenticationMechanismFactory#createAuthenticationMechanism(java.lang.String, java.util.Map, javax.security.auth.callback.CallbackHandler) */ @Override public HttpServerAuthenticationMechanism createAuthenticationMechanism(String mechanismName, Map<String, ?> properties, CallbackHandler callbackHandler) throws HttpAuthenticationException { for (Provider current : providerSupplier.get()) { Set<Service> services = current.getServices(); if (services != null) { for (Service currentService : services) { if (SERVICE_TYPE.equals(currentService.getType())) { try { HttpServerAuthenticationMechanismFactory factory = (HttpServerAuthenticationMechanismFactory) currentService.newInstance(null); HttpServerAuthenticationMechanism mechanism = factory.createAuthenticationMechanism(mechanismName, properties, callbackHandler); if (mechanism != null) { return mechanism; } } catch (NoSuchAlgorithmException e) { log.debug("Unable to create instance", e); } } } } } if (log.isTraceEnabled()) { log.tracef("No %s provided by provider loader in %s: %s", SERVICE_TYPE, getClass().getSimpleName(), Arrays.toString(providerSupplier.get())); } return null; }
@Override public String[] getMechanismNames(final Map<String, ?> props) { final BiPredicate<String, Provider> mechFilter = SaslFactories.getProviderFilterPredicate(props); final Set<String> names = new LinkedHashSet<>(); for (Provider currentProvider : providerSupplier.get()) { Set<Service> services = currentProvider.getServices(); if (services != null) { for (Service service : services) { if (SERVICE_TYPE.equals(service.getType())) { try { final String[] mechanismNames = ((SaslServerFactory) service.newInstance(null)).getMechanismNames(props); Collections.addAll(names, SaslFactories.filterMechanismsByProvider(mechanismNames, 0, 0, currentProvider, mechFilter)); } catch (NoSuchAlgorithmException | ClassCastException | InvalidParameterException e) { log.debug("Unable to create instance", e); } } } } } if (names.size() == 0 && log.isTraceEnabled()) { log.tracef("No %s provided by provider supplier in %s: %s", SERVICE_TYPE, getClass().getSimpleName(), Arrays.toString(providerSupplier.get())); } return names.toArray(new String[names.size()]); } }