On Tue, 21 Dec 2021 16:31:57 GMT, Weijun Wang <wei...@openjdk.org> wrote:
> Before password-less PKCS12 keystores are supported, certificates in a PKCS12 > file are always encrypted. Therefore if one loads the keystore with a null > pass, it contains `PrivateKeyEntry`s without certificates. This has always > been awkward (and most likely useless) so when JDK-8076190 introduced the > password-less feature I also added a line to remove such an entry. > > https://github.com/openjdk/jdk/blob/a729a70c0119ed071ff490b0dfd4e3e2cb1a5ae4/src/java.base/share/classes/sun/security/pkcs12/PKCS12KeyStore.java#L2272 > > > Unfortunately, the line is not coded correctly, it should have been > `remove(key)` but here it's `remove(value)`. > > This code change correctly removes the entry. > > That said, this behavior, although weird, has been there from the beginning > since PKCS12 keystore was introduced. If you can find out a usage of a > private key entry without any certificate and think it's worth kept that way, > I can simply remove the `remove` call and leave the entry there. This pull request has now been integrated. Changeset: fb623f1d Author: Weijun Wang <wei...@openjdk.org> URL: https://git.openjdk.java.net/jdk/commit/fb623f1d2ee858fbc6edfeaaa702b5fcd832a0aa Stats: 5 lines in 1 file changed: 0 ins; 5 del; 0 mod 8279066: entries.remove(entry) is useless in PKCS12KeyStore Reviewed-by: mullan ------------- PR: https://git.openjdk.java.net/jdk/pull/6910