RFR: 8324648: Avoid NoSuchMethodError when instantiating NativePRNG [v3]
Valerie Peng
valeriep at openjdk.org
Tue Feb 6 18:49:54 UTC 2024
On Tue, 6 Feb 2024 13:54:10 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
>
> Oli Gillespie has updated the pull request incrementally with one additional commit since the last revision:
>
> Update copyright year
src/java.base/unix/classes/sun/security/provider/NativePRNG.java line 207:
> 205: // constructor, called by the JCA framework
> 206: public NativePRNG(SecureRandomParameters params) {
> 207: super();
nit: maybe super() not needed? Same goes for the Blocking and NonBlocking ctors.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/17560#discussion_r1480394162
More information about the security-dev
mailing list