/** * 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 java.util.Set <String> getAlgorithms(String serviceName) { java.util.HashSet <String> result = new java.util.HashSet <String>(); Provider[] p = getProviders(); for (int i = 0; i < p.Length; i++) { for (java.util.Iterator <Provider.Service> it = p[i].getServices().iterator(); it.hasNext();) { Provider.Service s = (Provider.Service)it.next(); if (Util.equalsIgnoreCase(s.getType(), serviceName)) { result.add(s.getAlgorithm()); } } } return(result); }
/* * Constructs a new instance of {@code SecureRandom}. An implementation for * the highest-priority provider is returned. The constructed instance will * not have been seeded. */ public SecureRandom() : base(0) { Provider.Service service = findService(); if (service == null) { this.provider = null; this.secureRandomSpi = new SHA1PRNG_SecureRandomImpl(); this.algorithm = "SHA1PRNG"; //$NON-NLS-1$ } else { try { this.provider = service.getProvider(); this.secureRandomSpi = (SecureRandomSpi)service.newInstance(null); this.algorithm = service.getAlgorithm(); } catch (java.lang.Exception e) { throw new RuntimeException(e); } } }