Fix Version/s: 8u41
Compatibility Risk Description:There was some reworking on the implementation code to support PSS. However, it's being used in JDK, so shouldn't be as risky as brand new code.
Interface Kind:Java API
Add support for RSASSA-PSS Signature algorithm in Java SE 8.
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.
- Update all PKCS#1 v2.1 references with the PKCS#1 v2.2 standard and its ASN.1 syntax
- Enhance existing RSA-related classes for supporting RSASSA-PSS keys which may contain parameters
- Add RSASSA-PSS (Probabilistic Signature Scheme) implementation support to SunRsaSign provider
- Add the support of SHA-512/224 and SHA-512/256 digests.
- 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:
JDK-8146293: Add support for RSASSA-PSS Signature algorithm
JDK-8206171: Signature#getParameters for RSASSA-PSS throws ProviderException when not initialized
See the attached webrev for full details. I am including all non-trivial changes to the API files, which include:
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.
We updated/clarified what constructors/methods should do in specific cases like omitted parameters. E.g. Signature.getParameters().
Several new fields/methods were added.