--- old/src/java.base/share/classes/sun/security/ssl/SignatureScheme.java 2019-04-10 18:52:11.758249200 -0400 +++ new/src/java.base/share/classes/sun/security/ssl/SignatureScheme.java 2019-04-10 18:52:10.847158100 -0400 @@ -43,7 +43,6 @@ import sun.security.ssl.SupportedGroupsExtension.NamedGroupType; import sun.security.ssl.X509Authentication.X509Possession; import sun.security.util.KeyUtil; -import sun.security.util.SignatureUtil; enum SignatureScheme { // EdDSA algorithms @@ -472,11 +471,16 @@ Signature signer = Signature.getInstance(algorithm); if (key instanceof PublicKey) { - SignatureUtil.initVerifyWithParam(signer, (PublicKey)key, - signAlgParameter); + signer.initVerify((PublicKey)(key)); } else { - SignatureUtil.initSignWithParam(signer, (PrivateKey)key, - signAlgParameter, null); + signer.initSign((PrivateKey)key); + } + + // Important note: Please don't set the parameters before signature + // or verification initialization, so that the crypto provider can + // be selected properly. + if (signAlgParameter != null) { + signer.setParameter(signAlgParameter); } return signer;