Skip to content

PKCS8 generated by openssl-1.1.+ cannot be decrpyted due to change of openssl encryption mechanism (-iter option to be precise) #400

@aleksandar-kinanov

Description

@aleksandar-kinanov

Steps to reproduce:

  1. Generate keys the following way, using openssl-1.1.+ (I used 1.1.0):
  • ssh-keygen -t rsa -f ~/.ssh/testkey -C "testkey@exmaple.com"
  • ssh-keygen -f testkey.pub -e -m PKCS8 > testkey.pub.pem
  • openssl pkcs8 -topk8 -inform PEM -in testkey -out testkey.pem
  1. The java code:
        try {
            JceOpenSSLPKCS8DecryptorProviderBuilder jce = new JceOpenSSLPKCS8DecryptorProviderBuilder();
            FileReader fileReader = new FileReader(privateKeyPath);
            PEMParser keyReader = new PEMParser(fileReader);
            JcaPEMKeyConverter converter = new JcaPEMKeyConverter();
            PKCS8EncryptedPrivateKeyInfo keyPair = (PKCS8EncryptedPrivateKeyInfo) keyReader.readObject();
            jce.setProvider("BC");
            InputDecryptorProvider decProv = jce.build(keyPassword.toCharArray());
            PrivateKeyInfo info = keyPair.decryptPrivateKeyInfo(decProv);
            keyReader.close();
            return (RSAPrivateKey) converter.getPrivateKey(info);

        }catch ( IOException | PKCSException | OperatorCreationException e) {
            e.printStackTrace();
            return null;
        }
    }

Behavior:
Throws exception :
org.bouncycastle.pkcs.PKCSException: unable to read encrypted data: javax.crypto.BadPaddingException: pad block corrupted

Expected behavior:
Read the key as it does with keys generated the same way as mentioned in 1. , but with openssl-1.0.2g (for example)

Metadata

Metadata

Assignees

No one assigned

    Labels

    support requestCommunity assistance requested

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions