提交 bd719256 编写于 作者: V valeriep

8197441: Signature#initSign/initVerify for an invalid private/public key fails...

8197441: Signature#initSign/initVerify for an invalid private/public key fails with ClassCastException for SunPKCS11 provider
Summary: Rethrow ClassCastException with InvalidKeyException
Reviewed-by: ascarpino
上级 5b36eb38
...@@ -379,14 +379,19 @@ final class P11Signature extends SignatureSpi { ...@@ -379,14 +379,19 @@ final class P11Signature extends SignatureSpi {
if (key instanceof P11Key) { if (key instanceof P11Key) {
keySize = ((P11Key) key).length(); keySize = ((P11Key) key).length();
} else { } else {
if (keyAlgo.equals("RSA")) { try {
keySize = ((RSAKey) key).getModulus().bitLength(); if (keyAlgo.equals("RSA")) {
} else if (keyAlgo.equals("DSA")) { keySize = ((RSAKey) key).getModulus().bitLength();
keySize = ((DSAKey) key).getParams().getP().bitLength(); } else if (keyAlgo.equals("DSA")) {
} else if (keyAlgo.equals("EC")) { keySize = ((DSAKey) key).getParams().getP().bitLength();
keySize = ((ECKey) key).getParams().getCurve().getField().getFieldSize(); } else if (keyAlgo.equals("EC")) {
} else { keySize = ((ECKey) key).getParams().getCurve().getField().getFieldSize();
throw new ProviderException("Error: unsupported algo " + keyAlgo); } else {
throw new ProviderException("Error: unsupported algo " + keyAlgo);
}
} catch (ClassCastException cce) {
throw new InvalidKeyException(keyAlgo +
" key must be the right type", cce);
} }
} }
if ((minKeySize != -1) && (keySize < minKeySize)) { if ((minKeySize != -1) && (keySize < minKeySize)) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册