< prev index next >

src/java.base/share/classes/com/sun/crypto/provider/TlsMasterSecretGenerator.java

Print this page

        

@@ -104,16 +104,26 @@
             byte[] master;
             byte[] clientRandom = spec.getClientRandom();
             byte[] serverRandom = spec.getServerRandom();
 
             if (protocolVersion >= 0x0301) {
-                byte[] seed = concat(clientRandom, serverRandom);
+                byte[] label;
+                byte[] seed;
+                byte[] extendedMasterSecretSessionHash = 
+                        spec.getExtendedMasterSecretSessionHash();
+                if (extendedMasterSecretSessionHash != null) {
+                    label = LABEL_EXTENDED_MASTER_SECRET;
+                    seed = extendedMasterSecretSessionHash;
+                } else {
+                    label = LABEL_MASTER_SECRET;
+                    seed = concat(clientRandom, serverRandom);
+                }
                 master = ((protocolVersion >= 0x0303) ?
-                    doTLS12PRF(premaster, LABEL_MASTER_SECRET, seed, 48,
+                    doTLS12PRF(premaster, label, seed, 48,
                         spec.getPRFHashAlg(), spec.getPRFHashLength(),
                         spec.getPRFBlockSize()) :
-                    doTLS10PRF(premaster, LABEL_MASTER_SECRET, seed, 48));
+                    doTLS10PRF(premaster, label, seed, 48));
             } else {
                 master = new byte[48];
                 MessageDigest md5 = MessageDigest.getInstance("MD5");
                 MessageDigest sha = MessageDigest.getInstance("SHA");
 
< prev index next >