Code Review Request: TLS 1.3 Implementation

Xuelei Fan xuelei.fan at oracle.com
Tue Jun 12 01:36:12 UTC 2018



On 6/11/2018 5:56 PM, Bradford Wetmore wrote:
<...skipped...>
>>>> 262:  What is the point of the aliases argument in the constructor? 
>>>> Was the idea to provide a mapping between suites we originally 
>>>> created with the SSL_ prefix vs the more current TLS_ prefix we used 
>>>> in the later TLS protocols?  There is only an empty string in every 
>>>> constructor, so this code doesn't do anything.
>>>>
>> Added the aliases.
> 
> Great, thanks.  Once minor formatting comment which would help 
> comparability/readability.  Take or leave it.
> 
>      SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA(
>              0x0016, true, "SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA",
>              "TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA",
>              ProtocolVersion.PROTOCOLS_TO_12,
>              K_DHE_RSA, B_3DES, M_SHA, H_SHA256),
> ->
>      SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA(
>              0x0016, true, "SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA",
>                            "TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA",
>              ProtocolVersion.PROTOCOLS_TO_12,
>              K_DHE_RSA, B_3DES, M_SHA, H_SHA256),
> 
It looks really nice, and I will take it.  Updated in my local 
workspace, will push later in my next changeset.

<...skipped...>
>>>> 840:  Is this else/break needed?
>>>>
>> Yes.  It is mostly for performance by ignoring unsupported cipher 
>> suites look up.
> 
> Ah, because they are coming out of .values() ordered, and the 
> unsupported are at the end.  Can you change the comment:
> 
> the following cipher suites are not supported.
> ->
> values() is ordered, remaining cipher suites are not supported.
> 
Updated.

> 
>>>> SSLServerSocketImpl.java
>>>> ------------------------
>>>> 160:  You should allow multiple changes between server to client, 
>>>> and switch enabled protocols/ciphersuites accordingly.
>>>>
>> Yes, multiple changes are allowed.
> 
> I didn't see a change here.  If you go from server (default) to client, 
> and then back again, shouldn't you reset to the original server values? 
> And set sslConfig.useClientMode()
> 
> e.g.
>      sslServerSocket.setUseClientMode(true);
>      sslServerSocket.setUseClientMode(false);
> 
> The current code won't change back to server.
> 
I may miss something.  I think, it is able to change back.

sslServerSocket.setUseClientMode(true) ->
   if it is server mode, set to use client mode; and if using default 
protocols, set to use client default protocols; if using default cipher 
suites, set to use client default cipher suites.  sslConfig is set to 
use client mode.

sslServerSocket.setUseClientMode(false);
   if it is client mode, set to use server mode; and id using default 
protocols, set to use server default protocols; if using default cipher 
suites, set to use server default cipher suites.  sslConfig is set to 
use server mode.

Thanks,
Xuelei



More information about the security-dev mailing list