use of org.mozilla.jss.netscape.security.x509.CRLReasonExtension in project jss by dogtagpki.
the class EnumerationZeroTest method buildCrl.
/**
* Build a CRL using JSS
* @param useZero whether or not to try creating a CRLEntry with the reason set to "unspecified"
* @return an X509CRL object
* @throws Exception if anything goes wrong
*/
public static X509CRL buildCrl(boolean useZero) throws Exception {
KeyPairGenerator generator = KeyPairGenerator.getInstance("RSA");
generator.initialize(2048);
KeyPair kp = generator.generateKeyPair();
List<RevokedCertificate> revokedCerts = new ArrayList<>();
for (int i = 0; i <= 10; i++) {
// 7 is an unused value in the enumeration
if (i == 7 || (i == 0 && !useZero)) {
continue;
}
CRLReasonExtension reasonExt = new CRLReasonExtension(RevocationReason.fromInt(i));
outputExtension(reasonExt);
CRLExtensions entryExtensions = new CRLExtensions();
entryExtensions.add(reasonExt);
revokedCerts.add(new RevokedCertImpl(BigInteger.valueOf(i), new Date(), entryExtensions));
}
CRLExtensions crlExtensions = new CRLExtensions();
crlExtensions.add(new CRLNumberExtension(BigInteger.ONE));
crlExtensions.add(buildAuthorityKeyIdentifier((RSAPublicKey) kp.getPublic()));
X500Name issuer = new X500Name("CN=Test");
Date now = new Date();
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.DAY_OF_MONTH, 365);
Date until = calendar.getTime();
X509CRLImpl crlImpl = new X509CRLImpl(issuer, now, until, revokedCerts.toArray(new RevokedCertificate[] {}), crlExtensions);
crlImpl.sign(kp.getPrivate(), "SHA256withRSA");
CertificateFactory cf = CertificateFactory.getInstance("X.509");
byte[] data = crlImpl.getEncoded();
return (X509CRL) cf.generateCRL(new ByteArrayInputStream(data));
}
use of org.mozilla.jss.netscape.security.x509.CRLReasonExtension in project jss by dogtagpki.
the class EnumerationZeroTest method outputExtension.
/**
* Output the DER encoding of a CRLExtension for examination
*/
public static void outputExtension(CRLReasonExtension ext) throws Exception {
ByteArrayOutputStream resultBytesOut = new ByteArrayOutputStream();
ext.encode(resultBytesOut);
byte[] encodedBytes = resultBytesOut.toByteArray();
System.out.print("Full encoded extension: " + toHex(encodedBytes));
Extension reasonExt = new Extension(new DerValue(encodedBytes));
System.out.print("\tEncoded CRL Reason: " + toHex(reasonExt.getExtensionValue()));
DerValue reasonValue = new DerValue(reasonExt.getExtensionValue());
System.out.println("\tReason value: " + reasonValue.getEnumerated());
}
use of org.mozilla.jss.netscape.security.x509.CRLReasonExtension in project jss by dogtagpki.
the class ExtPrettyPrint method getCRLReasonExtension.
/**
* String Representation of CRLReasonExtension
*/
private String getCRLReasonExtension() {
StringBuffer sb = new StringBuffer();
try {
sb.append(pp.indent(mIndentSize) + mResource.getString(PrettyPrintResources.TOKEN_IDENTIFIER));
sb.append(mResource.getString(PrettyPrintResources.TOKEN_REVOCATION_REASON) + "- " + mExt.getExtensionId().toString() + "\n");
sb.append(pp.indent(mIndentSize + 4) + mResource.getString(PrettyPrintResources.TOKEN_CRITICAL));
CRLReasonExtension ext = (CRLReasonExtension) mExt;
if (mExt.isCritical()) {
sb.append(mResource.getString(PrettyPrintResources.TOKEN_YES) + "\n");
} else {
sb.append(mResource.getString(PrettyPrintResources.TOKEN_NO) + "\n");
}
sb.append(pp.indent(mIndentSize + 4) + mResource.getString(PrettyPrintResources.TOKEN_REASON) + ext.getReason().toString() + "\n");
return sb.toString();
} catch (Exception e) {
return "";
}
}
Aggregations