Thanks for those comments Sean. I’ve addressed most of them in the webrev below.

Other notable changes since the previous webrev include:

- modified the two getInstance(File,…) methods to also load the keystore entries
- PKCS12 keystore support now available in both SUN and SunJSSE providers
- test fixes

http://cr.openjdk.java.net/~vinnie/8044445/webrev.02/


On 2 Dec 2014, at 15:10, Sean Mullan <sean.mul...@oracle.com> wrote:

> Comments:
> 
> * JceKeyStore
> 
> [906] add @Override to engineProbe method

> 
> * KeyStore
> 
> [1615] use @throws instead of @exception. Should probably also add an @throws 
> NullPointerException if keystore is null.
> 
> You need to define what happens if the File does not exist. You could either 
> throw a KeyStoreException, or you could instantiate a KeyStore using the 
> default keystore type. Each have their pros/cons. The latter seems a little 
> better as this method could then be used to open existing keystores or for 
> creating new keystores.
> 
> [1638] This is a provider configuration error, but there still may be other 
> KeyStoreSpis that can parse the file. I would probably just log this and 
> continue to check other providers.
> 
> [1654] Same here. I would log this and continue to check other providers. 
> Method currently say it throws KeyStoreExc only if no Provider supports the 
> file, but we have not necessarily checked all providers yet.
> 
> * KeyStoreSpi
> 
> [606] s/@exception/@throws/. Should probably also add an @throws 
> NullPointerException if stream is null.
> 
> You need to define that the method returns false by default.
> 
> * PKCS12KeyStore
> 
> [2340] @Override
> [2342-51] indentation should be 4 spaces
> [2353,2364] these should be static fields
> 
> * JavaKeyStore
> 
> [54] why did you make this public?

Because its JKS subclass is now called from the sun.security.pkcs12 package


> [816] @Override
> 
> * keytool/Main
> 
> [814, 1919] I'm not sure if it is correct to ignore the storetype. I think 
> getInstance(File) should only be called if the storetype is not specified.

I wanted to take advantage of the new keystore probing mechanism.
Maybe we should honour the storetype if it’s neither JKS nor PKCS12, otherwise 
probe?


> 
> * KeyStoreDelegator
> 
> overridden methods should have @Override tag
> 
> Can you make this class final with a private ctor, and instead have a static 
> method to return instances?

Then I have to duplicate each of the KeyStoreSpi methods in both 
PKCS12KeyStore.DualFormatPKCS12
and JavaKeyStore.DualFormatJKS.


> 
> The engine methods throw NPE if the keystore has not been loaded. This is not 
> consistent with the current JKS Keystore and PKCS12 Keystore impls and looks 
> like it is not compliant with the KeyStoreSpi spec. I think you need to 
> modify the methods to return null, etc instead if the keystore has not been 
> loaded yet.

The KeyStore methods handle the test for an uninitialised keystore (before the 
KeyStoreSpi methods are called).


> 
> --Sean
> 
> On 12/02/2014 06:23 AM, Vincent Ryan wrote:
>> 
>> Please review the following enhancement to improve keystore security by 
>> creating PKCS12 keystores by default.
>> Previously, JKS keystores were created by default. PKCS12 has the advantage 
>> of supporting stronger crypto
>> and hashing algorithms. It is also an open, extensible format and supports 
>> associating arbitrary attributes with
>> keystore entries.
>> 
>> Webrev: http://cr.openjdk.java.net/~vinnie/8044445/webrev.00/
>> Bug: https://bugs.openjdk.java.net/browse/JDK-8044445
>> 
>> 
>> To assist with compatibility across JDK releases, both JKS and PKCS12 
>> keystore implementations have been
>> extended to support both file formats. Applications that access keystores 
>> created by earlier releases should
>> require no code changes.
>> 
>> This changeset also includes a new convenience method for instantiating a 
>> file-based keystore: KeyStore.getInstance
>> - it takes a File argument. The specified file is probed by each supported 
>> keystore implementation to determine its
>> keystore type. KeyStoreSpi has been enhanced with a boolean engineProbe 
>> method to perform the actual probing.
>> 
>> Finally, to improve performance, the PKCS12 keystore implementation has been 
>> moved from the SunJSSE provider
>> to the SUN provider (as it appears earlier in the default list of installed 
>> JCE providers).
>> 

Reply via email to