RFR[11] JDK-8146293 "Add Support for RSA-PSS Signature Algorithm as in PKCS#1 v2.2"

Valerie Peng valerie.peng at oracle.com
Fri Apr 27 23:27:01 UTC 2018

Hi Brad,

Thanks for the pointer on netbeans, I will use it to catch stylistic 
issues later. I updated the changes with most of your comments except 
those very minor ones (i.e. finish with . or not). Please find comments 

On 4/13/2018 12:25 PM, Bradford Wetmore wrote:
> PSSParameterSpec.java
> ---------------------
> Maybe add trailerFieldBC(1)?
Not sure what do u want me to add. A constants for TrailerFieldBC, or else?

> 157/202: We talked about this in person, but I wanted to mention here 
> for a wider audience.  I had concerns about this typo, and any interop 
> problems this might bring.  I looked over the Bouncy Castle impl, and 
> it appears as though they also assumed it to be bytes, not bits.  Can 
> you check with the other vendors who might have their own PSS 
> implementations and verify this is not going to be a problem?  I 
> talked with our CSR lead (Joe Darcy), he doesn't think it should be a 
> problem if other impls are using bytes.
Thanks for checking on BouncyCastle, given the default is stated in the 
class javadoc to be 20 and the norm is to use byte as the unit, I feel 
the chance of other vendors using bits are very low. We can remind other 
vendors about this typo, but we should fix this regardless.

> RSAPrivateCrtKeySpec.java
> -------------------------
> 60/88:  Do you want to add v1.2?
I think you mean v2.2. Actually, I prefer to only mention the version 
information in class javadoc. Easier to maintain this way. So, I 
actually removed the version info from the method javadoc of other 
classes for consistency.

> SunRsaSignEntries.java
> ----------------------
> 145:  Where did you come up with this convention for your aliases?
>     SHA1withRSA-PSS
> I see Bouncy Castle[1] and Android[2] are both using:
>     SHA*withRSA/PSS
>     RSASSA-PSS (name from PKCS#1)
> [1] 
> https://github.com/bcgit/bc-java/blob/master/prov/src/main/java/org/bouncycastle/jcajce/provider/asymmetric/RSA.java
> [2] https://developer.android.com/reference/java/security/Signature.html
I removed the <digest>withRSA-PSS aliasses and am considering removing 
the <digest>withRSAandMGF1 impls. The RSA-PSS (or RSASSA-PSS) scheme in 
PKCS#1 v2.2 passes in the digest as part of signature parameters 
(required) at runtime. Also, the oid corresponds to RSA-PSS unlike in 
PKCS#1 v1.5 where oid is defined for each digest with RSA signature 
scheme. So, I am having second thought on supporting the 
<digest>withRSAandMGF1 names. The RSA-PSS signature impl code can use 
less checks if we don't support these "friendly" names.
As for the standard name, I didn't want to use RSA/PSS as the Cipher 
transformation string uses "/" in its syntax. As for RSASSA-PSS, it is 
also a little different from what we normally use. I don't have a strong 
preference on names though. I can change it to whatever the groups' 
preference is.

> On 3/27/2018 6:40 PM, Valerie Peng wrote:
>> Hi Brad,
>> Can you please help review the changes for RSA-PSS support? I also 
>> added some minor enhancement which add 2 more digest algorithms for 
>> OAEP padding.
>> There are quite some changes involved. The main changes are in the 
>> SunRsaSign provider, i.e. sun.security.rsa packages. I reused 
>> existing RSAKeyFactory, RSAKeyPairGenerator, and the RSA KeyImpl 
>> classes as much as possible. However, given that RSA-PSS signatures 
>> requires parameters, I put its implementation in a separate class, 
>> i.e. RSAPSSSignature.java.
>> RFE: https://bugs.openjdk.java.net/browse/JDK-8146293
>> Webrev: http://cr.openjdk.java.net/~valeriep/8146293/webrev.00/
>> Existing and new regression tests have been run and result looks fine.
>> Thanks,
>> Valerie

More information about the security-dev mailing list