RFR: 8326381: com.sun.net.httpserver.HttpsParameters and SSLStreams incorrectly handle needClientAuth and wantClientAuth [v5]
John Jiang
jjiang at openjdk.org
Fri Feb 23 03:11:53 UTC 2024
On Fri, 23 Feb 2024 02:05:09 GMT, Jaikiran Pai <jpai at openjdk.org> wrote:
>> Can I please get a review of this change which proposes to fix https://bugs.openjdk.org/browse/JDK-8326381?
>>
>> As noted in the JBS issue, the implementation in `setNeedClientAuth()` and `setWantClientAuth()` of `com.sun.net.httpserver.HttpsParameters` wasn't matching the API specification. The commit in this PR fixes that issue and it now matches the API specification as well as what is done in `javax.net.ssl.SSLParameters` class.
>>
>> Additionally, as noted in the JBS issue, the (internal class) `sun.net.httpserver.SSLStreams` had a bug where it could end up resetting the `needClientAuth` flag on the `SSLEngine` because of the way the `setNeedClientAuth()` and `setWantClientAuth()` methods were being called on the `SSLEngine`. This too has been fixed in this PR.
>>
>> A new jtreg test has been introduced to reproduce the issue in the `HttpsParameters` class and verify this fix.
>
> Jaikiran Pai has updated the pull request incrementally with one additional commit since the last revision:
>
> undo changes to SimpleSSLContext in test library
test/jdk/com/sun/net/httpserver/HttpsParametersClientAuthTest.java line 114:
> 112: needClientAuthParams.setWantClientAuth(initialWantClientAuth);
> 113: // needClientAuth = true and thus wantClientAuth = false
> 114: needClientAuthParams.setNeedClientAuth(true);
I just want to clarify that these new cases look not suggested by my previous comment.
In my suggested cases, as shown as the below,
setNeedClientAuth(true);
setWantClientAuth(false);
setWantClientAuth(true);
setNeedClientAuth(false);
this first setting takes a state (`needClientAuth` or `wantClientAuth`) to `true`, and the second setting takes both states to `false`.
Before this fix, the second setting doesn't reset the `true` state specified by the first setting to `false`.
Of course, if you think it's unnecessary to cover these corner cases, please feel free to ignore them.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/17940#discussion_r1500171456
More information about the net-dev
mailing list