> This change implements behavior required by the specification Post-quantum > hybrid ECDHE-MLKEM Key Agreement for TLSv1.3. The specification defines > several validation checks during the hybrid key exchange that require > aborting the connection with either an illegal_parameter alert or an > internal_error alert. > > In 4.2. Server share section specifies the following checks: > For all groups, the server MUST perform the encapsulation key check described > in Section 7.2 of [NIST-FIPS-203] on the client’s encapsulation key, and > abort with an illegal_parameter alert if it fails. > > For all groups, the client MUST check if the ciphertext length matches the > selected group, and abort with an illegal_parameter alert if it fails. If > ML-KEM decapsulation fails for any other reason, the connection MUST be > aborted with an internal_error alert. > > For all groups, both client and server MUST process the ECDH part as > described in Section 4.2.8.2 of [RFC8446], including all validity checks, and > abort with an illegal_parameter alert if it fails. > > In 4.3. Shared secret section specifies the following check: > For all groups, both client and server MUST calculate the ECDH part of the > shared secret as described in Section 7.4.2 of [RFC8446], including the > all-zero shared secret check for X25519, and abort the connection with an > illegal_parameter alert if it fails. > > This implementation propagates exceptions raised during ECDH and ML-KEM > operations in client and server sides from the Hybrid and DHasKEM classes > (which implement KEMSpi) to the TLS handshake layer, where they are mapped to > the corresponding TLS fatal alerts.
Hai-May Chao has updated the pull request incrementally with one additional commit since the last revision: Update with Mikhail's comment ------------- Changes: - all: https://git.openjdk.org/jdk/pull/30039/files - new: https://git.openjdk.org/jdk/pull/30039/files/d084602e..2d9bf42b Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=30039&range=01 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=30039&range=00-01 Stats: 9 lines in 1 file changed: 0 ins; 5 del; 4 mod Patch: https://git.openjdk.org/jdk/pull/30039.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/30039/head:pull/30039 PR: https://git.openjdk.org/jdk/pull/30039
