Skip to content

Commit 98d81fc

Browse files
committed
Merge branch 'main' of gitlab.cryptoworkshop.com:root/bc-java
2 parents c7567ff + 6097233 commit 98d81fc

20 files changed

+46
-27
lines changed

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

Lines changed: 22 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -484,22 +484,34 @@ protected void handleHandshakeMessage(short type, HandshakeMessageInput buf)
484484
{
485485
process13HelloRetryRequest(serverHello);
486486
handshakeHash.notifyPRFDetermined();
487-
handshakeHash.sealHashAlgorithms();
487+
488488
TlsUtils.adjustTranscriptForRetry(handshakeHash);
489+
489490
buf.updateHash(handshakeHash);
490491
this.connection_state = CS_SERVER_HELLO_RETRY_REQUEST;
491492

492493
send13ClientHelloRetry();
493494
this.connection_state = CS_CLIENT_HELLO_RETRY;
495+
496+
/*
497+
* PSK binders (if any) when retrying ClientHello currently require handshakeHash buffering
498+
*/
499+
handshakeHash.sealHashAlgorithms();
494500
}
495501
else
496502
{
497503
processServerHello(serverHello);
498504
handshakeHash.notifyPRFDetermined();
505+
499506
if (TlsUtils.isTLSv13(securityParameters.getNegotiatedVersion()))
500507
{
501508
handshakeHash.sealHashAlgorithms();
502509
}
510+
else
511+
{
512+
// For pre-1.3 wait until ServerHelloDone is received
513+
}
514+
503515
buf.updateHash(handshakeHash);
504516
this.connection_state = CS_SERVER_HELLO;
505517

@@ -902,15 +914,15 @@ protected void process13HelloRetryRequest(ServerHello helloRetryRequest)
902914
}
903915
}
904916

905-
final int selected_group = TlsExtensionsUtils.getKeyShareHelloRetryRequest(extensions);
917+
final int selectedGroup = TlsExtensionsUtils.getKeyShareHelloRetryRequest(extensions);
906918

907919
/*
908920
* TODO[tls:psk_ke]
909921
*
910922
* RFC 8446 4.2.8. Servers [..] MUST NOT send a KeyShareEntry when using the "psk_ke"
911923
* PskKeyExchangeMode.
912924
*/
913-
if (selected_group < 0)
925+
if (selectedGroup < 0)
914926
{
915927
throw new TlsFatalAlert(AlertDescription.missing_extension,
916928
"missing extension response: " + ExtensionType.getText(ExtensionType.key_share));
@@ -925,7 +937,7 @@ protected void process13HelloRetryRequest(ServerHello helloRetryRequest)
925937
* MUST abort the handshake with an "illegal_parameter" alert.
926938
*/
927939
if (!TlsUtils.isValidKeyShareSelection(server_version, securityParameters.getClientSupportedGroups(),
928-
clientAgreements, selected_group))
940+
clientAgreements, selectedGroup))
929941
{
930942
throw new TlsFatalAlert(AlertDescription.illegal_parameter, "invalid key_share selected");
931943
}
@@ -946,7 +958,7 @@ protected void process13HelloRetryRequest(ServerHello helloRetryRequest)
946958

947959
this.clientAgreements = null;
948960
this.retryCookie = cookie;
949-
this.retryGroup = selected_group;
961+
this.retryGroup = selectedGroup;
950962
}
951963

