RFR[8u252] - MR3 - ALPN & RSASSA-PSS in Java SE 8

Bradford Wetmore bradford.wetmore at oracle.com
Sat Feb 8 00:10:53 UTC 2020


On 2/5/2020 9:40 PM, Andrew John Hughes wrote:> First of all, thanks 
again for posting these patches and also for the
 > comprehensive list of issues for both of them. They pretty much matched
 > up with what I saw when reviewing the patches

Great.

 > The ALPN one looks pretty clean. My only concern there is the use of
 > "@since 8". Should this not be a reference to the maintenance release,
 > as these methods were not part of 8 at GA? Same applies to the usage in
 > the second patch too.

I originally had this as "@since 8 MR 3" but during internal review it 
was requested to use @since 8 instead.  This is what was presented/voted 
during the MR phase.

 > With the RSA-PSS patch, it's hard to tell what's going on with the
 > MSCAPI code, because they appear as new files in the patch. Why was it
 > necessary to bring in JDK-8213009? I don't see an obvious reason for
 > this.

JDK-8213009 was mainly a refactor of the MSCAPI code to enhance the code 
layout, and to a lesser degree to better support Windows-native PSS 
calls using CNG (MS Windows Crypto Next Generation).  The SunMSCAPI 
provider is a mix of mostly CAPI (Windows Crypto API) and a few CNG 
calls when CAPI couldn't support everything needed.

The SunMSCAPI changes that followed would take significant effort to 
extricate these reorganization changes when backporting later changes 
(e.g. jdk/jdk).  We could have forward ported/merged the 8u41 code into 
OpenJDK 8, but unfortunately I haven't been given a lot of cycles for 
OpenJDK code.

 > dependency of 8213010, but again, it's not obvious why that's required
 > here either. Some more details on why some of the less obvious bugs are
 > required would be helpful here.

Ok, I've added details to a comment in JDK-8230978.

 > If the refactoring is necessary, a
 > Git-style patch which shows the moves as renames (hg diff -g) would
 > help, so we can see what is actually being changed in these files.

I'm a bit confused, isn't the webrev already showing this:

http://cr.openjdk.java.net/~wetmore/MR3-codereview-8u252/PSS/webrev.01/
---begin---

...deleted...

*    src/windows/classes/sun/security/mscapi/CKey.java* /(was 
src/windows/classes/sun/security/mscapi/Key.java)/

///138 lines changed: 54 ins; 64 del; 20 mod; 81 unchg/

...deleted...

*    src/windows/classes/sun/security/mscapi/CSignature.java /(was 
src/windows/classes/sun/security/mscapi/RSASignature.java)/

///676 lines changed: 507 ins; 77 del; 92 mod; 355 unchg/
---end---

Looking at the index.html and subsequent "Frame" for this file, I can 
see both the rename and the old/new code side-by-side.

 > As you say, the RSA-PSS patch brings in truncated MessageDigests which
 > are part of "8051408: NIST SP 800-90A SecureRandom implementations". It
 > would be good if the summary field could be used to say "Contains
 > truncated MessageDigests from JDK-8051408", so that it then shows up if
 > someone is considering 8051408 at a later date

There are several comments to make which won't fit in the summary field 
which is supposed to only be one short line [0].

Instead, I have added several items into the comment for JDK-8230978, 
which is the main umbrella bug for the PSS work, and I will add:

     Summary: See comment in JDK-8230978 for details in Oracle JDK 8u 
and OpenJDK 8u

to the changeset, which currently reads:

---begin---
8230978: Add support for RSASSA-PSS Signature algorithm (Java SE 8)
8175029: StackOverflowError in X509CRL and 
X509Certificate.verify(PublicKey, Provider)
8146293: Add support for RSASSA-PSS Signature algorithm
8205445: Add RSASSA-PSS Signature support to SunMSCAPI
8205720: KeyFactory#getKeySpec and translateKey throws 
NullPointerException with Invalid key
8206171: Signature#getParameters for RSASSA-PSS throws ProviderException 
when not initialized
8213009: Refactoring existing SunMSCAPI classes
8213010: Supporting keys created with certmgr.exe
8214096: sun.security.util.SignatureUtil passes null parameter, so JCE 
validation fails
8215694: keytool cannot generate RSASSA-PSS certificates
8221407: Windows 32bit build error in libsunmscapi/security.cpp
8216039: TLS with BC and RSASSA-PSS breaks ECDHServerKeyExchange
8223003: SunMSCAPI keys are not cleaned up
8223063: Support CNG RSA keys
8225745: NoSuchAlgorithmException exception for SHA256withECDSA with 
RSASSA-PSS support
8225180: SignedObject with invalid Key not throwing the 
InvalidKeyException in Windows
8236470: Deal with ECDSA using ecdsa-with-SHA2 plus hash algorithm as 
AlgorithmId
8238502: sunmscapi.dll causing EXCEPTION_ACCESS_VIOLATION
Summary: See comment in JDK-8230978 for details in Oracle JDK 8u and 
OpenJDK 8u
Reviewed-by: valeriep, weijun, coffeys, pkoppula
---end---

Did you want me to add you as a reviewer?

 > Otherwise, looks good.
 >
 > Thanks,

Thanks,

Brad

[0] https://openjdk.java.net/guide/producingChangeset.html


More information about the security-dev mailing list