On 17 Dec 2014, at 18:59, Sean Mullan <sean.mul...@oracle.com> wrote:
> On 12/16/2014 07:12 PM, Vincent Ryan wrote: >> I’ve generated a new webrev to address your comments below: >> http://cr.openjdk.java.net/~vinnie/8044445/webrev.04/ >> >> Thanks. >> >> >> On 16 Dec 2014, at 21:11, Sean Mullan <sean.mul...@oracle.com> wrote: >> >>> Here are my comments on the latest webrev: >>> >>> * General >>> >>> - for the engineProbe methods, if a DataInputStream is not specified, I >>> think you should wrap the stream in a DataInputStream, rather than >>> returning false. >> >> KeyStore.getInstance(File,…) always supplies a DataInputStream to >> KeyStoreSpi.engineProbe >> so it is not necessary to wrap. > > That's an implementation detail though. Another vendor's implementation of > the new KeyStore.getInstance methods may not do that. If you want to > guarantee that, you should change the InputStream parameter of the > engineProbe method to a DataInputStream. Unless you think engineProbe may be > called/used in other circumstances where a DataInputStream is not > appropriate, which in that case you change the subclasses to do an instanceof > and wrap it. OK that makes sense. I’ll wrap it. > >>> * keytool/Main >>> >>> - can you explain more about why the provider is ignored on lines 812-817, >>> 1919-1925? This doesn't seem like it is compliant with keytool -- if a >>> provider is specified, it should be used. >> >> The probing mechanism is better equipped to determine the exact keystore >> type. >> >> For example, if an application specifies no -storetype option then it >> implicitly gets the >> default keystore type which now differs between JDK 9 and earlier releases. >> The new compatibility mode can handle this scenario so that the application >> doesn’t >> break. However, in compatibility mode the instantiated keystore type might >> not match >> the keystore format. >> >> Whereas when probing is employed the instantiated keystore type always >> matches >> the keystore format. > > Ok, but I think you should do that only if both a provider and storetype are > not specified. If the -providerName option is specified, you need to honor > that. It looks like the code is not doing that right now. Sorry, I misread your previous comment. I thought you were asking why the storetype is ignored. I hadn’t considered the impact of the -providerName option. I’ll make that change. > > --Sean