--- old/src/java.base/share/classes/java/security/MessageDigest.java Fri Sep 30 01:32:57 2016 +++ new/src/java.base/share/classes/java/security/MessageDigest.java Fri Sep 30 01:32:56 2016 @@ -32,11 +32,14 @@ import java.io.PrintStream; import java.io.InputStream; import java.io.ByteArrayInputStream; - +import java.security.InvalidKeyException; import java.nio.ByteBuffer; import sun.security.util.Debug; +import sun.security.util.MessageDigestSpi2; +import javax.crypto.SecretKey; + /** * This MessageDigest class provides applications the functionality of a * message digest algorithm, such as SHA-1 or SHA-256. @@ -548,7 +551,7 @@ * and its original parent (Object). */ - static class Delegate extends MessageDigest { + static class Delegate extends MessageDigest implements MessageDigestSpi2 { // The provider implementation (delegate) private MessageDigestSpi digestSpi; @@ -601,6 +604,14 @@ digestSpi.engineUpdate(input); } + public void engineUpdate(SecretKey key) throws InvalidKeyException { + if (digestSpi instanceof MessageDigestSpi2) { + ((MessageDigestSpi2)digestSpi).engineUpdate(key); + } else { + throw new UnsupportedOperationException + ("Digest does not support update of SecretKey object"); + } + } protected byte[] engineDigest() { return digestSpi.engineDigest(); }