Re: "No such algorithm: 1.2.840.113549.1.5.13" occurs when creating an EncryptedPrivateKey instance.

Peter Dettman <[email protected]> Tue, 6 Nov 2018 20:51:13 +0700
Newsgroups gmane.comp.encryption.bouncy-castle.devel
Message-ID <[email protected]>
Hi Satoru,

To parse openssl-generated keys, you're better off using the bcpkix
jar's org.bouncycastle.openssl package. This example code will read a
key generated with the command line you used:


import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.security.PrivateKey;
import java.security.Security;

import org.bouncycastle.asn1.pkcs.PrivateKeyInfo;
import org.bouncycastle.jce.provider.BouncyCastleProvider;
import org.bouncycastle.openssl.PEMParser;
import org.bouncycastle.openssl.jcajce.JcaPEMKeyConverter;
import
org.bouncycastle.openssl.jcajce.JceOpenSSLPKCS8DecryptorProviderBuilder;
import org.bouncycastle.operator.InputDecryptorProvider;
import org.bouncycastle.pkcs.PKCS8EncryptedPrivateKeyInfo;

public class PEMTest
{
    public static void main(String[] args) throws Exception
    {
        Security.addProvider(new BouncyCastleProvider());

        PEMParser pemParser = new PEMParser(new InputStreamReader(new
FileInputStream("key.pem")));

        PKCS8EncryptedPrivateKeyInfo encPKInfo =
(PKCS8EncryptedPrivateKeyInfo)pemParser.readObject();

        InputDecryptorProvider decProv = new
JceOpenSSLPKCS8DecryptorProviderBuilder().setProvider("BC").build("password".toCharArray());
        PrivateKeyInfo pkInfo = encPKInfo.decryptPrivateKeyInfo(decProv);

        PrivateKey privKey = new
JcaPEMKeyConverter().setProvider("BC").getPrivateKey(pkInfo);
    }
}


This doesn't exactly answer your question, but I guess if you are really
curious about how it works, it's a good starting point.

Regards,
Pete Dettman


On 6/11/18 6:36 pm, Satoru Otsubo wrote:
> Hi,
> 
> I made a self-signed certificate and produced an encrypted key.pem.
>  by using the following command and entering a password:
> 
>  $ openssl req -x509 -newkey rsa:2048 -keyout key.pem -outform pem -out cert.pem -days 365
> 
> Then, I tried to make the javax.crypto.EncryptedPrivateKeyInfo instance from the above key.pem with the program below,
>  by referring to org.bouncycastle.jce.provider.test.EncryptedPrivateKeyInfoTest.java
> (I used jdk1.7.0_80 and ***-jdk15on-160.jar)
> 
> But "java.security.NoSuchAlgorithmException: No such algorithm: 1.2.840.113549.1.5.13" occured.
> 
> As there is also org.bouncycastle.asn1.pkcs.EncryptedPrivateKeyInfo, I tried to use it.
> 
> But even in this case,"java.security.NoSuchAlgorithmException: No such algorithm: 1.2.840.113549.1.5.13" occured.
> 
> I appreciate if anyone can explain why "No such algorithm: 1.2.840.113549.1.5.13" occurs.
> 
> Thanks in advance.
> 
> Satoru Otsubo