Hello,

I’m currently working on updating an LDAP directory server with support for
quantum-resistant encryption. This includes support for TLS-secured
connections, and I see that via JEP 527, JDK 27 includes support for some
quantum-resistant hybrid key exchange algorithms. And because
X25519MLKEM768 is being set as the highest-priority curve group, this is a
feature that should basically come for free when communicating with peers
that support that curve group.

However, I can’t seem to find any method that can be used to determine
which curve group was actually selected for a connection during the TLS
negotiation process. This information doesn’t seem to be available in
SSLSession, or anywhere else that I can find. When I run a test client with
-Djavax.net.debug=all, I can see the “named_group” field in the debug
output for the ServerHello message, but there just doesn’t seem to be any
way to gain programmatic access to that.

I think that it’s essential to be able to obtain the negotiated curve group
programmatically to be able to verify whether a given TLS session is
protected with quantum-resistant encryption. I’d like to be able to log
this along with other details like the negotiated TLS protocol and cipher
suite, and potentially to even be able to use this information to make
access control decisions, like only returning certain sensitive information
to clients if I can confirm if the communication has been secured with
quantum-resistant encryption.

Would it be possible to get a method like SSLSession.getNamedGroup() to be
able to determine which named group was selected in the course of
negotiating the session?

Thanks!

Neil Wilson

Reply via email to