JDK-8233418 : Add support for RSASSA-PSS Signature algorithm (Java SE 8)
  • Type: CSR
  • Component: security-libs
  • Sub-Component: java.security
  • Priority: P2
  • Status: Closed
  • Resolution: Approved
  • Fix Versions: 8u41
  • Submitted: 2019-11-01
  • Updated: 2022-04-21
  • Resolved: 2019-11-14
Related Reports
CSR :  
Relates :  
Description
Summary
-------

Add support for RSASSA-PSS Signature algorithm in Java SE 8.

Problem
-------

PKCS#1 v2.2 (RFC 8017) provides recommendations for the implementation of public-key cryptography based on the RSA algorithm [RSA].

Existing Java SE security APIs and JDK crypto providers support most but not all algorithms in PKCS#1 and need to be updated to support PKCS#1 v2.2.

To preserve compatibility with newer platform releases, the Java SE 11 RSASSA-PSS APIs will be backported to Java SE 8.


Solution
--------

1.  Update all PKCS#1 v2.1 references with the PKCS#1 v2.2 standard and
    its ASN.1 syntax
2.  Enhance existing RSA-related classes for supporting RSASSA-PSS keys
    which may contain parameters
3.  Add RSASSA-PSS (Probabilistic Signature Scheme) implementation
    support to SunRsaSign provider
4.  Add the support of SHA-512/224 and SHA-512/256 digests.
5.  Add the support of SHA-512/224 and SHA-512/256 digests to the
    OAEPPadding impl of RSA Cipher implementation in SunJCE provider

There are 2 API bugs to be backported:

APIs:

JDK-8146293: Add support for RSASSA-PSS Signature algorithm

JDK-8206171: Signature#getParameters for RSASSA-PSS throws ProviderException when not initialized


Specification
-------------

See the attached webrev for full details.  I am including all non-trivial changes to the API files, which include:

1.  Narrative textual changes that we now follow a newer RFC.  E.g. we now support RFC 8017 instead of earlier versions of PKCS#1.  It updates the spec name and some of the fields found within it, but there are no changes to the APIs.

2.  We updated/clarified what constructors/methods should do in specific cases like omitted parameters.  E.g. Signature.getParameters().

3.  Several new fields/methods were added. 
Comments
As noted by [~wetmore], 8u41 refers to the spec version for the MR of the Java SE 8 spec. When the changes are put into another 8 update release, the CSR can be updated and have a nominal re-review at that time. Moving to Approved.
14-11-2019

Initial MR release will be 8u41, we expect to put this into a later release.
14-11-2019

Moving to Provision for 8-pool. Please reset fixVersion to the intended exact release or a more specific 8-pool value before finalizing the request.
13-11-2019