Blame SOURCES/rh1995150-disable_non-fips_crypto.patch

d1af5a
diff --git openjdk/src/java.base/share/classes/module-info.java openjdk/src/java.base/share/classes/module-info.java
d1af5a
index 9d4a794de1a..39e69362458 100644
d1af5a
--- openjdk/src/java.base/share/classes/module-info.java
d1af5a
+++ openjdk/src/java.base/share/classes/module-info.java
d1af5a
@@ -151,6 +151,7 @@ module java.base {
d1af5a
         java.management,
d1af5a
         java.naming,
d1af5a
         java.rmi,
d1af5a
+        jdk.crypto.ec,
d1af5a
         jdk.jartool,
d1af5a
         jdk.jlink,
d1af5a
         jdk.net,
d1af5a
diff --git openjdk/src/java.base/share/classes/sun/security/provider/SunEntries.java openjdk/src/java.base/share/classes/sun/security/provider/SunEntries.java
d1af5a
index 912cad59714..c5e13c98bd9 100644
d1af5a
--- openjdk/src/java.base/share/classes/sun/security/provider/SunEntries.java
d1af5a
+++ openjdk/src/java.base/share/classes/sun/security/provider/SunEntries.java
d1af5a
@@ -30,6 +30,7 @@ import java.net.*;
d1af5a
 import java.util.*;
d1af5a
 import java.security.*;
d1af5a
 
d1af5a
+import jdk.internal.access.SharedSecrets;
d1af5a
 import jdk.internal.util.StaticProperty;
d1af5a
 import sun.security.action.GetPropertyAction;
d1af5a
 import sun.security.util.SecurityProviderConstants;
d1af5a
@@ -83,6 +84,10 @@ import static sun.security.util.SecurityProviderConstants.getAliases;
d1af5a
 
d1af5a
 public final class SunEntries {
d1af5a
 
d1af5a
+    private static final boolean systemFipsEnabled =
d1af5a
+            SharedSecrets.getJavaSecuritySystemConfiguratorAccess()
d1af5a
+            .isSystemFipsEnabled();
d1af5a
+
d1af5a
     // the default algo used by SecureRandom class for new SecureRandom() calls
d1af5a
     public static final String DEF_SECURE_RANDOM_ALGO;
d1af5a
 
d1af5a
@@ -94,147 +99,149 @@ public final class SunEntries {
d1af5a
         // common attribute map
d1af5a
         HashMap<String, String> attrs = new HashMap<>(3);
d1af5a
 
d1af5a
-        /*
d1af5a
-         * SecureRandom engines
d1af5a
-         */
d1af5a
-        attrs.put("ThreadSafe", "true");
d1af5a
-        if (NativePRNG.isAvailable()) {
d1af5a
-            add(p, "SecureRandom", "NativePRNG",
d1af5a
-                    "sun.security.provider.NativePRNG", attrs);
d1af5a
-        }
d1af5a
-        if (NativePRNG.Blocking.isAvailable()) {
d1af5a
-            add(p, "SecureRandom", "NativePRNGBlocking",
d1af5a
-                    "sun.security.provider.NativePRNG$Blocking", attrs);
d1af5a
-        }
d1af5a
-        if (NativePRNG.NonBlocking.isAvailable()) {
d1af5a
-            add(p, "SecureRandom", "NativePRNGNonBlocking",
d1af5a
-                    "sun.security.provider.NativePRNG$NonBlocking", attrs);
d1af5a
+        if (!systemFipsEnabled) {
d1af5a
+            /*
d1af5a
+             * SecureRandom engines
d1af5a
+             */
d1af5a
+            attrs.put("ThreadSafe", "true");
d1af5a
+            if (NativePRNG.isAvailable()) {
d1af5a
+                add(p, "SecureRandom", "NativePRNG",
d1af5a
+                        "sun.security.provider.NativePRNG", attrs);
d1af5a
+            }
d1af5a
+            if (NativePRNG.Blocking.isAvailable()) {
d1af5a
+                add(p, "SecureRandom", "NativePRNGBlocking",
d1af5a
+                        "sun.security.provider.NativePRNG$Blocking", attrs);
d1af5a
+            }
d1af5a
+            if (NativePRNG.NonBlocking.isAvailable()) {
d1af5a
+                add(p, "SecureRandom", "NativePRNGNonBlocking",
d1af5a
+                        "sun.security.provider.NativePRNG$NonBlocking", attrs);
d1af5a
+            }
d1af5a
+            attrs.put("ImplementedIn", "Software");
d1af5a
+            add(p, "SecureRandom", "DRBG", "sun.security.provider.DRBG", attrs);
d1af5a
+            add(p, "SecureRandom", "SHA1PRNG",
d1af5a
+                    "sun.security.provider.SecureRandom", attrs);
d1af5a
+
d1af5a
+            /*
d1af5a
+             * Signature engines
d1af5a
+             */
d1af5a
+            attrs.clear();
d1af5a
+            String dsaKeyClasses = "java.security.interfaces.DSAPublicKey" +
d1af5a
+                    "|java.security.interfaces.DSAPrivateKey";
d1af5a
+            attrs.put("SupportedKeyClasses", dsaKeyClasses);
d1af5a
+            attrs.put("ImplementedIn", "Software");
d1af5a
+
d1af5a
+            attrs.put("KeySize", "1024"); // for NONE and SHA1 DSA signatures
d1af5a
+
d1af5a
+            addWithAlias(p, "Signature", "SHA1withDSA",
d1af5a
+                    "sun.security.provider.DSA$SHA1withDSA", attrs);
d1af5a
+            addWithAlias(p, "Signature", "NONEwithDSA",
d1af5a
+                    "sun.security.provider.DSA$RawDSA", attrs);
d1af5a
+
d1af5a
+            // for DSA signatures with 224/256-bit digests
d1af5a
+            attrs.put("KeySize", "2048");
d1af5a
+
d1af5a
+            addWithAlias(p, "Signature", "SHA224withDSA",
d1af5a
+                    "sun.security.provider.DSA$SHA224withDSA", attrs);
d1af5a
+            addWithAlias(p, "Signature", "SHA256withDSA",
d1af5a
+                    "sun.security.provider.DSA$SHA256withDSA", attrs);
d1af5a
+
d1af5a
+            addWithAlias(p, "Signature", "SHA3-224withDSA",
d1af5a
+                    "sun.security.provider.DSA$SHA3_224withDSA", attrs);
d1af5a
+            addWithAlias(p, "Signature", "SHA3-256withDSA",
d1af5a
+                    "sun.security.provider.DSA$SHA3_256withDSA", attrs);
d1af5a
+
d1af5a
+            attrs.put("KeySize", "3072"); // for DSA sig using 384/512-bit digests
d1af5a
+
d1af5a
+            addWithAlias(p, "Signature", "SHA384withDSA",
d1af5a
+                    "sun.security.provider.DSA$SHA384withDSA", attrs);
d1af5a
+            addWithAlias(p, "Signature", "SHA512withDSA",
d1af5a
+                    "sun.security.provider.DSA$SHA512withDSA", attrs);
d1af5a
+            addWithAlias(p, "Signature", "SHA3-384withDSA",
d1af5a
+                    "sun.security.provider.DSA$SHA3_384withDSA", attrs);
d1af5a
+            addWithAlias(p, "Signature", "SHA3-512withDSA",
d1af5a
+                    "sun.security.provider.DSA$SHA3_512withDSA", attrs);
d1af5a
+
d1af5a
+            attrs.remove("KeySize");
d1af5a
+
d1af5a
+            add(p, "Signature", "SHA1withDSAinP1363Format",
d1af5a
+                    "sun.security.provider.DSA$SHA1withDSAinP1363Format");
d1af5a
+            add(p, "Signature", "NONEwithDSAinP1363Format",
d1af5a
+                    "sun.security.provider.DSA$RawDSAinP1363Format");
d1af5a
+            add(p, "Signature", "SHA224withDSAinP1363Format",
d1af5a
+                    "sun.security.provider.DSA$SHA224withDSAinP1363Format");
d1af5a
+            add(p, "Signature", "SHA256withDSAinP1363Format",
d1af5a
+                    "sun.security.provider.DSA$SHA256withDSAinP1363Format");
d1af5a
+            add(p, "Signature", "SHA384withDSAinP1363Format",
d1af5a
+                    "sun.security.provider.DSA$SHA384withDSAinP1363Format");
d1af5a
+            add(p, "Signature", "SHA512withDSAinP1363Format",
d1af5a
+                    "sun.security.provider.DSA$SHA512withDSAinP1363Format");
d1af5a
+            add(p, "Signature", "SHA3-224withDSAinP1363Format",
d1af5a
+                    "sun.security.provider.DSA$SHA3_224withDSAinP1363Format");
d1af5a
+            add(p, "Signature", "SHA3-256withDSAinP1363Format",
d1af5a
+                    "sun.security.provider.DSA$SHA3_256withDSAinP1363Format");
d1af5a
+            add(p, "Signature", "SHA3-384withDSAinP1363Format",
d1af5a
+                    "sun.security.provider.DSA$SHA3_384withDSAinP1363Format");
d1af5a
+            add(p, "Signature", "SHA3-512withDSAinP1363Format",
d1af5a
+                    "sun.security.provider.DSA$SHA3_512withDSAinP1363Format");
d1af5a
+            /*
d1af5a
+             *  Key Pair Generator engines
d1af5a
+             */
d1af5a
+            attrs.clear();
d1af5a
+            attrs.put("ImplementedIn", "Software");
d1af5a
+            attrs.put("KeySize", "2048"); // for DSA KPG and APG only
d1af5a
+
d1af5a
+            String dsaKPGImplClass = "sun.security.provider.DSAKeyPairGenerator$";
d1af5a
+            dsaKPGImplClass += (useLegacyDSA? "Legacy" : "Current");
d1af5a
+            addWithAlias(p, "KeyPairGenerator", "DSA", dsaKPGImplClass, attrs);
d1af5a
+
d1af5a
+            /*
d1af5a
+             * Algorithm Parameter Generator engines
d1af5a
+             */
d1af5a
+            addWithAlias(p, "AlgorithmParameterGenerator", "DSA",
d1af5a
+                    "sun.security.provider.DSAParameterGenerator", attrs);
d1af5a
+            attrs.remove("KeySize");
d1af5a
+
d1af5a
+            /*
d1af5a
+             * Algorithm Parameter engines
d1af5a
+             */
d1af5a
+            addWithAlias(p, "AlgorithmParameters", "DSA",
d1af5a
+                    "sun.security.provider.DSAParameters", attrs);
d1af5a
+
d1af5a
+            /*
d1af5a
+             * Key factories
d1af5a
+             */
d1af5a
+            addWithAlias(p, "KeyFactory", "DSA",
d1af5a
+                    "sun.security.provider.DSAKeyFactory", attrs);
d1af5a
+
d1af5a
+            /*
d1af5a
+             * Digest engines
d1af5a
+             */
d1af5a
+            add(p, "MessageDigest", "MD2", "sun.security.provider.MD2", attrs);
d1af5a
+            add(p, "MessageDigest", "MD5", "sun.security.provider.MD5", attrs);
d1af5a
+            addWithAlias(p, "MessageDigest", "SHA-1", "sun.security.provider.SHA",
d1af5a
+                    attrs);
d1af5a
+
d1af5a
+            addWithAlias(p, "MessageDigest", "SHA-224",
d1af5a
+                    "sun.security.provider.SHA2$SHA224", attrs);
d1af5a
+            addWithAlias(p, "MessageDigest", "SHA-256",
d1af5a
+                    "sun.security.provider.SHA2$SHA256", attrs);
d1af5a
+            addWithAlias(p, "MessageDigest", "SHA-384",
d1af5a
+                    "sun.security.provider.SHA5$SHA384", attrs);
d1af5a
+            addWithAlias(p, "MessageDigest", "SHA-512",
d1af5a
+                    "sun.security.provider.SHA5$SHA512", attrs);
d1af5a
+            addWithAlias(p, "MessageDigest", "SHA-512/224",
d1af5a
+                    "sun.security.provider.SHA5$SHA512_224", attrs);
d1af5a
+            addWithAlias(p, "MessageDigest", "SHA-512/256",
d1af5a
+                    "sun.security.provider.SHA5$SHA512_256", attrs);
d1af5a
+            addWithAlias(p, "MessageDigest", "SHA3-224",
d1af5a
+                    "sun.security.provider.SHA3$SHA224", attrs);
d1af5a
+            addWithAlias(p, "MessageDigest", "SHA3-256",
d1af5a
+                    "sun.security.provider.SHA3$SHA256", attrs);
d1af5a
+            addWithAlias(p, "MessageDigest", "SHA3-384",
d1af5a
+                    "sun.security.provider.SHA3$SHA384", attrs);
d1af5a
+            addWithAlias(p, "MessageDigest", "SHA3-512",
d1af5a
+                    "sun.security.provider.SHA3$SHA512", attrs);
d1af5a
         }
d1af5a
-        attrs.put("ImplementedIn", "Software");
d1af5a
-        add(p, "SecureRandom", "DRBG", "sun.security.provider.DRBG", attrs);
d1af5a
-        add(p, "SecureRandom", "SHA1PRNG",
d1af5a
-                "sun.security.provider.SecureRandom", attrs);
d1af5a
-
d1af5a
-        /*
d1af5a
-         * Signature engines
d1af5a
-         */
d1af5a
-        attrs.clear();
d1af5a
-        String dsaKeyClasses = "java.security.interfaces.DSAPublicKey" +
d1af5a
-                "|java.security.interfaces.DSAPrivateKey";
d1af5a
-        attrs.put("SupportedKeyClasses", dsaKeyClasses);
d1af5a
-        attrs.put("ImplementedIn", "Software");
d1af5a
-
d1af5a
-        attrs.put("KeySize", "1024"); // for NONE and SHA1 DSA signatures
d1af5a
-
d1af5a
-        addWithAlias(p, "Signature", "SHA1withDSA",
d1af5a
-                "sun.security.provider.DSA$SHA1withDSA", attrs);
d1af5a
-        addWithAlias(p, "Signature", "NONEwithDSA",
d1af5a
-                "sun.security.provider.DSA$RawDSA", attrs);
d1af5a
-
d1af5a
-        // for DSA signatures with 224/256-bit digests
d1af5a
-        attrs.put("KeySize", "2048");
d1af5a
-
d1af5a
-        addWithAlias(p, "Signature", "SHA224withDSA",
d1af5a
-                "sun.security.provider.DSA$SHA224withDSA", attrs);
d1af5a
-        addWithAlias(p, "Signature", "SHA256withDSA",
d1af5a
-                "sun.security.provider.DSA$SHA256withDSA", attrs);
d1af5a
-
d1af5a
-        addWithAlias(p, "Signature", "SHA3-224withDSA",
d1af5a
-                "sun.security.provider.DSA$SHA3_224withDSA", attrs);
d1af5a
-        addWithAlias(p, "Signature", "SHA3-256withDSA",
d1af5a
-                "sun.security.provider.DSA$SHA3_256withDSA", attrs);
d1af5a
-
d1af5a
-        attrs.put("KeySize", "3072"); // for DSA sig using 384/512-bit digests
d1af5a
-
d1af5a
-        addWithAlias(p, "Signature", "SHA384withDSA",
d1af5a
-                "sun.security.provider.DSA$SHA384withDSA", attrs);
d1af5a
-        addWithAlias(p, "Signature", "SHA512withDSA",
d1af5a
-                "sun.security.provider.DSA$SHA512withDSA", attrs);
d1af5a
-        addWithAlias(p, "Signature", "SHA3-384withDSA",
d1af5a
-                "sun.security.provider.DSA$SHA3_384withDSA", attrs);
d1af5a
-        addWithAlias(p, "Signature", "SHA3-512withDSA",
d1af5a
-                "sun.security.provider.DSA$SHA3_512withDSA", attrs);
d1af5a
-
d1af5a
-        attrs.remove("KeySize");
d1af5a
-
d1af5a
-        add(p, "Signature", "SHA1withDSAinP1363Format",
d1af5a
-                "sun.security.provider.DSA$SHA1withDSAinP1363Format");
d1af5a
-        add(p, "Signature", "NONEwithDSAinP1363Format",
d1af5a
-                "sun.security.provider.DSA$RawDSAinP1363Format");
d1af5a
-        add(p, "Signature", "SHA224withDSAinP1363Format",
d1af5a
-                "sun.security.provider.DSA$SHA224withDSAinP1363Format");
d1af5a
-        add(p, "Signature", "SHA256withDSAinP1363Format",
d1af5a
-                "sun.security.provider.DSA$SHA256withDSAinP1363Format");
d1af5a
-        add(p, "Signature", "SHA384withDSAinP1363Format",
d1af5a
-                "sun.security.provider.DSA$SHA384withDSAinP1363Format");
d1af5a
-        add(p, "Signature", "SHA512withDSAinP1363Format",
d1af5a
-                "sun.security.provider.DSA$SHA512withDSAinP1363Format");
d1af5a
-        add(p, "Signature", "SHA3-224withDSAinP1363Format",
d1af5a
-                "sun.security.provider.DSA$SHA3_224withDSAinP1363Format");
d1af5a
-        add(p, "Signature", "SHA3-256withDSAinP1363Format",
d1af5a
-                "sun.security.provider.DSA$SHA3_256withDSAinP1363Format");
d1af5a
-        add(p, "Signature", "SHA3-384withDSAinP1363Format",
d1af5a
-                "sun.security.provider.DSA$SHA3_384withDSAinP1363Format");
d1af5a
-        add(p, "Signature", "SHA3-512withDSAinP1363Format",
d1af5a
-                "sun.security.provider.DSA$SHA3_512withDSAinP1363Format");
d1af5a
-        /*
d1af5a
-         *  Key Pair Generator engines
d1af5a
-         */
d1af5a
-        attrs.clear();
d1af5a
-        attrs.put("ImplementedIn", "Software");
d1af5a
-        attrs.put("KeySize", "2048"); // for DSA KPG and APG only
d1af5a
-
d1af5a
-        String dsaKPGImplClass = "sun.security.provider.DSAKeyPairGenerator$";
d1af5a
-        dsaKPGImplClass += (useLegacyDSA? "Legacy" : "Current");
d1af5a
-        addWithAlias(p, "KeyPairGenerator", "DSA", dsaKPGImplClass, attrs);
d1af5a
-
d1af5a
-        /*
d1af5a
-         * Algorithm Parameter Generator engines
d1af5a
-         */
d1af5a
-        addWithAlias(p, "AlgorithmParameterGenerator", "DSA",
d1af5a
-                "sun.security.provider.DSAParameterGenerator", attrs);
d1af5a
-        attrs.remove("KeySize");
d1af5a
-
d1af5a
-        /*
d1af5a
-         * Algorithm Parameter engines
d1af5a
-         */
d1af5a
-        addWithAlias(p, "AlgorithmParameters", "DSA",
d1af5a
-                "sun.security.provider.DSAParameters", attrs);
d1af5a
-
d1af5a
-        /*
d1af5a
-         * Key factories
d1af5a
-         */
d1af5a
-        addWithAlias(p, "KeyFactory", "DSA",
d1af5a
-                "sun.security.provider.DSAKeyFactory", attrs);
d1af5a
-
d1af5a
-        /*
d1af5a
-         * Digest engines
d1af5a
-         */
d1af5a
-        add(p, "MessageDigest", "MD2", "sun.security.provider.MD2", attrs);
d1af5a
-        add(p, "MessageDigest", "MD5", "sun.security.provider.MD5", attrs);
d1af5a
-        addWithAlias(p, "MessageDigest", "SHA-1", "sun.security.provider.SHA",
d1af5a
-                attrs);
d1af5a
-
d1af5a
-        addWithAlias(p, "MessageDigest", "SHA-224",
d1af5a
-                "sun.security.provider.SHA2$SHA224", attrs);
d1af5a
-        addWithAlias(p, "MessageDigest", "SHA-256",
d1af5a
-                "sun.security.provider.SHA2$SHA256", attrs);
d1af5a
-        addWithAlias(p, "MessageDigest", "SHA-384",
d1af5a
-                "sun.security.provider.SHA5$SHA384", attrs);
d1af5a
-        addWithAlias(p, "MessageDigest", "SHA-512",
d1af5a
-                "sun.security.provider.SHA5$SHA512", attrs);
d1af5a
-        addWithAlias(p, "MessageDigest", "SHA-512/224",
d1af5a
-                "sun.security.provider.SHA5$SHA512_224", attrs);
d1af5a
-        addWithAlias(p, "MessageDigest", "SHA-512/256",
d1af5a
-                "sun.security.provider.SHA5$SHA512_256", attrs);
d1af5a
-        addWithAlias(p, "MessageDigest", "SHA3-224",
d1af5a
-                "sun.security.provider.SHA3$SHA224", attrs);
d1af5a
-        addWithAlias(p, "MessageDigest", "SHA3-256",
d1af5a
-                "sun.security.provider.SHA3$SHA256", attrs);
d1af5a
-        addWithAlias(p, "MessageDigest", "SHA3-384",
d1af5a
-                "sun.security.provider.SHA3$SHA384", attrs);
d1af5a
-        addWithAlias(p, "MessageDigest", "SHA3-512",
d1af5a
-                "sun.security.provider.SHA3$SHA512", attrs);
d1af5a
 
d1af5a
         /*
d1af5a
          * Certificates
d1af5a
diff --git openjdk/src/jdk.crypto.ec/share/classes/sun/security/ec/SunEC.java openjdk/src/jdk.crypto.ec/share/classes/sun/security/ec/SunEC.java
d1af5a
index 8c9e4f9dbe6..9eeb3013e0d 100644
d1af5a
--- openjdk/src/jdk.crypto.ec/share/classes/sun/security/ec/SunEC.java
d1af5a
+++ openjdk/src/jdk.crypto.ec/share/classes/sun/security/ec/SunEC.java
d1af5a
@@ -38,6 +38,7 @@ import java.util.HashMap;
d1af5a
 import java.util.Iterator;
d1af5a
 import java.util.List;
d1af5a
 
d1af5a
+import jdk.internal.access.SharedSecrets;
d1af5a
 import sun.security.ec.ed.EdDSAAlgorithmParameters;
d1af5a
 import sun.security.ec.ed.EdDSAKeyFactory;
d1af5a
 import sun.security.ec.ed.EdDSAKeyPairGenerator;
d1af5a
@@ -56,6 +57,10 @@ public final class SunEC extends Provider {
d1af5a
 
d1af5a
     private static final long serialVersionUID = -2279741672933606418L;
d1af5a
 
d1af5a
+    private static final boolean systemFipsEnabled =
d1af5a
+            SharedSecrets.getJavaSecuritySystemConfiguratorAccess()
d1af5a
+            .isSystemFipsEnabled();
d1af5a
+
d1af5a
     private static class ProviderServiceA extends ProviderService {
d1af5a
         ProviderServiceA(Provider p, String type, String algo, String cn,
d1af5a
             HashMap<String, String> attrs) {
d1af5a
@@ -249,85 +254,86 @@ public final class SunEC extends Provider {
d1af5a
 
d1af5a
         putXDHEntries();
d1af5a
         putEdDSAEntries();
d1af5a
-
d1af5a
-        /*
d1af5a
-         * Signature engines
d1af5a
-         */
d1af5a
-        putService(new ProviderService(this, "Signature",
d1af5a
-            "NONEwithECDSA", "sun.security.ec.ECDSASignature$Raw",
d1af5a
-            null, ATTRS));
d1af5a
-        putService(new ProviderServiceA(this, "Signature",
d1af5a
-            "SHA1withECDSA", "sun.security.ec.ECDSASignature$SHA1",
d1af5a
-            ATTRS));
d1af5a
-        putService(new ProviderServiceA(this, "Signature",
d1af5a
-            "SHA224withECDSA", "sun.security.ec.ECDSASignature$SHA224",
d1af5a
-            ATTRS));
d1af5a
-        putService(new ProviderServiceA(this, "Signature",
d1af5a
-            "SHA256withECDSA", "sun.security.ec.ECDSASignature$SHA256",
d1af5a
-            ATTRS));
d1af5a
-        putService(new ProviderServiceA(this, "Signature",
d1af5a
-            "SHA384withECDSA", "sun.security.ec.ECDSASignature$SHA384",
d1af5a
-            ATTRS));
d1af5a
-        putService(new ProviderServiceA(this, "Signature",
d1af5a
-            "SHA512withECDSA", "sun.security.ec.ECDSASignature$SHA512",
d1af5a
-            ATTRS));
d1af5a
-        putService(new ProviderServiceA(this, "Signature",
d1af5a
-            "SHA3-224withECDSA", "sun.security.ec.ECDSASignature$SHA3_224",
d1af5a
-            ATTRS));
d1af5a
-        putService(new ProviderServiceA(this, "Signature",
d1af5a
-            "SHA3-256withECDSA", "sun.security.ec.ECDSASignature$SHA3_256",
d1af5a
-            ATTRS));
d1af5a
-        putService(new ProviderServiceA(this, "Signature",
d1af5a
-            "SHA3-384withECDSA", "sun.security.ec.ECDSASignature$SHA3_384",
d1af5a
-            ATTRS));
d1af5a
-        putService(new ProviderServiceA(this, "Signature",
d1af5a
-            "SHA3-512withECDSA", "sun.security.ec.ECDSASignature$SHA3_512",
d1af5a
-            ATTRS));
d1af5a
-
d1af5a
-        putService(new ProviderService(this, "Signature",
d1af5a
-             "NONEwithECDSAinP1363Format",
d1af5a
-             "sun.security.ec.ECDSASignature$RawinP1363Format"));
d1af5a
-        putService(new ProviderService(this, "Signature",
d1af5a
-             "SHA1withECDSAinP1363Format",
d1af5a
-             "sun.security.ec.ECDSASignature$SHA1inP1363Format"));
d1af5a
-        putService(new ProviderService(this, "Signature",
d1af5a
-             "SHA224withECDSAinP1363Format",
d1af5a
-             "sun.security.ec.ECDSASignature$SHA224inP1363Format"));
d1af5a
-        putService(new ProviderService(this, "Signature",
d1af5a
-             "SHA256withECDSAinP1363Format",
d1af5a
-             "sun.security.ec.ECDSASignature$SHA256inP1363Format"));
d1af5a
-        putService(new ProviderService(this, "Signature",
d1af5a
-            "SHA384withECDSAinP1363Format",
d1af5a
-            "sun.security.ec.ECDSASignature$SHA384inP1363Format"));
d1af5a
-        putService(new ProviderService(this, "Signature",
d1af5a
-            "SHA512withECDSAinP1363Format",
d1af5a
-            "sun.security.ec.ECDSASignature$SHA512inP1363Format"));
d1af5a
-
d1af5a
-        putService(new ProviderService(this, "Signature",
d1af5a
-             "SHA3-224withECDSAinP1363Format",
d1af5a
-             "sun.security.ec.ECDSASignature$SHA3_224inP1363Format"));
d1af5a
-        putService(new ProviderService(this, "Signature",
d1af5a
-             "SHA3-256withECDSAinP1363Format",
d1af5a
-             "sun.security.ec.ECDSASignature$SHA3_256inP1363Format"));
d1af5a
-        putService(new ProviderService(this, "Signature",
d1af5a
-            "SHA3-384withECDSAinP1363Format",
d1af5a
-            "sun.security.ec.ECDSASignature$SHA3_384inP1363Format"));
d1af5a
-        putService(new ProviderService(this, "Signature",
d1af5a
-            "SHA3-512withECDSAinP1363Format",
d1af5a
-            "sun.security.ec.ECDSASignature$SHA3_512inP1363Format"));
d1af5a
-
d1af5a
-        /*
d1af5a
-         *  Key Pair Generator engine
d1af5a
-         */
d1af5a
-        putService(new ProviderService(this, "KeyPairGenerator",
d1af5a
-            "EC", "sun.security.ec.ECKeyPairGenerator",
d1af5a
-            List.of("EllipticCurve"), ATTRS));
d1af5a
-
d1af5a
-        /*
d1af5a
-         * Key Agreement engine
d1af5a
-         */
d1af5a
-        putService(new ProviderService(this, "KeyAgreement",
d1af5a
-            "ECDH", "sun.security.ec.ECDHKeyAgreement", null, ATTRS));
d1af5a
+        if (!systemFipsEnabled) {
d1af5a
+            /*
d1af5a
+             * Signature engines
d1af5a
+             */
d1af5a
+            putService(new ProviderService(this, "Signature",
d1af5a
+                "NONEwithECDSA", "sun.security.ec.ECDSASignature$Raw",
d1af5a
+                null, ATTRS));
d1af5a
+            putService(new ProviderServiceA(this, "Signature",
d1af5a
+                "SHA1withECDSA", "sun.security.ec.ECDSASignature$SHA1",
d1af5a
+                ATTRS));
d1af5a
+            putService(new ProviderServiceA(this, "Signature",
d1af5a
+                "SHA224withECDSA", "sun.security.ec.ECDSASignature$SHA224",
d1af5a
+                ATTRS));
d1af5a
+            putService(new ProviderServiceA(this, "Signature",
d1af5a
+                "SHA256withECDSA", "sun.security.ec.ECDSASignature$SHA256",
d1af5a
+                ATTRS));
d1af5a
+            putService(new ProviderServiceA(this, "Signature",
d1af5a
+                "SHA384withECDSA", "sun.security.ec.ECDSASignature$SHA384",
d1af5a
+                ATTRS));
d1af5a
+            putService(new ProviderServiceA(this, "Signature",
d1af5a
+                "SHA512withECDSA", "sun.security.ec.ECDSASignature$SHA512",
d1af5a
+                ATTRS));
d1af5a
+            putService(new ProviderServiceA(this, "Signature",
d1af5a
+                "SHA3-224withECDSA", "sun.security.ec.ECDSASignature$SHA3_224",
d1af5a
+                ATTRS));
d1af5a
+            putService(new ProviderServiceA(this, "Signature",
d1af5a
+                "SHA3-256withECDSA", "sun.security.ec.ECDSASignature$SHA3_256",
d1af5a
+                ATTRS));
d1af5a
+            putService(new ProviderServiceA(this, "Signature",
d1af5a
+                "SHA3-384withECDSA", "sun.security.ec.ECDSASignature$SHA3_384",
d1af5a
+                ATTRS));
d1af5a
+            putService(new ProviderServiceA(this, "Signature",
d1af5a
+                "SHA3-512withECDSA", "sun.security.ec.ECDSASignature$SHA3_512",
d1af5a
+                ATTRS));
d1af5a
+
d1af5a
+            putService(new ProviderService(this, "Signature",
d1af5a
+                 "NONEwithECDSAinP1363Format",
d1af5a
+                 "sun.security.ec.ECDSASignature$RawinP1363Format"));
d1af5a
+            putService(new ProviderService(this, "Signature",
d1af5a
+                 "SHA1withECDSAinP1363Format",
d1af5a
+                 "sun.security.ec.ECDSASignature$SHA1inP1363Format"));
d1af5a
+            putService(new ProviderService(this, "Signature",
d1af5a
+                 "SHA224withECDSAinP1363Format",
d1af5a
+                 "sun.security.ec.ECDSASignature$SHA224inP1363Format"));
d1af5a
+            putService(new ProviderService(this, "Signature",
d1af5a
+                 "SHA256withECDSAinP1363Format",
d1af5a
+                 "sun.security.ec.ECDSASignature$SHA256inP1363Format"));
d1af5a
+            putService(new ProviderService(this, "Signature",
d1af5a
+                "SHA384withECDSAinP1363Format",
d1af5a
+                "sun.security.ec.ECDSASignature$SHA384inP1363Format"));
d1af5a
+            putService(new ProviderService(this, "Signature",
d1af5a
+                "SHA512withECDSAinP1363Format",
d1af5a
+                "sun.security.ec.ECDSASignature$SHA512inP1363Format"));
d1af5a
+
d1af5a
+            putService(new ProviderService(this, "Signature",
d1af5a
+                 "SHA3-224withECDSAinP1363Format",
d1af5a
+                 "sun.security.ec.ECDSASignature$SHA3_224inP1363Format"));
d1af5a
+            putService(new ProviderService(this, "Signature",
d1af5a
+                 "SHA3-256withECDSAinP1363Format",
d1af5a
+                 "sun.security.ec.ECDSASignature$SHA3_256inP1363Format"));
d1af5a
+            putService(new ProviderService(this, "Signature",
d1af5a
+                "SHA3-384withECDSAinP1363Format",
d1af5a
+                "sun.security.ec.ECDSASignature$SHA3_384inP1363Format"));
d1af5a
+            putService(new ProviderService(this, "Signature",
d1af5a
+                "SHA3-512withECDSAinP1363Format",
d1af5a
+                "sun.security.ec.ECDSASignature$SHA3_512inP1363Format"));
d1af5a
+
d1af5a
+            /*
d1af5a
+             *  Key Pair Generator engine
d1af5a
+             */
d1af5a
+            putService(new ProviderService(this, "KeyPairGenerator",
d1af5a
+                "EC", "sun.security.ec.ECKeyPairGenerator",
d1af5a
+                List.of("EllipticCurve"), ATTRS));
d1af5a
+
d1af5a
+            /*
d1af5a
+             * Key Agreement engine
d1af5a
+             */
d1af5a
+            putService(new ProviderService(this, "KeyAgreement",
d1af5a
+                "ECDH", "sun.security.ec.ECDHKeyAgreement", null, ATTRS));
d1af5a
+        }
d1af5a
     }
d1af5a
 
d1af5a
     private void putXDHEntries() {
d1af5a
@@ -344,23 +350,25 @@ public final class SunEC extends Provider {
d1af5a
             "X448", "sun.security.ec.XDHKeyFactory.X448",
d1af5a
             ATTRS));
d1af5a
 
d1af5a
-        putService(new ProviderService(this, "KeyPairGenerator",
d1af5a
-            "XDH", "sun.security.ec.XDHKeyPairGenerator", null, ATTRS));
d1af5a
-        putService(new ProviderServiceA(this, "KeyPairGenerator",
d1af5a
-            "X25519", "sun.security.ec.XDHKeyPairGenerator.X25519",
d1af5a
-            ATTRS));
d1af5a
-        putService(new ProviderServiceA(this, "KeyPairGenerator",
d1af5a
-            "X448", "sun.security.ec.XDHKeyPairGenerator.X448",
d1af5a
-            ATTRS));
d1af5a
-
d1af5a
-        putService(new ProviderService(this, "KeyAgreement",
d1af5a
-            "XDH", "sun.security.ec.XDHKeyAgreement", null, ATTRS));
d1af5a
-        putService(new ProviderServiceA(this, "KeyAgreement",
d1af5a
-            "X25519", "sun.security.ec.XDHKeyAgreement.X25519",
d1af5a
-            ATTRS));
d1af5a
-        putService(new ProviderServiceA(this, "KeyAgreement",
d1af5a
-            "X448", "sun.security.ec.XDHKeyAgreement.X448",
d1af5a
-            ATTRS));
d1af5a
+        if (!systemFipsEnabled) {
d1af5a
+            putService(new ProviderService(this, "KeyPairGenerator",
d1af5a
+                "XDH", "sun.security.ec.XDHKeyPairGenerator", null, ATTRS));
d1af5a
+            putService(new ProviderServiceA(this, "KeyPairGenerator",
d1af5a
+                "X25519", "sun.security.ec.XDHKeyPairGenerator.X25519",
d1af5a
+                ATTRS));
d1af5a
+            putService(new ProviderServiceA(this, "KeyPairGenerator",
d1af5a
+                "X448", "sun.security.ec.XDHKeyPairGenerator.X448",
d1af5a
+                ATTRS));
d1af5a
+
d1af5a
+            putService(new ProviderService(this, "KeyAgreement",
d1af5a
+                "XDH", "sun.security.ec.XDHKeyAgreement", null, ATTRS));
d1af5a
+            putService(new ProviderServiceA(this, "KeyAgreement",
d1af5a
+                "X25519", "sun.security.ec.XDHKeyAgreement.X25519",
d1af5a
+                ATTRS));
d1af5a
+            putService(new ProviderServiceA(this, "KeyAgreement",
d1af5a
+                "X448", "sun.security.ec.XDHKeyAgreement.X448",
d1af5a
+                ATTRS));
d1af5a
+        }
d1af5a
     }
d1af5a
 
d1af5a
     private void putEdDSAEntries() {
d1af5a
@@ -375,21 +383,23 @@ public final class SunEC extends Provider {
d1af5a
         putService(new ProviderServiceA(this, "KeyFactory",
d1af5a
             "Ed448", "sun.security.ec.ed.EdDSAKeyFactory.Ed448", ATTRS));
d1af5a
 
d1af5a
-        putService(new ProviderService(this, "KeyPairGenerator",
d1af5a
-            "EdDSA", "sun.security.ec.ed.EdDSAKeyPairGenerator", null, ATTRS));
d1af5a
-        putService(new ProviderServiceA(this, "KeyPairGenerator",
d1af5a
-            "Ed25519", "sun.security.ec.ed.EdDSAKeyPairGenerator.Ed25519",
d1af5a
-            ATTRS));
d1af5a
-        putService(new ProviderServiceA(this, "KeyPairGenerator",
d1af5a
-            "Ed448", "sun.security.ec.ed.EdDSAKeyPairGenerator.Ed448",
d1af5a
-            ATTRS));
d1af5a
-
d1af5a
-        putService(new ProviderService(this, "Signature",
d1af5a
-            "EdDSA", "sun.security.ec.ed.EdDSASignature", null, ATTRS));
d1af5a
-        putService(new ProviderServiceA(this, "Signature",
d1af5a
-            "Ed25519", "sun.security.ec.ed.EdDSASignature.Ed25519", ATTRS));
d1af5a
-        putService(new ProviderServiceA(this, "Signature",
d1af5a
-            "Ed448", "sun.security.ec.ed.EdDSASignature.Ed448", ATTRS));
d1af5a
+        if (!systemFipsEnabled) {
d1af5a
+            putService(new ProviderService(this, "KeyPairGenerator",
d1af5a
+                "EdDSA", "sun.security.ec.ed.EdDSAKeyPairGenerator", null, ATTRS));
d1af5a
+            putService(new ProviderServiceA(this, "KeyPairGenerator",
d1af5a
+                "Ed25519", "sun.security.ec.ed.EdDSAKeyPairGenerator.Ed25519",
d1af5a
+                ATTRS));
d1af5a
+            putService(new ProviderServiceA(this, "KeyPairGenerator",
d1af5a
+                "Ed448", "sun.security.ec.ed.EdDSAKeyPairGenerator.Ed448",
d1af5a
+                ATTRS));
d1af5a
+
d1af5a
+            putService(new ProviderService(this, "Signature",
d1af5a
+                "EdDSA", "sun.security.ec.ed.EdDSASignature", null, ATTRS));
d1af5a
+            putService(new ProviderServiceA(this, "Signature",
d1af5a
+                "Ed25519", "sun.security.ec.ed.EdDSASignature.Ed25519", ATTRS));
d1af5a
+            putService(new ProviderServiceA(this, "Signature",
d1af5a
+                "Ed448", "sun.security.ec.ed.EdDSASignature.Ed448", ATTRS));
d1af5a
+        }
d1af5a
 
d1af5a
     }
d1af5a
 }