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.