@@ -1142,6 +1142,11 @@ protected void processServerHello(ServerHello serverHello)
11421142 server_version = supported_version ;
11431143 }
11441144
1145+ if (!ProtocolVersion .contains (tlsClientContext .getClientSupportedVersions (), server_version ))
1146+ {
1147+ throw new TlsFatalAlert (AlertDescription .protocol_version );
1148+ }
1149+
11451150 final SecurityParameters securityParameters = tlsClientContext .getSecurityParametersHandshake ();
11461151
11471152 if (securityParameters .isRenegotiating ())
@@ -1154,11 +1159,6 @@ protected void processServerHello(ServerHello serverHello)
11541159 }
11551160 else
11561161 {
1157- if (!ProtocolVersion .contains (tlsClientContext .getClientSupportedVersions (), server_version ))
1158- {
1159- throw new TlsFatalAlert (AlertDescription .protocol_version );
1160- }
1161-
11621162 ProtocolVersion legacy_record_version = server_version .isLaterVersionOf (ProtocolVersion .TLSv12 )
11631163 ? ProtocolVersion .TLSv12
11641164 : server_version ;
@@ -1764,21 +1764,10 @@ protected void sendClientHello()
17641764 {
17651765 SecurityParameters securityParameters = tlsClientContext .getSecurityParametersHandshake ();
17661766
1767- ProtocolVersion [] supportedVersions ;
1768- ProtocolVersion earliestVersion , latestVersion ;
1767+ ProtocolVersion [] supportedVersions = tlsClient .getProtocolVersions ();
17691768
1770- if (securityParameters .isRenegotiating ())
1771- {
1772- ProtocolVersion clientVersion = tlsClientContext .getClientVersion ();
1773-
1774- supportedVersions = clientVersion .only ();
1775- earliestVersion = clientVersion ;
1776- latestVersion = clientVersion ;
1777- }
1778- else
1769+ if (!securityParameters .isRenegotiating ())
17791770 {
1780- supportedVersions = tlsClient .getProtocolVersions ();
1781-
17821771 if (ProtocolVersion .contains (supportedVersions , ProtocolVersion .SSLv3 ))
17831772 {
17841773 // TODO[tls13] Prevent offering SSLv3 AND TLSv13?
@@ -1788,18 +1777,17 @@ protected void sendClientHello()
17881777 {
17891778 recordStream .setWriteVersion (ProtocolVersion .TLSv10 );
17901779 }
1780+ }
17911781
1792- earliestVersion = ProtocolVersion .getEarliestTLS (supportedVersions );
1793- latestVersion = ProtocolVersion .getLatestTLS (supportedVersions );
1794-
1795- if (!ProtocolVersion .isSupportedTLSVersionClient (latestVersion ))
1796- {
1797- throw new TlsFatalAlert (AlertDescription .internal_error );
1798- }
1782+ ProtocolVersion earliestVersion = ProtocolVersion .getEarliestTLS (supportedVersions );
1783+ ProtocolVersion latestVersion = ProtocolVersion .getLatestTLS (supportedVersions );
17991784
1800- tlsClientContext .setClientVersion (latestVersion );
1785+ if (!ProtocolVersion .isSupportedTLSVersionClient (latestVersion ))
1786+ {
1787+ throw new TlsFatalAlert (AlertDescription .internal_error );
18011788 }
1802-
1789+
1790+ tlsClientContext .setClientVersion (latestVersion );
18031791 tlsClientContext .setClientSupportedVersions (supportedVersions );
18041792
18051793 final boolean offeringTLSv12Minus = ProtocolVersion .TLSv12 .isEqualOrLaterVersionOf (earliestVersion );
0 commit comments