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

Bradford Wetmore bradford.wetmore at oracle.com
Thu Feb 13 22:32:23 UTC 2020

On 2/12/2020 3:10 PM, Andrew John Hughes wrote:

>> 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.
> Ah ok. I personally think the original MR 3 version would have been
> better,

I personally agree with you.

> but I guess we're stuck with this then.
 >>> JDK-8213009 was mainly a refactor of the MSCAPI code to enhance the 
>> 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.
> Ok. Backporting 8213009 to make future backports easier is the route I
> would prefer anyway (and we've done similar in other cases). It's just
> hard to tell the motivation with everything in one patch.

Agreed, thanks.

>>> 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.
> Thanks for this detailed list. It's very helpful.


>>> 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.
> I wasn't looking at the web pages, but just at the patch file
> (https://cr.openjdk.java.net/~wetmore/MR3-codereview-8u252/PSS/webrev.01/jdk.patch)
> and comparing with the changesets from 11u.

I'm a hardcore webrev/frames guys, so I wouldn't have thought to closely 
look for this.

I believe I've discovered a "bug" in webrev when specifying specific 
revisions.  I use Mercurial Queues to handle my patches.  With these 

     r1 = current tip
     r2 = ALPN patch applied
     r3 = PSS patch applied

If I have applied ALPN + PSS and I use:

     % webrev -r r2 -o webrev

to generate the PSS-only changes, I don't get the git headers.  If I 
don't specify -r, it defaults to r1 (current tip):

     % webrev -o webrev

Then I do see the git changes, but unfortunately both ALPN+PSS show up 
in a unified webrev.

>> ---begin---
>> 8230978: Add support for RSASSA-PSS Signature algorithm (Java SE 8)
>> ...deleted...
>> 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---
> I'd still prefer it was something like:
> Summary: Contains elements of JDK-8051408 (see comments on JDK-8230978)
> the reason for this being that this changeset will then show up if
> someone searches the repository for 8051408, but won't trigger the
> database to create a backport issue for it.


>> Did you want me to add you as a reviewer?
> Please.



More information about the security-dev mailing list