< 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 >