public X509Certificate createCertificate(X500Principal issuerDN, PrivateKey issuerKey, String name, Date notBefore, Date notAfter, PublicKey key) throws IllegalArgumentException {
try {
X500Name issuer = new X500Name(issuerDN.getName());
X500Name commonName = new X500Name(name);
BigInteger serial = BigInteger.valueOf(++m_serial);
SubjectPublicKeyInfo pubKeyInfo = convertToSubjectPublicKeyInfo(key);
X509v3CertificateBuilder builder = new X509v3CertificateBuilder(issuer, serial, notBefore, notAfter, commonName, pubKeyInfo);
X509CertificateHolder certHolder = builder.build(new JcaContentSignerBuilder(SIGNATURE_ALGORITHM).build(issuerKey));
return new JcaX509CertificateConverter().getCertificate(certHolder);
}
catch (IllegalArgumentException e) {
throw e;
}
catch (Exception e) {
throw new RuntimeException(e);
}
}
|