package org.bouncycastle.asn1.test;
import java.util.Date;
import org.bouncycastle.asn1.ASN1Enumerated;
import org.bouncycastle.asn1.ASN1GeneralizedTime;
import org.bouncycastle.asn1.ASN1Integer;
import org.bouncycastle.asn1.ASN1OctetString;
import org.bouncycastle.asn1.DEROctetString;
import org.bouncycastle.asn1.DERSequence;
import org.bouncycastle.asn1.DERUTF8String;
import org.bouncycastle.asn1.cmc.RevokeRequest;
import org.bouncycastle.asn1.x500.X500Name;
import org.bouncycastle.asn1.x500.X500NameBuilder;
import org.bouncycastle.asn1.x500.style.BCStyle;
import org.bouncycastle.asn1.x509.CRLReason;
import org.bouncycastle.util.Pack;
import org.bouncycastle.util.test.SimpleTest;
public class RevokeRequestTest
extends SimpleTest
{
public static void main(String[] args)
{
runTest(new RevokeRequestTest());
}
public String getName()
{
return "RevokeRequestTest";
}
public void performTest()
throws Exception
{
X500NameBuilder builder = new X500NameBuilder();
builder.addRDN(BCStyle.OU, "Bouncycastle");
X500Name name = builder.build();
for (int t = 0; t < 8; t++)
{
ASN1GeneralizedTime invalidityDate = null;
ASN1OctetString passphrase = null;
DERUTF8String comment = null;
if ((t & 1) == 1)
{
invalidityDate = new ASN1GeneralizedTime(new Date());
}
if ((t & 2) == 2)
{
passphrase = new DEROctetString(Pack.longToBigEndian(System.currentTimeMillis()));
}
if ((t & 4) == 4)
{
comment = new DERUTF8String("T" + Long.toOctalString(System.currentTimeMillis()));
}
RevokeRequest rr = new RevokeRequest(
name,
new ASN1Integer(12L),
CRLReason.getInstance(new ASN1Enumerated(CRLReason.certificateHold)),
invalidityDate,
passphrase,
comment);
byte[] b = rr.getEncoded();
RevokeRequest rrResp = RevokeRequest.getInstance(b);
isEquals("issuerName", rr.getName(), rrResp.getName());
isEquals("serialNumber", rr.getSerialNumber(), rrResp.getSerialNumber());
isEquals("reason", rr.getReason(), rrResp.getReason());
isEquals("invalidityDate", rr.getInvalidityDate(), rrResp.getInvalidityDate());
isTrue("passphrase", areEqual(rr.getPassPhrase(), rrResp.getPassPhrase()));
isEquals("comment", rr.getComment(), rrResp.getComment());
}
try
{
RevokeRequest.getInstance(new DERSequence());
fail("Sequence is less that 3");
}
catch (Throwable t)
{
isEquals("Exception type", t.getClass(), IllegalArgumentException.class);
}
}
}