On Thu, 19 Nov 2020 17:48:34 GMT, Jamil Nimeh <[email protected]> wrote:
>> Hello all,
>> This change brings in support for certificates with EdDSA keys (both Ed25519
>> and Ed448) allowing those signature algorithms to be used both on the
>> certificates themselves and used during the handshaking process for messages
>> like CertificateVerify, ServerKeyExchange and so forth.
>
> Jamil Nimeh has updated the pull request with a new target base due to a
> merge or a rebase. The incremental webrev excludes the unrelated changes
> brought in by the merge/rebase. The pull request contains seven additional
> commits since the last revision:
>
> - Update test to account for JDK-8202343 fix
> - Merge
> - Merge
> - Applied code review comments to tests
> - Fix cut/paste error with ECDH-RSA key exchange
> - Merge
> - Initial EdDSA/TLS solution
src/java.base/share/classes/sun/security/ssl/CertificateRequest.java line 83:
> 81: ECDSA_SIGN ((byte)0x40, "ecdsa_sign",
> 82: List.of("EC", "EdDSA"),
> 83: JsseJce.isEcAvailable()),
Would you like to add RFC 8422 to the comment line as well?
src/java.base/share/classes/sun/security/ssl/JsseJce.java line 97:
> 95: */
> 96: static final String SIGNATURE_EDDSA = "EdDSA";
> 97:
Please update the copyright year.
Is it possible that "ed25519" or "ed448" is used as the signature algorithm,
especially in the X.509 certificate implementation?
src/java.base/share/classes/sun/security/ssl/SignatureScheme.java line 73:
> 71: ED448 (0x0808, "ed448", "Ed448",
> 72: "EdDSA",
> 73: ProtocolVersion.PROTOCOLS_12_13),
You may also want to check if EdDSA is available in the following block:
- 282 if ("EC".equals(keyAlgorithm)) {
+ 282 if ("EC".equals(keyAlgorithm) || "EdDSA"... ) {
283 mediator = JsseJce.isEcAvailable();
284 }
src/java.base/share/classes/sun/security/ssl/SSLKeyExchange.java line 48:
> 46: if (authentication != null) {
> 47: this.authentication = new ArrayList<>();
> 48: this.authentication.addAll(authentication);
I may use an immutable list, for example List.copyOf(authentication).
src/java.base/share/classes/sun/security/ssl/SSLKeyExchange.java line 134:
> 132: SSLAuthentication authType = li.next();
> 133: auHandshakes =
> authType.getRelatedHandshakers(handshakeContext);
> 134: }
I guess for-each loop could be a little bit more lightweight.
src/java.base/share/classes/sun/security/ssl/SSLKeyExchange.java line 163:
> 161: SSLAuthentication authType = li.next();
> 162: auProducers =
> authType.getHandshakeProducers(handshakeContext);
> 163: }
Use for-each?
-------------
PR: https://git.openjdk.java.net/jdk/pull/1197