Skip to content

Commit 8f1b358

Browse files
committed
Release key exchange earlier
1 parent 97412b2 commit 8f1b358

File tree

4 files changed

+17
-9
lines changed

4 files changed

+17
-9
lines changed

tls/src/main/java/org/bouncycastle/tls/DTLSClientProtocol.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -322,6 +322,8 @@ protected DTLSTransport clientHandshake(ClientHandshakeState state)
322322
securityParameters.sessionHash = TlsUtils.getCurrentPRFHash(handshake.getHandshakeHash());
323323

324324
TlsProtocol.establishMasterSecret(clientContext, state.keyExchange);
325+
state.keyExchange = null;
326+
325327
recordLayer.initPendingEpoch(TlsUtils.initCipher(clientContext));
326328

327329
if (clientAuthSigner != null)

tls/src/main/java/org/bouncycastle/tls/DTLSServerProtocol.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -345,6 +345,8 @@ protected DTLSTransport serverHandshake(ServerHandshakeState state, DTLSRequest
345345
securityParameters.sessionHash = TlsUtils.getCurrentPRFHash(handshake.getHandshakeHash());
346346

347347
TlsProtocol.establishMasterSecret(serverContext, state.keyExchange);
348+
state.keyExchange = null;
349+
348350
recordLayer.initPendingEpoch(TlsUtils.initCipher(serverContext));
349351

350352
/*

tls/src/main/java/org/bouncycastle/tls/TlsClientProtocol.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -551,7 +551,7 @@ protected void handleHandshakeMessage(short type, HandshakeMessageInput buf)
551551
handleServerCertificate();
552552

553553
// There was no server key exchange message; check it's OK
554-
this.keyExchange.skipServerKeyExchange();
554+
keyExchange.skipServerKeyExchange();
555555

556556
// NB: Fall through to next case label
557557
}
@@ -645,6 +645,8 @@ protected void handleHandshakeMessage(short type, HandshakeMessageInput buf)
645645
establishMasterSecret(tlsClientContext, keyExchange);
646646
}
647647

648+
this.keyExchange = null;
649+
648650
recordStream.setPendingCipher(TlsUtils.initCipher(tlsClientContext));
649651

650652
if (clientAuthSigner != null)
@@ -688,7 +690,7 @@ protected void handleHandshakeMessage(short type, HandshakeMessageInput buf)
688690
{
689691
handleServerCertificate();
690692

691-
this.keyExchange.processServerKeyExchange(buf);
693+
keyExchange.processServerKeyExchange(buf);
692694

693695
assertEmpty(buf);
694696
break;
@@ -710,7 +712,7 @@ protected void handleHandshakeMessage(short type, HandshakeMessageInput buf)
710712
handleServerCertificate();
711713

712714
// There was no server key exchange message; check it's OK
713-
this.keyExchange.skipServerKeyExchange();
715+
keyExchange.skipServerKeyExchange();
714716

715717
// NB: Fall through to next case label
716718
}
@@ -1993,7 +1995,7 @@ protected void sendClientKeyExchange()
19931995
throws IOException
19941996
{
19951997
HandshakeMessageOutput message = new HandshakeMessageOutput(HandshakeType.client_key_exchange);
1996-
this.keyExchange.generateClientKeyExchange(message);
1998+
keyExchange.generateClientKeyExchange(message);
19971999
message.send(this);
19982000
}
19992001

tls/src/main/java/org/bouncycastle/tls/TlsServerProtocol.java

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1121,11 +1121,11 @@ protected void handleHandshakeMessage(short type, HandshakeMessageInput buf)
11211121
ByteArrayOutputStream endPointHash = new ByteArrayOutputStream();
11221122
if (null == serverCredentials)
11231123
{
1124-
this.keyExchange.skipServerCredentials();
1124+
keyExchange.skipServerCredentials();
11251125
}
11261126
else
11271127
{
1128-
this.keyExchange.processServerCredentials(serverCredentials);
1128+
keyExchange.processServerCredentials(serverCredentials);
11291129

11301130
serverCertificate = serverCredentials.getCertificate();
11311131
sendCertificateMessage(serverCertificate, endPointHash);
@@ -1151,7 +1151,7 @@ protected void handleHandshakeMessage(short type, HandshakeMessageInput buf)
11511151
}
11521152
}
11531153

1154-
byte[] serverKeyExchange = this.keyExchange.generateServerKeyExchange();
1154+
byte[] serverKeyExchange = keyExchange.generateServerKeyExchange();
11551155
if (serverKeyExchange != null)
11561156
{
11571157
sendServerKeyExchangeMessage(serverKeyExchange);
@@ -1181,7 +1181,7 @@ protected void handleHandshakeMessage(short type, HandshakeMessageInput buf)
11811181
throw new TlsFatalAlert(AlertDescription.internal_error);
11821182
}
11831183

1184-
this.certificateRequest = TlsUtils.validateCertificateRequest(this.certificateRequest, this.keyExchange);
1184+
this.certificateRequest = TlsUtils.validateCertificateRequest(certificateRequest, keyExchange);
11851185

11861186
TlsUtils.establishServerSigAlgs(securityParameters, certificateRequest);
11871187

@@ -1270,7 +1270,7 @@ protected void handleHandshakeMessage(short type, HandshakeMessageInput buf)
12701270
{
12711271
if (null == certificateRequest)
12721272
{
1273-
this.keyExchange.skipClientCredentials();
1273+
keyExchange.skipClientCredentials();
12741274
}
12751275
else if (TlsUtils.isTLSv12(tlsServerContext))
12761276
{
@@ -1536,6 +1536,8 @@ protected void receiveClientKeyExchangeMessage(ByteArrayInputStream buf)
15361536
establishMasterSecret(tlsServerContext, keyExchange);
15371537
}
15381538

1539+
this.keyExchange = null;
1540+
15391541
recordStream.setPendingCipher(TlsUtils.initCipher(tlsServerContext));
15401542

15411543
if (!expectCertificateVerifyMessage())

0 commit comments

Comments
 (0)