On Mon, 7 Oct 2024 12:42:00 GMT, Prasadrao Koppula <[email protected]> wrote:
>> Using SharedSecrets, I attempted to expose FileInputStream::path
>> information. After implementing the fix, I validated the startup performance
>> tests. Observed no consistent pattern of performance drops or gains, can
>> disregard the occasional performance drop observed in 1 or 2 runs.
>
> Prasadrao Koppula has updated the pull request incrementally with one
> additional commit since the last revision:
>
> JDK-8329251
src/java.base/share/classes/sun/security/pkcs12/PKCS12KeyStore.java line 1972:
> 1970: .getPath((FileInputStream) stream);
> 1971: if (keystorePath != null) {
> 1972: debug.println("PKCS12KeyStore: Loading \"" +
> keystorePath.substring(
I ran a straightforward test to connect to a TLS website and expected to see
the cacerts file details being printed.
`BufferedInputStream` is used for `InputStream` instance
sun.security.util.KeyStoreDelegator#engineLoad
InputStream bufferedStream = new BufferedInputStream(stream);
bufferedStream.mark(Integer.MAX_VALUE);
try {
@SuppressWarnings("deprecation")
KeyStoreSpi tmp = primaryKeyStore.newInstance();
tmp.engineLoad(bufferedStream, password);
You'll need to get a handle to the BufferedInputStream -> FilterInputStream ->
`in` stream and check if it's an instance of a `FileInputStream`. You can then
query and print the path value if present.
On a side note, I was surprised to see no debug output (of interest) initially
when I was using the `-Djava.security.debug=keystore` value. Turns out I have
to use the `pkcs12` value for debug option. Given that PKCS12KeyStore.java is
the only file to use this debug value and that pkcs12 is now the default
keystore type, there might be merit in folding this value into the more common
`keystore` option
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/20414#discussion_r1796741288