diff --git a/jdk/src/java.base/share/classes/java/security/KeyStore.java b/jdk/src/java.base/share/classes/java/security/KeyStore.java index 811422f73e5..f963cae1390 100644 --- a/jdk/src/java.base/share/classes/java/security/KeyStore.java +++ b/jdk/src/java.base/share/classes/java/security/KeyStore.java @@ -824,10 +824,14 @@ public class KeyStore { if (!skipDebug && pdebug != null) { pdebug.println("KeyStore." + type.toUpperCase() + " type from: " + - this.provider.getName()); + getProviderName()); } } + private String getProviderName() { + return (provider == null) ? "(no provider)" : provider.getName(); + } + /** * Returns a keystore object of the specified type. * diff --git a/jdk/src/java.base/share/classes/java/security/MessageDigest.java b/jdk/src/java.base/share/classes/java/security/MessageDigest.java index dac789f1ab1..692dce5a10f 100644 --- a/jdk/src/java.base/share/classes/java/security/MessageDigest.java +++ b/jdk/src/java.base/share/classes/java/security/MessageDigest.java @@ -430,13 +430,17 @@ public abstract class MessageDigest extends MessageDigestSpi { return digest(); } + private String getProviderName() { + return (provider == null) ? "(no provider)" : provider.getName(); + } + /** * Returns a string representation of this message digest object. */ public String toString() { ByteArrayOutputStream baos = new ByteArrayOutputStream(); PrintStream p = new PrintStream(baos); - p.print(algorithm+" Message Digest from "+provider.getName()+", "); + p.print(algorithm+" Message Digest from "+getProviderName()+", "); switch (state) { case INITIAL: p.print(""); diff --git a/jdk/src/java.base/share/classes/java/security/SecureRandom.java b/jdk/src/java.base/share/classes/java/security/SecureRandom.java index 12b60f688e0..ac4ee6e7c7a 100644 --- a/jdk/src/java.base/share/classes/java/security/SecureRandom.java +++ b/jdk/src/java.base/share/classes/java/security/SecureRandom.java @@ -310,10 +310,14 @@ public class SecureRandom extends java.util.Random { if (!skipDebug && pdebug != null) { pdebug.println("SecureRandom." + algorithm + - " algorithm from: " + this.provider.getName()); + " algorithm from: " + getProviderName()); } } + private String getProviderName() { + return (provider == null) ? "(no provider)" : provider.getName(); + } + /** * Returns a {@code SecureRandom} object that implements the specified * Random Number Generator (RNG) algorithm. diff --git a/jdk/src/java.base/share/classes/javax/crypto/Cipher.java b/jdk/src/java.base/share/classes/javax/crypto/Cipher.java index 4c3ba78f676..48ca2b01994 100644 --- a/jdk/src/java.base/share/classes/javax/crypto/Cipher.java +++ b/jdk/src/java.base/share/classes/javax/crypto/Cipher.java @@ -611,6 +611,10 @@ public class Cipher { return getInstance(transformation, p); } + private String getProviderName() { + return (provider == null) ? "(no provider)" : provider.getName(); + } + /** * Returns a {@code Cipher} object that implements the specified * transformation. @@ -1278,7 +1282,7 @@ public class Cipher { if (!skipDebug && pdebug != null) { pdebug.println("Cipher." + transformation + " " + getOpmodeString(opmode) + " algorithm from: " + - this.provider.getName()); + getProviderName()); } } @@ -1421,7 +1425,7 @@ public class Cipher { if (!skipDebug && pdebug != null) { pdebug.println("Cipher." + transformation + " " + getOpmodeString(opmode) + " algorithm from: " + - this.provider.getName()); + getProviderName()); } } @@ -1564,7 +1568,7 @@ public class Cipher { if (!skipDebug && pdebug != null) { pdebug.println("Cipher." + transformation + " " + getOpmodeString(opmode) + " algorithm from: " + - this.provider.getName()); + getProviderName()); } } @@ -1754,7 +1758,7 @@ public class Cipher { if (!skipDebug && pdebug != null) { pdebug.println("Cipher." + transformation + " " + getOpmodeString(opmode) + " algorithm from: " + - this.provider.getName()); + getProviderName()); } } diff --git a/jdk/src/java.base/share/classes/javax/crypto/KeyAgreement.java b/jdk/src/java.base/share/classes/javax/crypto/KeyAgreement.java index be333ff1eb7..47449b3338c 100644 --- a/jdk/src/java.base/share/classes/javax/crypto/KeyAgreement.java +++ b/jdk/src/java.base/share/classes/javax/crypto/KeyAgreement.java @@ -484,7 +484,7 @@ public class KeyAgreement { if (!skipDebug && pdebug != null) { pdebug.println("KeyAgreement." + algorithm + " algorithm from: " + - this.provider.getName()); + getProviderName()); } } @@ -517,6 +517,10 @@ public class KeyAgreement { init(key, params, JceSecurity.RANDOM); } + private String getProviderName() { + return (provider == null) ? "(no provider)" : provider.getName(); + } + /** * Initializes this key agreement with the given key, set of * algorithm parameters, and source of randomness. @@ -545,7 +549,7 @@ public class KeyAgreement { if (!skipDebug && pdebug != null) { pdebug.println("KeyAgreement." + algorithm + " algorithm from: " + - this.provider.getName()); + getProviderName()); } } diff --git a/jdk/src/java.base/share/classes/javax/crypto/KeyGenerator.java b/jdk/src/java.base/share/classes/javax/crypto/KeyGenerator.java index a5277d8bb6f..4cb8b79be23 100644 --- a/jdk/src/java.base/share/classes/javax/crypto/KeyGenerator.java +++ b/jdk/src/java.base/share/classes/javax/crypto/KeyGenerator.java @@ -154,7 +154,7 @@ public class KeyGenerator { if (!skipDebug && pdebug != null) { pdebug.println("KeyGenerator." + algorithm + " algorithm from: " + - this.provider.getName()); + getProviderName()); } } @@ -172,10 +172,14 @@ public class KeyGenerator { if (!skipDebug && pdebug != null) { pdebug.println("KeyGenerator." + algorithm + " algorithm from: " + - this.provider.getName()); + getProviderName()); } } + private String getProviderName() { + return (provider == null) ? "(no provider)" : provider.getName(); + } + /** * Returns the algorithm name of this {@code KeyGenerator} object. * diff --git a/jdk/src/java.base/share/classes/javax/crypto/Mac.java b/jdk/src/java.base/share/classes/javax/crypto/Mac.java index 97cd19a197a..5a1d12de4c6 100644 --- a/jdk/src/java.base/share/classes/javax/crypto/Mac.java +++ b/jdk/src/java.base/share/classes/javax/crypto/Mac.java @@ -415,6 +415,10 @@ public class Mac implements Cloneable { return spi.engineGetMacLength(); } + private String getProviderName() { + return (provider == null) ? "(no provider)" : provider.getName(); + } + /** * Initializes this {@code Mac} object with the given key. * @@ -437,7 +441,7 @@ public class Mac implements Cloneable { if (!skipDebug && pdebug != null) { pdebug.println("Mac." + algorithm + " algorithm from: " + - this.provider.getName()); + getProviderName()); } } @@ -464,7 +468,7 @@ public class Mac implements Cloneable { if (!skipDebug && pdebug != null) { pdebug.println("Mac." + algorithm + " algorithm from: " + - this.provider.getName()); + getProviderName()); } } diff --git a/jdk/test/java/security/Signature/NoProvider.java b/jdk/test/java/security/Signature/NoProvider.java index 4fa4499aaa6..782f06f1759 100644 --- a/jdk/test/java/security/Signature/NoProvider.java +++ b/jdk/test/java/security/Signature/NoProvider.java @@ -25,7 +25,7 @@ * @test * @bug 8165751 * @summary Verify that that a subclass of Signature that does not contain a - * provider can be used verify. + * provider can be used to verify. * @run main/othervm -Djava.security.debug=provider NoProvider */ diff --git a/jdk/test/javax/crypto/NullCipher/TestNPE.java b/jdk/test/javax/crypto/NullCipher/TestNPE.java index 0e216d0226d..c81ce74367a 100644 --- a/jdk/test/javax/crypto/NullCipher/TestNPE.java +++ b/jdk/test/javax/crypto/NullCipher/TestNPE.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2007, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2016, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -23,10 +23,12 @@ /* * @test - * @bug 4937853 + * @bug 4937853 8170876 * @summary Make sure normal calls of NullCipher does not throw NPE. * @author Valerie Peng * @key randomness + * @run main TestNPE + * @run main/othervm -Djava.security.debug=provider TestNPE */ import java.util.Arrays; import java.security.AlgorithmParameters;