--- old/src/java.base/share/classes/com/sun/crypto/provider/TlsMasterSecretGenerator.java 2017-10-06 17:48:33.531248114 -0300 +++ new/src/java.base/share/classes/com/sun/crypto/provider/TlsMasterSecretGenerator.java 2017-10-06 17:48:33.432248172 -0300 @@ -106,12 +106,22 @@ 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");