Re: BC1.6 CSR generation

David Hook <dgh-rTAZ0PM/[email protected]> Fri, 8 Mar 2019 07:46:28 +1100
Newsgroups gmane.comp.encryption.bouncy-castle.devel
Message-ID <[email protected]>
Use the pkcs classes in the bcpkix jar.

Regards,

David

On 6/3/19 2:53 am, Usha Nayak wrote:
> Hello
>
> For generation of CSR, we had following 1 liner code:
>       
> kpGen = new PKCS10CertificationRequest( "SHA256withRSA",
> x500PrincipalName,  keyPair.getPublic(), new DERSet(attribute),
> keyPair.getPrivate() );
>
> where subject is a "javax.security.auth.x500.X500Principal", the
> private & public key stem from a general "java.security.KeyPair" etc. 
>
> Now for BC1.6, I'm aware that we need to use pkcs package to use
> PKCS10CertificationRequest class. But can't seem to find a better
> approach in creating this object. 
>
> On googling, I came across couple of ways to do so using BC1.6:
>
>    PKCS10CertificationRequestBuilder builder = new
> PKCS10CertificationRequestBuilder(
>         new X500Name(subject.getName()),
>         SubjectPublicKeyInfo.getInstance(pair.getPublic())  );
>     AlgorithmIdentifier sigAlgId = new
> DefaultSignatureAlgorithmIdentifierFinder().find(type.toString());
>     AlgorithmIdentifier digAlgId = new
> DefaultDigestAlgorithmIdentifierFinder().find(sigAlgId);
>     AsymmetricKeyParameter keyParam =
> PrivateKeyFactory.createKey(pair.getPrivate().getEncoded());
>     ContentSigner signer = new BcRSAContentSignerBuilder(sigAlgId,
> digAlgId).build(keyParam);
>     
>     PKCS10CertificationRequest csr = builder.build(signer);
>
>
> OR
>
> SubjectPublicKeyInfo pkInfo =
> SubjectPublicKeyInfo.getInstance(keyPair.getPublic());
> CertificationRequestInfo requestInfo = new
> CertificationRequestInfo(x500Name, pkInfo, new DERSet(attribute));
> AlgorithmIdentifier sha256withRsa = new
> AlgorithmIdentifier(PKCSObjectIdentifiers.sha256WithRSAEncryption);
> byte[] signatureBytes = keyPair.getPrivate().getEncoded();
> DERBitString signature = new DERBitString(signatureBytes);
>
> csr = new CertificationRequest(requestInfo, sha256withRsa, signature);
>
> kpGen= new PKCS10CertificationRequest(csr);
>
> Please let me know the correct approach of the two I listed above way
> or if there are any utilities or implementation that I could use.
>
> Thanks..
>