Mercurial > hg > icedtea8-forest > jdk
changeset 14435:2a93ed39a4e9 jdk8u252-b07
8197441: Signature#initSign/initVerify for an invalid private/public key fails with ClassCastException for SunPKCS11 provider
Summary: Rethrow ClassCastException with InvalidKeyException
Reviewed-by: ascarpino
author | valeriep |
---|---|
date | Fri, 13 Apr 2018 18:07:58 +0000 |
parents | 83bbe56ecea1 |
children | 8efdcbf79b11 |
files | src/share/classes/sun/security/pkcs11/P11Signature.java |
diffstat | 1 files changed, 13 insertions(+), 8 deletions(-) [+] |
line wrap: on
line diff
--- a/src/share/classes/sun/security/pkcs11/P11Signature.java Mon Mar 16 00:28:46 2020 +0000 +++ b/src/share/classes/sun/security/pkcs11/P11Signature.java Fri Apr 13 18:07:58 2018 +0000 @@ -379,14 +379,19 @@ if (key instanceof P11Key) { keySize = ((P11Key) key).length(); } else { - if (keyAlgo.equals("RSA")) { - keySize = ((RSAKey) key).getModulus().bitLength(); - } else if (keyAlgo.equals("DSA")) { - keySize = ((DSAKey) key).getParams().getP().bitLength(); - } else if (keyAlgo.equals("EC")) { - keySize = ((ECKey) key).getParams().getCurve().getField().getFieldSize(); - } else { - throw new ProviderException("Error: unsupported algo " + keyAlgo); + try { + if (keyAlgo.equals("RSA")) { + keySize = ((RSAKey) key).getModulus().bitLength(); + } else if (keyAlgo.equals("DSA")) { + keySize = ((DSAKey) key).getParams().getP().bitLength(); + } else if (keyAlgo.equals("EC")) { + keySize = ((ECKey) key).getParams().getCurve().getField().getFieldSize(); + } 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)) {