-
Bug
-
Resolution: Fixed
-
P3
-
11.0.7, 12, 13
-
b10
-
generic
-
generic
Issue | Fix Version | Assignee | Priority | Status | Resolution | Resolved In Build |
---|---|---|---|---|---|---|
JDK-8245789 | 13.0.4 | Valerie Peng | P3 | Resolved | Fixed | b03 |
JDK-8240495 | 11.0.8-oracle | Valerie Peng | P3 | Resolved | Fixed | b01 |
JDK-8239246 | 11.0.7 | Valerie Peng | P3 | Resolved | Fixed | b04 |
JDK-8248959 | 8u271 | Valerie Peng | P3 | Resolved | Fixed | b01 |
JDK-8241196 | 8u261 | Valerie Peng | P3 | Resolved | Fixed | b01 |
JDK-8244014 | 8u251 | Valerie Peng | P3 | Closed | Fixed | b33 |
JDK-8241347 | 8u241 | Valerie Peng | P3 | Resolved | Fixed | b61 |
JDK-8251731 | emb-8u271 | Valerie Peng | P3 | Resolved | Fixed | team |
JDK-8246975 | emb-8u261 | Valerie Peng | P3 | Resolved | Fixed | team |
Prior to the changes for https://bugs.java.com/bugdatabase/view_bug.do?bug_id=7092821 java.security.Provider retained the order in which services where added. When querying the services using java.security.Provider#getServices the iteration order of the set matched the insertion order.
Since http://hg.openjdk.java.net/jdk/jdk12/rev/9af672cab7cb this is no longer the case.
The iteration order of the Set returned by java.security.Provider#getServices was never specified to begin with so one could argue that this isn't a regression, but it does have a real impact on other JDK classes. In particular, java.security.SecureRandom#getPrngAlgorithm uses the first SecureRandom implementation it encounters from the Set returned by getServices. The consequence is that the algorithm you actually get when using java.security.SecureRandom#SecureRandom() is very poorly defined and will often differ when running code on Java 8 vs Java 12.
REGRESSION : Last worked in version 8u212
STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
Invoke `new java.security.SecureRandom#SecureRandom()` on Java 8 and Java 12
EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
Provided the same set of java.security.Provider implementations are loaded, the same SecureRandomSpi implementation is used by the returned SecureRandom implementation.
ACTUAL -
The actual implementation depends on the order of the entries Provider's Hashtable.
FREQUENCY : always
- backported by
-
JDK-8239246 java.security.Provider#getServices order is no longer deterministic
-
- Resolved
-
-
JDK-8240495 java.security.Provider#getServices order is no longer deterministic
-
- Resolved
-
-
JDK-8241196 java.security.Provider#getServices order is no longer deterministic
-
- Resolved
-
-
JDK-8241347 java.security.Provider#getServices order is no longer deterministic
-
- Resolved
-
-
JDK-8245789 java.security.Provider#getServices order is no longer deterministic
-
- Resolved
-
-
JDK-8246975 java.security.Provider#getServices order is no longer deterministic
-
- Resolved
-
-
JDK-8248959 java.security.Provider#getServices order is no longer deterministic
-
- Resolved
-
-
JDK-8251731 java.security.Provider#getServices order is no longer deterministic
-
- Resolved
-
-
JDK-8244014 java.security.Provider#getServices order is no longer deterministic
-
- Closed
-
- relates to
-
JDK-8246383 NullPointerException in JceSecurity.getVerificationResult when using Entrust provider
-
- Resolved
-
-
JDK-8246613 Choose the default SecureRandom algo based on registration ordering
-
- Closed
-
-
JDK-7092821 java.security.Provider.getService() is synchronized and became scalability bottleneck
-
- Resolved
-
-
JDK-8229521 Need clarification on default algorithm for new SecureRandom()
-
- Open
-