Set/Get X509 CertificatePolicies Extension when importing DER/PEM in Java

Viewed 3301

I have problem with getting and setting Certificate Policies extension in Java. I am using Bouncy Castle 1.57.

I am adding extension to certificate generator like this:

boolean isCritical = Extensions.certificatePolicies;
String cpValue = Extensions.certificatePoliciesValue;
cerGen.addExtension(Extension.certificatePolicies, isCritical, cpValue.getBytes());

And getting this extension like:

byte[] policyBytes = certificate.getExtensionValue(Extension.certificatePolicies.toString());
if (policyBytes != null) {
    Object policyObj = new ASN1InputStream(policyBytes).readObject();
    policyBytes = ((DEROctetString) policyObj).getOctets();
    String policyField = new String(policyBytes); // this is cpValue when set
}

This works fine when until I export certificate, but when I export it to DER or PEM type, when I try to import it I am getting error:

java.io.IOException: Invalid encoding for CertificatePoliciesExtension.

Here's my source code of import:

 CertificateFactory fact = CertificateFactory.getInstance("X.509");
 FileInputStream is = new FileInputStream(file.getAbsolutePath());
 X509Certificate cer = (X509Certificate) fact.generateCertificate(is);

Exception occurs on last line when I try to generate certificate.

1 Answers
Related