jdk/src/share/classes/sun/security/ssl/HandshakeHash.java
changeset 14664 e71aa0962e70
parent 7804 c59149ba3780
child 14675 17224d0282f1
equal deleted inserted replaced
14663:49b7de969579 14664:e71aa0962e70
    26 
    26 
    27 package sun.security.ssl;
    27 package sun.security.ssl;
    28 
    28 
    29 import java.io.ByteArrayOutputStream;
    29 import java.io.ByteArrayOutputStream;
    30 import java.security.*;
    30 import java.security.*;
    31 import java.util.Arrays;
       
    32 import java.util.LinkedList;
       
    33 import java.util.List;
       
    34 import java.util.Locale;
    31 import java.util.Locale;
    35 import java.util.Set;
    32 import java.util.Set;
    36 
    33 
    37 /**
    34 /**
    38  * Abstraction for the SSL/TLS hash of all handshake messages that is
    35  * Abstraction for the SSL/TLS hash of all handshake messages that is
   389         // if (digests[0] == null) {
   386         // if (digests[0] == null) {
   390         //     throw new IllegalStateException("no digests left");
   387         //     throw new IllegalStateException("no digests left");
   391         // }
   388         // }
   392     }
   389     }
   393 
   390 
       
   391     @Override
   394     protected int engineGetDigestLength() {
   392     protected int engineGetDigestLength() {
   395         checkState();
   393         checkState();
   396         return digests[0].getDigestLength();
   394         return digests[0].getDigestLength();
   397     }
   395     }
   398 
   396 
       
   397     @Override
   399     protected void engineUpdate(byte b) {
   398     protected void engineUpdate(byte b) {
   400         checkState();
   399         checkState();
   401         for (int i = 0; (i < digests.length) && (digests[i] != null); i++) {
   400         for (int i = 0; (i < digests.length) && (digests[i] != null); i++) {
   402             digests[i].update(b);
   401             digests[i].update(b);
   403         }
   402         }
   404     }
   403     }
   405 
   404 
       
   405     @Override
   406     protected void engineUpdate(byte[] b, int offset, int len) {
   406     protected void engineUpdate(byte[] b, int offset, int len) {
   407         checkState();
   407         checkState();
   408         for (int i = 0; (i < digests.length) && (digests[i] != null); i++) {
   408         for (int i = 0; (i < digests.length) && (digests[i] != null); i++) {
   409             digests[i].update(b, offset, len);
   409             digests[i].update(b, offset, len);
   410         }
   410         }
   411     }
   411     }
   412 
   412 
       
   413     @Override
   413     protected byte[] engineDigest() {
   414     protected byte[] engineDigest() {
   414         checkState();
   415         checkState();
   415         byte[] digest = digests[0].digest();
   416         byte[] digest = digests[0].digest();
   416         digestReset();
   417         digestReset();
   417         return digest;
   418         return digest;
   418     }
   419     }
   419 
   420 
       
   421     @Override
   420     protected int engineDigest(byte[] buf, int offset, int len)
   422     protected int engineDigest(byte[] buf, int offset, int len)
   421             throws DigestException {
   423             throws DigestException {
   422         checkState();
   424         checkState();
   423         int n = digests[0].digest(buf, offset, len);
   425         int n = digests[0].digest(buf, offset, len);
   424         digestReset();
   426         digestReset();
   434         for (int i = 1; (i < digests.length) && (digests[i] != null); i++) {
   436         for (int i = 1; (i < digests.length) && (digests[i] != null); i++) {
   435             digests[i].reset();
   437             digests[i].reset();
   436         }
   438         }
   437     }
   439     }
   438 
   440 
       
   441     @Override
   439     protected void engineReset() {
   442     protected void engineReset() {
   440         checkState();
   443         checkState();
   441         for (int i = 0; (i < digests.length) && (digests[i] != null); i++) {
   444         for (int i = 0; (i < digests.length) && (digests[i] != null); i++) {
   442             digests[i].reset();
   445             digests[i].reset();
   443         }
   446         }
   444     }
   447     }
   445 
   448 
       
   449     @Override
   446     public Object clone() {
   450     public Object clone() {
   447         checkState();
   451         checkState();
   448         for (int i = digests.length - 1; i >= 0; i--) {
   452         for (int i = digests.length - 1; i >= 0; i--) {
   449             if (digests[i] != null) {
   453             if (digests[i] != null) {
   450                 MessageDigest digest = digests[i];
   454                 MessageDigest digest = digests[i];