[13] RFR JDK-8080462: Update SunPKCS11 provider with PKCS11 v2.40 support

Sean Mullan sean.mullan at oracle.com
Wed May 29 20:12:36 UTC 2019


I agree with your comments below and the current CSR looks good so I've 
added my name as Reviewer. One main comment is that I don't think you 
should check the "Source" compatibility box. That would mean this would 
be a source-incompatible change [1], which I don't think is right. I 
don't think you should check any of the Compatibility boxes as according 
to the "Compatibility Risk Description" box, you said there is no 
compatibility risk.

--Sean

[1] https://wiki.openjdk.java.net/display/csr/Kinds+of+Compatibility

On 5/29/19 3:00 PM, Valerie Peng wrote:
> Hi Sean,
> 
> Much thanks for the feedbacks. They are very helpful... I have updated 
> the CSR per your feedbacks.
> 
> https://bugs.openjdk.java.net/browse/JDK-8221442
> 
> Please find more replies inline below.
> 
> On 5/28/2019 1:51 PM, Sean Mullan wrote:
> 
>> Hi Valerie,
>>
>> On 5/24/19 6:37 PM, Valerie Peng wrote:
>>> Hi Sean,
>>>
>>> Thanks much for the suggestion. I have added the info on newly 
>>> supported algorithms to both the CSR and the bug record. Please let 
>>> me know if you have more comments.
>>
>> - In the Summary section, add a hyperlink to the PKCS#11 v2.40 
>> standard and the errata
> 
> Done.
> 
>> - In general, I would put more information in the Specification 
>> section. I think attaching a patch of all the implementation changes 
>> is a bit too raw and not that useful as it is hard to discern what is 
>> specification and what is not (also the patch is not currently 
>> attached and pointing to a webrev is not acceptable per CSR rules 
>> since it may go away). Instead, I would avoid attaching a patch and 
>> instead include descriptions of the new attributes and algorithms in 
>> the Specification section in a format similar to that what is 
>> documented in 
>> https://docs.oracle.com/en/java/javase/12/security/pkcs11-reference-guide1.html.
>>
>> Basically, I think this CSR should include the information that is 
>> exposed or configurable to users outside of the implementation, which 
>> I think can be described in 2 types of use cases:
> 
> Yes, I think this is better. I was focusing on header file updates in 
> original CSR. Agree that it'd be useful to list changes exposed by this 
> RFE.
> 
>> 1. configuring a PKCS#11 provider (need to know what attributes are 
>> supported and their defaults)
> 
> Well, PKCS11 reference guide uses the term "attribute" to refer to 
> provider configuration options. This RFE did not add new provider 
> configuration options. However, there is also attributes defined in 
> PKCS#11 whose name starts with CKA_xxx. This RFE enhances SunPKCS11 
> provider to recognize new PKCS#11 attributes and won't error out with 
> exceptions when specified inside the configuration file entries as 
> attribute values, e.g.
> 
>     |attributes(*,CKO_PRIVATE_KEY,CKK_RSA) = { *CKA_DECRYPT* = true }|
> 
> These newly recognized PKCS#11 attributes (CKA_xxx), mechanisms 
> (CKM_xxx), key types (CKK_xxx), etc., are defined in 
> src/jdk.crypto.cryptoki/share/classes/sun/security/pkcs11/wrapper/PKCS11Constants.java.
> 
>> 2. using it as a provider in an application (need to know what 
>> algorithms are supported and what is disabled/enabled by default)
> 
> Yes, these are the list of newly supported algorithms which I have added 
> to the CSR to address your earlier comment. None of them are disabled by 
> default. However, only when the underlying PKCS11 library also support 
> these, they will show up as available.
> 
>> - Are there new attributes that are now supported than what are 
>> currently listed in Table 5.1 of the PKCS#11 Reference Guide?: 
>> https://docs.oracle.com/en/java/javase/12/security/pkcs11-reference-guide1.html#GUID-C4ABFACB-B2C9-4E71-A313-79F881488BB9
> 
> If you are referring to attributes per the convention of PKCS#11 
> reference guide, no new provider configuration attributes added. 
> However, new PKCS#11 attributes are recognized. We don't list recognized 
> PKCS#11 attributes in the reference guide as they are quite extensive. 
> PKCS11 header files define a long list of constants and depending on 
> what they are for, it may or may not lead to an error. For example, 
> unrecognized mechanisms and error codes will be accepted and their long 
> values are used instead. However, unrecognized PKCS#11 attributes 
> specified in the PKCS#11 provider configuration file will lead to exception.
> 
>> If so, I think we should list them in the Specification section with 
>> the same details as in the Reference Guide.
> 
> Given the above, I suppose that we don't need to list out all newly 
> supported PKCS#11 attributes? They do impact the user in some way, but 
> not sure if it's too much details. Perhaps we can just state that 
> whatever supported in the PKCS#11 v2.40 headers are now recognized by 
> SunPKCS11 provider.
> 
>> - For the new algorithms, I would include those in the Specification 
>> section, in a format like table 5.3 in the PKCS#11 Reference Guide: 
>> https://docs.oracle.com/en/java/javase/12/security/pkcs11-reference-guide1.html#GUID-D3EF9023-7DDC-435D-9186-D2FD05674777
> 
> Sure, will do.
> 
>>
>> - I would include any new or changed defaults for attributes, etc.
> 
> No new defaults or new attributes for PKCS11 provider configurations.
> 
> Regards,
> Valerie
>>
>> --Sean
>>
>>>
>>> All,
>>>
>>> RFEs need to be integrated by 6/13. Can someone help reviewing this 
>>> soon? Mach5 run is clean. I up'ed the version of webrev to webrev.01 
>>> due to the additional support for RSASSA-PSS signatures.
>>>
>>> RFE: https://bugs.openjdk.java.net/browse/JDK-8080462
>>> CSR: https://bugs.openjdk.java.net/browse/JDK-8221442
>>> Webrev: http://cr.openjdk.java.net/~valeriep/8080462/webrev.01/
>>>
>>> Thanks,
>>> Valerie
>>>
>>> On 5/22/2019 7:55 AM, Sean Mullan wrote:
>>>> On 5/21/19 7:19 PM, Valerie Peng wrote:
>>>>>
>>>>> I thought we always file CSR when updating the version of external 
>>>>> standard, e.g. documenting the import aspect of JDK.
>>>>
>>>> Good point though I think that was primarily based on whether the 
>>>> external standard was referenced in the javadocs of the standard 
>>>> APIs or influenced the behavior of existing APIs in some way. I 
>>>> don't think PKCS#11 is referenced from any of our standard APIs, but 
>>>> since this new version does add support for additional crypto 
>>>> algorithms via the standard APIs that weren't previously available, 
>>>> that sounds like a good enough reason for filing the CSR.
>>>>
>>>> I would recommend adding some additional details to the CSR to list 
>>>> what new features/algorithms PKCS#11 v2.40 provides and which 
>>>> standard APIs those features are applicable to. It would also be 
>>>> helpful to add similar details to the main issue and the release 
>>>> note as there aren't many details about what features are in the new 
>>>> version.
>>>>
>>>> Thanks,
>>>> Sean
>>>>
>>>>>
>>>>> I'd love to close/withdraw the CSR if it's not needed.
>>>>>
>>>>> Thanks,
>>>>> Valerie
>>>>> On 5/20/2019 12:11 PM, Sean Mullan wrote:
>>>>>> On 5/17/19 3:56 PM, Valerie Peng wrote:
>>>>>>>
>>>>>>> Thanks Martin for helping me troubleshoot NSS side, I added PSS 
>>>>>>> support into PKCS11 provider and added PSS-specific regression 
>>>>>>> tests. Please find webrev updated as below:
>>>>>>>
>>>>>>> http://cr.openjdk.java.net/~valeriep/8080462/webrev.01/
>>>>>>>
>>>>>>> Can someone help review the CSR first as the approval may take a 
>>>>>>> week or so.
>>>>>>
>>>>>> I am curious why a CSR is needed? This seems to be strictly an 
>>>>>> implementation change with no compatibility effects.
>>>>>>
>>>>>> --Sean
>>>>>>
>>>>>>>
>>>>>>> Thanks,
>>>>>>> Valerie
>>>>>>> On 4/12/2019 5:05 PM, Valerie Peng wrote:
>>>>>>>>
>>>>>>>> Anyone has time to review this? Besides the header files update, 
>>>>>>>> I added support for AES/GCM/NoPadding support. Ran into some 
>>>>>>>> strange NSS error with RSASSA-PSS signature mechanism, so I have 
>>>>>>>> not included the PSS signature impl here.
>>>>>>>>
>>>>>>>> RFE: https://bugs.openjdk.java.net/browse/JDK-8080462
>>>>>>>>
>>>>>>>> Webrev: http://cr.openjdk.java.net/~valeriep/8080462/webrev.00/
>>>>>>>>
>>>>>>>> CSR: https://bugs.openjdk.java.net/browse/JDK-8221442
>>>>>>>>
>>>>>>>> Thanks,
>>>>>>>> Valerie
>>>>>>>>
>>>>>>>>



More information about the security-dev mailing list