< prev index next >

src/java.base/share/classes/java/security/Provider.java

Print this page
rev 14166 : 8051408: NIST SP 800-90A SecureRandom implementations

*** 140,151 **** --- 140,166 ---- throws Exception { if (ctrParamClz == null) { Constructor<?> con = clazz.getConstructor(); return con.newInstance(); } else { + // Looking for the constructor with a params first and fallback + // to one without if not found. This is to support the enhanced + // SecureRandom. Before jdk9, there was no params support + // (only getInstance(alg)) and an impl only had the no-params + // constructor. Since jdk9, there is getInstance(alg,params) + // and an impl can contain a Impl(params) constructor. + try { Constructor<?> con = clazz.getConstructor(ctrParamClz); return con.newInstance(ctorParamObj); + } catch (NoSuchMethodException nsme) { + if (ctorParamObj == null) { + Constructor<?> con = clazz.getConstructor(); + return con.newInstance(); + } else { + throw new IllegalArgumentException(nsme); + } + } } } /** * Constructs a provider with the specified name, version number,
*** 1382,1392 **** addEngine("AlgorithmParameters", false, null); addEngine("KeyFactory", false, null); addEngine("KeyPairGenerator", false, null); addEngine("KeyStore", false, null); addEngine("MessageDigest", false, null); ! addEngine("SecureRandom", false, null); addEngine("Signature", true, null); addEngine("CertificateFactory", false, null); addEngine("CertPathBuilder", false, null); addEngine("CertPathValidator", false, null); addEngine("CertStore", false, --- 1397,1408 ---- addEngine("AlgorithmParameters", false, null); addEngine("KeyFactory", false, null); addEngine("KeyPairGenerator", false, null); addEngine("KeyStore", false, null); addEngine("MessageDigest", false, null); ! addEngine("SecureRandom", false, ! "java.security.SecureRandomParameters"); addEngine("Signature", true, null); addEngine("CertificateFactory", false, null); addEngine("CertPathBuilder", false, null); addEngine("CertPathValidator", false, null); addEngine("CertStore", false,
*** 1676,1685 **** --- 1692,1702 ---- + " for engine type " + type); } } } } + // constructorParameter can be null if not provided return newInstanceUtil(getImplClass(), ctrParamClz, constructorParameter); } catch (NoSuchAlgorithmException e) { throw e; } catch (InvocationTargetException e) { throw new NoSuchAlgorithmException
< prev index next >