RFR: 8341346: Add support for exporting TLS Keying Material [v7]

Weijun Wang weijun at openjdk.org
Wed May 7 16:24:25 UTC 2025


On Wed, 7 May 2025 05:47:30 GMT, Bradford Wetmore <wetmore at openjdk.org> wrote:

>> Adds the RFC 5705/8446 TLS Key Exporters API/implementation to JSSE/SunJSSE respectively.
>> 
>> CSR is underway.
>> 
>> Tests include new unit tests for TLSv1-1.3.  Will run tier1-2, plus the JCK API (jck:api/java_security jck:api/javax_crypto jck:api/javax_net jck:api/javax_security jck:api/org_ietf jck:api/javax_xml/crypto)
>
> Bradford Wetmore has updated the pull request incrementally with one additional commit since the last revision:
> 
>   Updated to use the upcoming KDF (still in preview) + bits of JDK-8353578 for compilation)

src/java.base/share/classes/javax/net/ssl/ExtendedSSLSession.java line 169:

> 167: 
> 168:     /**
> 169:      * Generate Exported Key Material (EKM) calculated according to the

s/Key/Keying/

src/java.base/share/classes/sun/security/ssl/SSLSessionImpl.java line 1808:

> 1806:             String label, byte[] context, int length) throws SSLKeyException {
> 1807:         byte[] bytes =
> 1808:                 exportKeyingMaterialKey(label, context, length).getEncoded();

In PKCS #11, calling `deriveKey(...).getEncoded()` is not equivalent to `deriveData()`. It's quite likely that `deriveKey` returns an un-extractable key, but `deriveData` using the exact same input returns the keying material.

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

PR Review Comment: https://git.openjdk.org/jdk/pull/24976#discussion_r2078023812
PR Review Comment: https://git.openjdk.org/jdk/pull/24976#discussion_r2078022859


More information about the security-dev mailing list