3030import java .util .*;
3131import java .security .*;
3232
33+ import jdk .internal .misc .SharedSecrets ;
3334import jdk .internal .util .StaticProperty ;
3435import sun .security .action .GetPropertyAction ;
3536
7778
7879public final class SunEntries {
7980
81+ private static final boolean systemFipsEnabled =
82+ SharedSecrets .getJavaSecuritySystemConfiguratorAccess ()
83+ .isSystemFipsEnabled ();
84+
8085 // the default algo used by SecureRandom class for new SecureRandom() calls
8186 public static final String DEF_SECURE_RANDOM_ALGO ;
8287
@@ -100,136 +105,138 @@ public static List<String> createAliasesWithOid(String ... oids) {
100105 // common attribute map
101106 HashMap <String , String > attrs = new HashMap <>(3 );
102107
103- /*
104- * SecureRandom engines
105- */
106- attrs .put ("ThreadSafe" , "true" );
107- if (NativePRNG .isAvailable ()) {
108- add (p , "SecureRandom" , "NativePRNG" ,
109- "sun.security.provider.NativePRNG" ,
110- null , attrs );
111- }
112- if (NativePRNG .Blocking .isAvailable ()) {
113- add (p , "SecureRandom" , "NativePRNGBlocking" ,
114- "sun.security.provider.NativePRNG$Blocking" , null , attrs );
115- }
116- if (NativePRNG .NonBlocking .isAvailable ()) {
117- add (p , "SecureRandom" , "NativePRNGNonBlocking" ,
118- "sun.security.provider.NativePRNG$NonBlocking" , null , attrs );
119- }
120- attrs .put ("ImplementedIn" , "Software" );
121- add (p , "SecureRandom" , "DRBG" , "sun.security.provider.DRBG" ,
122- null , attrs );
123- add (p , "SecureRandom" , "SHA1PRNG" ,
124- "sun.security.provider.SecureRandom" , null , attrs );
125-
126- /*
127- * Signature engines
128- */
129- attrs .clear ();
130- String dsaKeyClasses = "java.security.interfaces.DSAPublicKey" +
131- "|java.security.interfaces.DSAPrivateKey" ;
132- attrs .put ("SupportedKeyClasses" , dsaKeyClasses );
133- attrs .put ("ImplementedIn" , "Software" );
134-
135- attrs .put ("KeySize" , "1024" ); // for NONE and SHA1 DSA signatures
136-
137- add (p , "Signature" , "SHA1withDSA" ,
138- "sun.security.provider.DSA$SHA1withDSA" ,
139- createAliasesWithOid ("1.2.840.10040.4.3" , "DSA" , "DSS" ,
140- "SHA/DSA" , "SHA-1/DSA" , "SHA1/DSA" , "SHAwithDSA" ,
141- "DSAWithSHA1" , "1.3.14.3.2.13" , "1.3.14.3.2.27" ), attrs );
142- add (p , "Signature" , "NONEwithDSA" , "sun.security.provider.DSA$RawDSA" ,
143- createAliases ("RawDSA" ), attrs );
144-
145- attrs .put ("KeySize" , "2048" ); // for SHA224 and SHA256 DSA signatures
146-
147- add (p , "Signature" , "SHA224withDSA" ,
148- "sun.security.provider.DSA$SHA224withDSA" ,
149- createAliasesWithOid ("2.16.840.1.101.3.4.3.1" ), attrs );
150- add (p , "Signature" , "SHA256withDSA" ,
151- "sun.security.provider.DSA$SHA256withDSA" ,
152- createAliasesWithOid ("2.16.840.1.101.3.4.3.2" ), attrs );
153-
154- attrs .remove ("KeySize" );
108+ if (!systemFipsEnabled ) {
109+ /*
110+ * SecureRandom engines
111+ */
112+ attrs .put ("ThreadSafe" , "true" );
113+ if (NativePRNG .isAvailable ()) {
114+ add (p , "SecureRandom" , "NativePRNG" ,
115+ "sun.security.provider.NativePRNG" ,
116+ null , attrs );
117+ }
118+ if (NativePRNG .Blocking .isAvailable ()) {
119+ add (p , "SecureRandom" , "NativePRNGBlocking" ,
120+ "sun.security.provider.NativePRNG$Blocking" , null , attrs );
121+ }
122+ if (NativePRNG .NonBlocking .isAvailable ()) {
123+ add (p , "SecureRandom" , "NativePRNGNonBlocking" ,
124+ "sun.security.provider.NativePRNG$NonBlocking" , null , attrs );
125+ }
126+ attrs .put ("ImplementedIn" , "Software" );
127+ add (p , "SecureRandom" , "DRBG" , "sun.security.provider.DRBG" ,
128+ null , attrs );
129+ add (p , "SecureRandom" , "SHA1PRNG" ,
130+ "sun.security.provider.SecureRandom" , null , attrs );
155131
156- add (p , "Signature" , "SHA1withDSAinP1363Format" ,
157- "sun.security.provider.DSA$SHA1withDSAinP1363Format" ,
158- null , null );
159- add (p , "Signature" , "NONEwithDSAinP1363Format" ,
160- "sun.security.provider.DSA$RawDSAinP1363Format" ,
161- null , null );
162- add (p , "Signature" , "SHA224withDSAinP1363Format" ,
163- "sun.security.provider.DSA$SHA224withDSAinP1363Format" ,
164- null , null );
165- add (p , "Signature" , "SHA256withDSAinP1363Format" ,
166- "sun.security.provider.DSA$SHA256withDSAinP1363Format" ,
167- null , null );
132+ /*
133+ * Signature engines
134+ */
135+ attrs .clear ();
136+ String dsaKeyClasses = "java.security.interfaces.DSAPublicKey" +
137+ "|java.security.interfaces.DSAPrivateKey" ;
138+ attrs .put ("SupportedKeyClasses" , dsaKeyClasses );
139+ attrs .put ("ImplementedIn" , "Software" );
140+
141+ attrs .put ("KeySize" , "1024" ); // for NONE and SHA1 DSA signatures
142+
143+ add (p , "Signature" , "SHA1withDSA" ,
144+ "sun.security.provider.DSA$SHA1withDSA" ,
145+ createAliasesWithOid ("1.2.840.10040.4.3" , "DSA" , "DSS" ,
146+ "SHA/DSA" , "SHA-1/DSA" , "SHA1/DSA" , "SHAwithDSA" ,
147+ "DSAWithSHA1" , "1.3.14.3.2.13" , "1.3.14.3.2.27" ), attrs );
148+ add (p , "Signature" , "NONEwithDSA" , "sun.security.provider.DSA$RawDSA" ,
149+ createAliases ("RawDSA" ), attrs );
150+
151+ attrs .put ("KeySize" , "2048" ); // for SHA224 and SHA256 DSA signatures
152+
153+ add (p , "Signature" , "SHA224withDSA" ,
154+ "sun.security.provider.DSA$SHA224withDSA" ,
155+ createAliasesWithOid ("2.16.840.1.101.3.4.3.1" ), attrs );
156+ add (p , "Signature" , "SHA256withDSA" ,
157+ "sun.security.provider.DSA$SHA256withDSA" ,
158+ createAliasesWithOid ("2.16.840.1.101.3.4.3.2" ), attrs );
159+
160+ attrs .remove ("KeySize" );
161+
162+ add (p , "Signature" , "SHA1withDSAinP1363Format" ,
163+ "sun.security.provider.DSA$SHA1withDSAinP1363Format" ,
164+ null , null );
165+ add (p , "Signature" , "NONEwithDSAinP1363Format" ,
166+ "sun.security.provider.DSA$RawDSAinP1363Format" ,
167+ null , null );
168+ add (p , "Signature" , "SHA224withDSAinP1363Format" ,
169+ "sun.security.provider.DSA$SHA224withDSAinP1363Format" ,
170+ null , null );
171+ add (p , "Signature" , "SHA256withDSAinP1363Format" ,
172+ "sun.security.provider.DSA$SHA256withDSAinP1363Format" ,
173+ null , null );
168174
169- /*
170- * Key Pair Generator engines
171- */
172- attrs .clear ();
173- attrs .put ("ImplementedIn" , "Software" );
174- attrs .put ("KeySize" , "2048" ); // for DSA KPG and APG only
175+ /*
176+ * Key Pair Generator engines
177+ */
178+ attrs .clear ();
179+ attrs .put ("ImplementedIn" , "Software" );
180+ attrs .put ("KeySize" , "2048" ); // for DSA KPG and APG only
175181
176- String dsaOid = "1.2.840.10040.4.1" ;
177- List <String > dsaAliases = createAliasesWithOid (dsaOid , "1.3.14.3.2.12" );
178- String dsaKPGImplClass = "sun.security.provider.DSAKeyPairGenerator$" ;
179- dsaKPGImplClass += (useLegacyDSA ? "Legacy" : "Current" );
180- add (p , "KeyPairGenerator" , "DSA" , dsaKPGImplClass , dsaAliases , attrs );
182+ String dsaOid = "1.2.840.10040.4.1" ;
183+ List <String > dsaAliases = createAliasesWithOid (dsaOid , "1.3.14.3.2.12" );
184+ String dsaKPGImplClass = "sun.security.provider.DSAKeyPairGenerator$" ;
185+ dsaKPGImplClass += (useLegacyDSA ? "Legacy" : "Current" );
186+ add (p , "KeyPairGenerator" , "DSA" , dsaKPGImplClass , dsaAliases , attrs );
181187
182- /*
183- * Algorithm Parameter Generator engines
184- */
185- add (p , "AlgorithmParameterGenerator" , "DSA" ,
186- "sun.security.provider.DSAParameterGenerator" , dsaAliases ,
187- attrs );
188- attrs .remove ("KeySize" );
188+ /*
189+ * Algorithm Parameter Generator engines
190+ */
191+ add (p , "AlgorithmParameterGenerator" , "DSA" ,
192+ "sun.security.provider.DSAParameterGenerator" , dsaAliases ,
193+ attrs );
194+ attrs .remove ("KeySize" );
189195
190- /*
191- * Algorithm Parameter engines
192- */
193- add (p , "AlgorithmParameters" , "DSA" ,
194- "sun.security.provider.DSAParameters" , dsaAliases , attrs );
196+ /*
197+ * Algorithm Parameter engines
198+ */
199+ add (p , "AlgorithmParameters" , "DSA" ,
200+ "sun.security.provider.DSAParameters" , dsaAliases , attrs );
195201
196- /*
197- * Key factories
198- */
199- add (p , "KeyFactory" , "DSA" , "sun.security.provider.DSAKeyFactory" ,
200- dsaAliases , attrs );
202+ /*
203+ * Key factories
204+ */
205+ add (p , "KeyFactory" , "DSA" , "sun.security.provider.DSAKeyFactory" ,
206+ dsaAliases , attrs );
201207
202- /*
203- * Digest engines
204- */
205- add (p , "MessageDigest" , "MD2" , "sun.security.provider.MD2" , null , attrs );
206- add (p , "MessageDigest" , "MD5" , "sun.security.provider.MD5" , null , attrs );
207- add (p , "MessageDigest" , "SHA" , "sun.security.provider.SHA" ,
208- createAliasesWithOid ("1.3.14.3.2.26" , "SHA-1" , "SHA1" ), attrs );
209-
210- String sha2BaseOid = "2.16.840.1.101.3.4.2" ;
211- add (p , "MessageDigest" , "SHA-224" , "sun.security.provider.SHA2$SHA224" ,
212- createAliasesWithOid (sha2BaseOid + ".4" ), attrs );
213- add (p , "MessageDigest" , "SHA-256" , "sun.security.provider.SHA2$SHA256" ,
214- createAliasesWithOid (sha2BaseOid + ".1" ), attrs );
215- add (p , "MessageDigest" , "SHA-384" , "sun.security.provider.SHA5$SHA384" ,
216- createAliasesWithOid (sha2BaseOid + ".2" ), attrs );
217- add (p , "MessageDigest" , "SHA-512" , "sun.security.provider.SHA5$SHA512" ,
218- createAliasesWithOid (sha2BaseOid + ".3" ), attrs );
219- add (p , "MessageDigest" , "SHA-512/224" ,
220- "sun.security.provider.SHA5$SHA512_224" ,
221- createAliasesWithOid (sha2BaseOid + ".5" ), attrs );
222- add (p , "MessageDigest" , "SHA-512/256" ,
223- "sun.security.provider.SHA5$SHA512_256" ,
224- createAliasesWithOid (sha2BaseOid + ".6" ), attrs );
225- add (p , "MessageDigest" , "SHA3-224" , "sun.security.provider.SHA3$SHA224" ,
226- createAliasesWithOid (sha2BaseOid + ".7" ), attrs );
227- add (p , "MessageDigest" , "SHA3-256" , "sun.security.provider.SHA3$SHA256" ,
228- createAliasesWithOid (sha2BaseOid + ".8" ), attrs );
229- add (p , "MessageDigest" , "SHA3-384" , "sun.security.provider.SHA3$SHA384" ,
230- createAliasesWithOid (sha2BaseOid + ".9" ), attrs );
231- add (p , "MessageDigest" , "SHA3-512" , "sun.security.provider.SHA3$SHA512" ,
232- createAliasesWithOid (sha2BaseOid + ".10" ), attrs );
208+ /*
209+ * Digest engines
210+ */
211+ add (p , "MessageDigest" , "MD2" , "sun.security.provider.MD2" , null , attrs );
212+ add (p , "MessageDigest" , "MD5" , "sun.security.provider.MD5" , null , attrs );
213+ add (p , "MessageDigest" , "SHA" , "sun.security.provider.SHA" ,
214+ createAliasesWithOid ("1.3.14.3.2.26" , "SHA-1" , "SHA1" ), attrs );
215+
216+ String sha2BaseOid = "2.16.840.1.101.3.4.2" ;
217+ add (p , "MessageDigest" , "SHA-224" , "sun.security.provider.SHA2$SHA224" ,
218+ createAliasesWithOid (sha2BaseOid + ".4" ), attrs );
219+ add (p , "MessageDigest" , "SHA-256" , "sun.security.provider.SHA2$SHA256" ,
220+ createAliasesWithOid (sha2BaseOid + ".1" ), attrs );
221+ add (p , "MessageDigest" , "SHA-384" , "sun.security.provider.SHA5$SHA384" ,
222+ createAliasesWithOid (sha2BaseOid + ".2" ), attrs );
223+ add (p , "MessageDigest" , "SHA-512" , "sun.security.provider.SHA5$SHA512" ,
224+ createAliasesWithOid (sha2BaseOid + ".3" ), attrs );
225+ add (p , "MessageDigest" , "SHA-512/224" ,
226+ "sun.security.provider.SHA5$SHA512_224" ,
227+ createAliasesWithOid (sha2BaseOid + ".5" ), attrs );
228+ add (p , "MessageDigest" , "SHA-512/256" ,
229+ "sun.security.provider.SHA5$SHA512_256" ,
230+ createAliasesWithOid (sha2BaseOid + ".6" ), attrs );
231+ add (p , "MessageDigest" , "SHA3-224" , "sun.security.provider.SHA3$SHA224" ,
232+ createAliasesWithOid (sha2BaseOid + ".7" ), attrs );
233+ add (p , "MessageDigest" , "SHA3-256" , "sun.security.provider.SHA3$SHA256" ,
234+ createAliasesWithOid (sha2BaseOid + ".8" ), attrs );
235+ add (p , "MessageDigest" , "SHA3-384" , "sun.security.provider.SHA3$SHA384" ,
236+ createAliasesWithOid (sha2BaseOid + ".9" ), attrs );
237+ add (p , "MessageDigest" , "SHA3-512" , "sun.security.provider.SHA3$SHA512" ,
238+ createAliasesWithOid (sha2BaseOid + ".10" ), attrs );
239+ }
233240
234241 /*
235242 * Certificates
0 commit comments