All others accepted.

> 1122 keystore.pkcs12.certProtectionAlgorithm = PBEWithSHA1AndRC2_40
> 
> Shouldn't this be named certPbeAlgorithm so that it matches 
> certPbeIterationCount? Same comment about keyProtectionAlgorithm.

Unfortunately we already had "keystore.pkcs12.keyProtectionAlgorithm" and it 
also accepts "PKCS12". See 
http://cr.openjdk.java.net/~weijun/8076190/webrev.03/src/java.base/share/classes/sun/security/pkcs12/PKCS12KeyStore.java-.html:

 147     private static final String[] KEY_PROTECTION_ALGORITHM = {
 148         "keystore.pkcs12.keyProtectionAlgorithm",
 149         "keystore.PKCS12.keyProtectionAlgorithm"
 150     };

But you are right the names are not consistent and supporting both "pkcs12" and 
"PKCS12" is awkward (and cannot make use of the new 
SecurityProperties::privilegedGetOverridable method). Now I decide to name the 
new properties as (key|cert)PbeAlgorithm names with only "pkcs12", and only 
support the old names as a fallback.

> * PKCS12KeyStore.java
> 
> 145     private static final int PBE_ITERATION_COUNT
> 146             = getPkcs12Setting("pbeIterationCount", 50000);
> 
> Shouldn't there be 2 constants above, one for certPbeIterationCount and one 
> for keyPbeIterationCount?

Oops. Will fix.

> 
> 208                         String name2 = "keystore.PKCS12." + type;
> 
> I'm not sure checking the property name with uppercase PKCS12 is necessary. I 
> think we should assume that the property name is case-sensitive, as most 
> properties are.

See above. 

> 
> 2108                     // What shall we do if there is ENCRYPTED_DATA_OID 
> but
> 2109                     // we do not have a password?
> 
> This section of comments (thru line 2123) should really be reworded to say 
> what the current implementation does and perhaps allude to why it is not 
> perfect but is probably the best option. Right now it reads too much like a 
> brainstorming session :)

I *am* brainstorming inside my brain. I had long thought about throwing an 
exception here.

With the password-less cacerts, hopefully this will not be a problem for many 
people and we can just keep the current behavior.

Thanks
Max

> 
> --Sean
> 
> On 9/25/18 6:49 AM, Weijun Wang wrote:
>> Webrev updated at http://cr.openjdk.java.net/~weijun/8076190/webrev.03/.
>> Mostly spec changes. The test is enhanced a little to check for macAlg 
>> interop.
>>> On Sep 24, 2018, at 11:15 PM, Sean Mullan <sean.mul...@oracle.com> wrote:
>>> 
>>> Right, I understand their usage and the properties are well documented. My 
>>> comment is that if you just read the first sentence which is typically a 
>>> summary sentence, it gives no indication that some of these properties may 
>>> also be used when modifying a keystore. You have to read further to figure 
>>> that out, and that might be missed. Perhaps if you added a second sentence 
>>> to the first paragraph: "Several of the properties may also be used when 
>>> modifying an existing keystore." Then the next paragraph starts ...
>> Good.
>>> 
>>>>> The default alg values seem somewhat weak. Can we upgrade them or is 
>>>>> there a compatibility issue/risk?
>>>> It will be addressed in a different RFE and is not related to migrating 
>>>> cacerts to password-less.
>>>> I haven't studied it yet. Need to investigate how current releases of 
>>>> various tools (openssl, browsers...) support it.
>>> 
>>> Ok.
>>> 
>>> Still need to review PKCS12KeyStore, but here are some more comments:
>>> 
>>> * java.security
>>> 
>>> You should probably say that these properties are specific to the JDK 
>>> PKCS12 KeyStore implementation and may not be supported by other PKCS12 
>>> implementations.
>>> 
>>> What happens if the properties are not set or are set to the empty String?
>> When not set, there is a default value. It happens to be the same as what 
>> the out-of-box java.security shows.
>> When empty, there will be an error. Say, NumberFormatException, 
>> NoSuchAlgorithmException.
>>> Are the algorithm names case-insensitive?
>> Should be case-insensitive. For each one, I've specified it as "algorithm 
>> defined in the XYZ section of standard names". Is that enough to show it's 
>> case-insensitive?
>>> 
>>> What if illegal values, or unknown algorithms are set for the properties? 
>>> Are they ignored? Do they throw an Exception? Or do they fallback to 
>>> hard-coded defaults? This behavior should be specified.
>> Throw an exception. I cannot guarantee when it will be thrown so I just say 
>> "when it's used".
>>> 
>>> * Passwordless
>>> 
>>> Can you add some comments as to why openssl is needed? Aren't there some 
>>> tests you can still do if it is not there? And maybe add some comments in 
>>> the class description as to what the test is generally testing as it hard 
>>> to discern that from just scanning the code.
>> Interoperability. I generate pkcs12 keystores from openssl using various 
>> settings and make sure keytool can read them, vice versa. Maybe I should 
>> move it to the infra test group.
>> Thanks
>> Max
>>> 
>>> --Sean

Reply via email to