// ASN1EncodableVector extvalue = new ASN1EncodableVector();
Vector<DERObjectIdentifier> oidvec = new Vector<DERObjectIdentifier>();
oidvec.add(X509Extensions.SubjectAlternativeName);
Vector<X509Extension> valuevec = new Vector<X509Extension>();
valuevec.add(new X509Extension(false, new DEROctetString(extOut.toByteArray())));
X509Extensions exts = new X509Extensions(oidvec, valuevec);
extensionattr.add(new DERSet(exts));
// Complete the Attribute section of the request, the set (Attributes)
// contains one sequence (Attribute)
ASN1EncodableVector v = new ASN1EncodableVector();
v.add(new DERSequence(extensionattr));
DERSet attributes = new DERSet(v);
// Create PKCS#10 certificate request
PKCS10CertificationRequest req = new PKCS10CertificationRequest("SHA1WithRSA", new X509Name("C=SE,CN=extoverride"), rsakeys.getPublic(), attributes,
rsakeys.getPrivate());
ByteArrayOutputStream bOut = new ByteArrayOutputStream();
DEROutputStream dOut = new DEROutputStream(bOut);
dOut.writeObject(req);
dOut.close();
byte[] p10bytes = bOut.toByteArray();
// FileOutputStream fos = new FileOutputStream("/tmp/foo.der");
// fos.write(p10bytes);
// fos.close();
PKCS10RequestMessage p10 = new PKCS10RequestMessage(p10bytes);
p10.setUsername("foo");
p10.setPassword("foo123");
// See if the request message works...
X509Extensions p10exts = p10.getRequestExtensions();
assertNotNull(p10exts);
IResponseMessage resp = signSession.createCertificate(admin, p10, org.ejbca.core.protocol.X509ResponseMessage.class, null);
X509Certificate cert = (X509Certificate) CertTools.getCertfromByteArray(resp.getResponseMessage());
assertNotNull("Failed to create certificate", cert);
assertEquals("CN=extoverride,C=SE", cert.getSubjectDN().getName());