952964
protected void process13ServerHello(ServerHello serverHello, boolean afterHelloRetryRequest)
@@ -1051,8 +1063,8 @@ protected void process13ServerHello(ServerHello serverHello, boolean afterHelloR
10511063

10521064
TlsSecret sharedSecret = null;
10531065
{
1054-
KeyShareEntry keyShareEntry = TlsExtensionsUtils.getKeyShareServerHello(extensions);
1055-
if (null == keyShareEntry)
1066+
KeyShareEntry serverShare = TlsExtensionsUtils.getKeyShareServerHello(extensions);
1067+
if (null == serverShare)
10561068
{
10571069
if (afterHelloRetryRequest
10581070
|| null == pskEarlySecret
@@ -1069,14 +1081,15 @@ protected void process13ServerHello(ServerHello serverHello, boolean afterHelloR
10691081
throw new TlsFatalAlert(AlertDescription.illegal_parameter);
10701082
}
10711083

1072-
int namedGroup = keyShareEntry.getNamedGroup();
1084+
int namedGroup = serverShare.getNamedGroup();
1085+
10731086
TlsAgreement agreement = (TlsAgreement)clientAgreements.get(Integers.valueOf(namedGroup));
10741087
if (null == agreement)
10751088
{
10761089
throw new TlsFatalAlert(AlertDescription.illegal_parameter);
10771090
}
10781091

1079-
agreement.receivePeerValue(keyShareEntry.getKeyExchange());
1092+
agreement.receivePeerValue(serverShare.getKeyExchange());
10801093
sharedSecret = agreement.calculateSecret();
10811094
}
10821095
}

tls/src/test/java/org/bouncycastle/tls/test/LoggingDatagramTransport.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
public class LoggingDatagramTransport
1010
implements DatagramTransport
1111
{
12+
private static final boolean ENABLE_DUMPS = false;
1213

1314
private static final String HEX_CHARS = "0123456789ABCDEF";
1415

@@ -62,6 +63,11 @@ public void close()
6263
private void dumpDatagram(String verb, byte[] buf, int off, int len)
6364
throws IOException
6465
{
66+
if (!ENABLE_DUMPS)
67+
{
68+
return;
69+
}
70+
6571
long timestamp = System.currentTimeMillis() - launchTimestamp;
6672
StringBuffer sb = new StringBuffer("(+" + timestamp + "ms) " + verb + " " + len + " byte datagram:");
6773
for (int pos = 0; pos < len; ++pos)

tls/src/test/java/org/bouncycastle/tls/test/MockDTLSClient.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ public void notifyServerVersion(ProtocolVersion serverVersion) throws IOExceptio
8080
{
8181
super.notifyServerVersion(serverVersion);
8282

83-
System.out.println("DTLS client negotiated " + serverVersion);
83+
System.out.println("DTLS client negotiated version " + serverVersion);
8484
}
8585

8686
public TlsAuthentication getAuthentication() throws IOException

tls/src/test/java/org/bouncycastle/tls/test/MockDTLSServer.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ public ProtocolVersion getServerVersion() throws IOException
6464
{
6565
ProtocolVersion serverVersion = super.getServerVersion();
6666

67-
System.out.println("DTLS server negotiated " + serverVersion);
67+
System.out.println("DTLS server negotiated version " + serverVersion);
6868

6969
return serverVersion;
7070
}

tls/src/test/java/org/bouncycastle/tls/test/MockPSKDTLSClient.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ public void notifyServerVersion(ProtocolVersion serverVersion) throws IOExceptio
8888
{
8989
super.notifyServerVersion(serverVersion);
9090

91-
System.out.println("DTLS-PSK client negotiated " + serverVersion);
91+
System.out.println("DTLS-PSK client negotiated version " + serverVersion);
9292
}
9393

9494
public TlsAuthentication getAuthentication() throws IOException

tls/src/test/java/org/bouncycastle/tls/test/MockPSKDTLSServer.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ public ProtocolVersion getServerVersion() throws IOException
6666
{
6767
ProtocolVersion serverVersion = super.getServerVersion();
6868

69-
System.out.println("DTLS-PSK server negotiated " + serverVersion);
69+
System.out.println("DTLS-PSK server negotiated version " + serverVersion);
7070

7171
return serverVersion;
7272
}

tls/src/test/java/org/bouncycastle/tls/test/MockPSKTls13Client.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ public void notifyServerVersion(ProtocolVersion serverVersion) throws IOExceptio
109109
{
110110
super.notifyServerVersion(serverVersion);
111111

112-
System.out.println("TLS 1.3 PSK client negotiated " + serverVersion);
112+
System.out.println("TLS 1.3 PSK client negotiated version " + serverVersion);
113113
}
114114

115115
public TlsAuthentication getAuthentication() throws IOException

tls/src/test/java/org/bouncycastle/tls/test/MockPSKTls13Server.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ public ProtocolVersion getServerVersion() throws IOException
6868
{
6969
ProtocolVersion serverVersion = super.getServerVersion();
7070

71-
System.out.println("TLS 1.3 PSK server negotiated " + serverVersion);
71+
System.out.println("TLS 1.3 PSK server negotiated version " + serverVersion);
7272

7373
return serverVersion;
7474
}

tls/src/test/java/org/bouncycastle/tls/test/MockPSKTlsClient.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ public void notifyServerVersion(ProtocolVersion serverVersion) throws IOExceptio
108108
{
109109
super.notifyServerVersion(serverVersion);
110110

111-
System.out.println("TLS-PSK client negotiated " + serverVersion);
111+
System.out.println("TLS-PSK client negotiated version " + serverVersion);
112112
}
113113

114114
public TlsAuthentication getAuthentication() throws IOException

tls/src/test/java/org/bouncycastle/tls/test/MockPSKTlsServer.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ public ProtocolVersion getServerVersion() throws IOException
6565
{
6666
ProtocolVersion serverVersion = super.getServerVersion();
6767

68-
System.out.println("TLS-PSK server negotiated " + serverVersion);
68+
System.out.println("TLS-PSK server negotiated version " + serverVersion);
6969

7070
return serverVersion;
7171
}

0 commit comments

Comments
 (0)