kaikramer / keystore-explorer

KeyStore Explorer is a free GUI replacement for the Java command-line utilities keytool and jarsigner.
https://keystore-explorer.org/
GNU General Public License v3.0
1.67k stars 271 forks source link

PKCS12 are broken #400

Closed gh-eguerra closed 1 year ago

gh-eguerra commented 1 year ago

Describe the bug PKCS12 file are broken/corrupted with version 5.5.1 It's working fine in my VM (Linux + KSE v5.4.4) but not on my Windows (KSE v5.5.1)

To Reproduce Steps to reproduce the behavior:

  1. Create a PKCS12 keystore (keypair)
  2. add some data to it as subject
  3. save the file (with password)
  4. close KSE
  5. Open the created file (with password).

Expected behavior The file should open normally on every environment. Opens nicely when created with 5.4.4 but won't open if created with 5.5.1. Error is :

org.kse.crypto.keystore.KeyStoreLoadException: Could not load KeyStore as type 'PKCS12'. at org.kse.crypto.keystore.KeyStoreUtil.load(KeyStoreUtil.java:180) at org.kse.crypto.keystore.KeyStoreUtil.load(KeyStoreUtil.java:134) at org.kse.gui.actions.OpenAction.openKeyStore(OpenAction.java:141) at org.kse.gui.actions.OpenAction.openKeyStore(OpenAction.java:97) at org.kse.gui.actions.ExamineFileAction.openFile(ExamineFileAction.java:125) at org.kse.gui.dnd.DroppedFileHandler.openFiles(DroppedFileHandler.java:67) at org.kse.gui.CreateApplicationGui.run(CreateApplicationGui.java:107) at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758) at java.awt.EventQueue.access$500(EventQueue.java:97) at java.awt.EventQueue$3.run(EventQueue.java:709) at java.awt.EventQueue$3.run(EventQueue.java:703) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74) at java.awt.EventQueue.dispatchEvent(EventQueue.java:728) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93) at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

java.io.IOException: parseAlgParameters failed: ObjectIdentifier() -- data isn't an object ID (tag = 48) at sun.security.pkcs12.PKCS12KeyStore.parseAlgParameters(PKCS12KeyStore.java:816) at sun.security.pkcs12.PKCS12KeyStore.engineLoad(PKCS12KeyStore.java:2018) at java.security.KeyStore.load(KeyStore.java:1445) at org.kse.crypto.keystore.KeyStoreUtil.load(KeyStoreUtil.java:172) at org.kse.crypto.keystore.KeyStoreUtil.load(KeyStoreUtil.java:134) at org.kse.gui.actions.OpenAction.openKeyStore(OpenAction.java:141) at org.kse.gui.actions.OpenAction.openKeyStore(OpenAction.java:97) at org.kse.gui.actions.ExamineFileAction.openFile(ExamineFileAction.java:125) at org.kse.gui.dnd.DroppedFileHandler.openFiles(DroppedFileHandler.java:67) at org.kse.gui.CreateApplicationGui.run(CreateApplicationGui.java:107) at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758) at java.awt.EventQueue.access$500(EventQueue.java:97) at java.awt.EventQueue$3.run(EventQueue.java:709) at java.awt.EventQueue$3.run(EventQueue.java:703) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74) at java.awt.EventQueue.dispatchEvent(EventQueue.java:728) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93) at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

java.io.IOException: ObjectIdentifier() -- data isn't an object ID (tag = 48) at sun.security.util.ObjectIdentifier.(ObjectIdentifier.java:257) at sun.security.util.DerInputStream.getOID(DerInputStream.java:314) at com.sun.crypto.provider.PBES2Parameters.engineInit(PBES2Parameters.java:267) at java.security.AlgorithmParameters.init(AlgorithmParameters.java:293) at sun.security.pkcs12.PKCS12KeyStore.parseAlgParameters(PKCS12KeyStore.java:812) at sun.security.pkcs12.PKCS12KeyStore.engineLoad(PKCS12KeyStore.java:2018) at java.security.KeyStore.load(KeyStore.java:1445) at org.kse.crypto.keystore.KeyStoreUtil.load(KeyStoreUtil.java:172) at org.kse.crypto.keystore.KeyStoreUtil.load(KeyStoreUtil.java:134) at org.kse.gui.actions.OpenAction.openKeyStore(OpenAction.java:141) at org.kse.gui.actions.OpenAction.openKeyStore(OpenAction.java:97) at org.kse.gui.actions.ExamineFileAction.openFile(ExamineFileAction.java:125) at org.kse.gui.dnd.DroppedFileHandler.openFiles(DroppedFileHandler.java:67) at org.kse.gui.CreateApplicationGui.run(CreateApplicationGui.java:107) at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758) at java.awt.EventQueue.access$500(EventQueue.java:97) at java.awt.EventQueue$3.run(EventQueue.java:709) at java.awt.EventQueue$3.run(EventQueue.java:703) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74) at java.awt.EventQueue.dispatchEvent(EventQueue.java:728) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93) at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

Environment NOK

Environment OK

Thanks for help.

jpstotz commented 1 year ago

Please read #308 and #173 for details. A workaround exists but is not yet applied (see #335).

gh-eguerra commented 1 year ago

Hello, Thanks for the the quick reply and sorry not having found the related issues. I updated my java version and it's now running fine.

Regards.