diff --git a/jdk/LICENSE b/jdk/LICENSE index b40a0f457d7..8b400c7ab81 100644 --- a/jdk/LICENSE +++ b/jdk/LICENSE @@ -3,7 +3,7 @@ The GNU General Public License (GPL) Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. -59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. @@ -287,8 +287,8 @@ pointer to where the full notice is found. more details. You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., 59 - Temple Place, Suite 330, Boston, MA 02111-1307 USA + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. Also add information on how to contact you by electronic and paper mail. diff --git a/jdk/src/java.base/share/classes/sun/security/ssl/RSAClientKeyExchange.java b/jdk/src/java.base/share/classes/sun/security/ssl/RSAClientKeyExchange.java index 38a942d03b7..6cb2b650de5 100644 --- a/jdk/src/java.base/share/classes/sun/security/ssl/RSAClientKeyExchange.java +++ b/jdk/src/java.base/share/classes/sun/security/ssl/RSAClientKeyExchange.java @@ -90,6 +90,30 @@ final class RSAClientKeyExchange extends HandshakeMessage { } } + /* + * Retrieving the cipher's provider name for the debug purposes + * can throw an exception by itself. + */ + private static String safeProviderName(Cipher cipher) { + try { + return cipher.getProvider().toString(); + } catch (Exception e) { + if (debug != null && Debug.isOn("handshake")) { + System.out.println("Retrieving The Cipher provider name" + + " caused exception " + e.getMessage()); + } + } + try { + return cipher.toString() + " (provider name not available)"; + } catch (Exception e) { + if (debug != null && Debug.isOn("handshake")) { + System.out.println("Retrieving The Cipher name" + + " caused exception " + e.getMessage()); + } + } + return "(cipher/provider names not available)"; + } + /* * Server gets the PKCS #1 (block format 02) data, decrypts * it with its private key. @@ -132,15 +156,19 @@ final class RSAClientKeyExchange extends HandshakeMessage { cipher.getProvider().getName()); } catch (InvalidKeyException | UnsupportedOperationException iue) { if (debug != null && Debug.isOn("handshake")) { - System.out.println("The Cipher provider " + - cipher.getProvider().getName() + - " caused exception: " + iue.getMessage()); + System.out.println("The Cipher provider " + + safeProviderName(cipher) + + " caused exception: " + iue.getMessage()); } needFailover = true; } if (needFailover) { + // The cipher might be spoiled by unsuccessful call to init(), + // so request a fresh instance + cipher = JsseJce.getCipher(JsseJce.CIPHER_RSA_PKCS1); + // Use DECRYPT_MODE and dispose the previous initialization. cipher.init(Cipher.DECRYPT_MODE, privateKey); boolean failed = false;