On Fri, 20 Sep 2024 21:35:53 GMT, Artur Barashev <d...@openjdk.org> wrote:

>> https://bugs.openjdk.org/browse/JDK-8331682
>
> Artur Barashev has updated the pull request incrementally with one additional 
> commit since the last revision:
> 
>   - Switch server to use plaintext after getting the unexpected plaintext 
> alert message during TLSv1.3 handshake
>   - Always send user_cancelled alert before close_notify alert during 
> handshake. This is actually a different issue which was discovered during 
> this fix.
>   - Update tests accordingly

I don't think we should worry too much about the server->client direction. If 
the client cancels the handshake, I don't expect it to handle the delayed DHE 
in ServerHello, which would be necessary to process the remainder of the server 
flight.

src/java.base/share/classes/sun/security/ssl/SSLTransport.java line 151:

> 149: 
> 150:                     // Switch server to use plaintext.
> 151:                     
> context.handshakeContext.conContext.outputRecord.changeWriteCiphers(

now this is plain wrong. Please revert. It won't help once you fix the test 
case, see my comments there.

test/jdk/javax/net/ssl/TLSv13/SSLEngineNoServerHelloClientShutdown.java line 
166:

> 164:         logEngineStatus(serverEngine, serverResult);
> 165:         runDelegatedTasks(serverEngine);
> 166:         sTOc.clear();  // SH packet went missing.  Timeout on Client.

As I mentioned, TLS runs on top of TCP. Data might be truncated, but may never 
be received out of order To simulate this, you should never use `clear`, you 
can only use an alternating sequence of `flip` and `compact`.
Please remove this line.

test/jdk/javax/net/ssl/TLSv13/SSLEngineNoServerHelloClientShutdown.java line 
174:

> 172:         logEngineStatus(serverEngine, serverResult);
> 173:         runDelegatedTasks(serverEngine);
> 174:         sTOc.clear();  // CCS packet went missing.  Timeout on Client.

remove this line too

test/jdk/javax/net/ssl/TLSv13/SSLEngineNoServerHelloClientShutdown.java line 
182:

> 180:         logEngineStatus(serverEngine, serverResult);
> 181:         runDelegatedTasks(serverEngine);
> 182:         sTOc.clear();  // EE/etc. packet went missing.  Timeout on 
> Client.

remove this line too

test/jdk/javax/net/ssl/TLSv13/SSLEngineNoServerHelloClientShutdown.java line 
202:

> 200:         runDelegatedTasks(serverEngine);
> 201: 
> 202:         cTOs.clear();

replace with cTOs.compact()

test/jdk/javax/net/ssl/TLSv13/SSLEngineNoServerHelloClientShutdown.java line 
235:

> 233:         runDelegatedTasks(clientEngine);
> 234: 
> 235:         sTOc.clear();

replace with sTOc.compact()

-------------

PR Review: https://git.openjdk.org/jdk/pull/21043#pullrequestreview-2319660975
PR Review Comment: https://git.openjdk.org/jdk/pull/21043#discussion_r1769483330
PR Review Comment: https://git.openjdk.org/jdk/pull/21043#discussion_r1769483458
PR Review Comment: https://git.openjdk.org/jdk/pull/21043#discussion_r1769483511
PR Review Comment: https://git.openjdk.org/jdk/pull/21043#discussion_r1769483537
PR Review Comment: https://git.openjdk.org/jdk/pull/21043#discussion_r1769483598
PR Review Comment: https://git.openjdk.org/jdk/pull/21043#discussion_r1769483652

Reply via email to