RFR: 8324648: Avoid NoSuchMethodError when instantiating NativePRNG

Valerie Peng valeriep at openjdk.org
Tue Jan 30 23:49:33 UTC 2024


On Wed, 24 Jan 2024 15:42:05 GMT, Oli Gillespie <ogillespie at openjdk.org> wrote:

> A typical call to `new SecureRandom()` is slowed down by looking for a constructor in NativePRNG which takes `java.security.SecureRandomParameters`. NativePRNG does not have such a constructor, so the search fails [here](https://github.com/openjdk/jdk/blob/master/src/java.base/share/classes/java/security/Provider.java#L1951-L1957), incurring all the cost of the lookup and creating a subsequent exception.
> 
> Creating a dummy constructor which takes and ignores this parameter will speed up `new SecureRandom()` calls significantly. 
> 
> The benchmark from https://github.com/openjdk/jdk/pull/17559 shows around 80% reduction in time taken to create a new SecureRandom with NativePRNG (default on my machine).
> 
> 
> Before
> SecureRandomBench.newSecureRandom  avgt  2930 ± 50 ns/op
> 
> After
> SecureRandomBench.newSecureRandom  avgt  510 ± 16 ns/op

For NativePRNG, should the dummy constructor just ignores the parameters? If passed with a non-null parameter, should it accept it? Max and Brad is more familiar with SecureRandom than me, so it's better that they chime in on this. @bradfordwetmore @wangweij

-------------

PR Comment: https://git.openjdk.org/jdk/pull/17560#issuecomment-1918100983



More information about the security-dev mailing list