001package org.apache.commons.ssl.org.bouncycastle.asn1.cmp;
002
003import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1EncodableVector;
004import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1GeneralizedTime;
005import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Object;
006import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Primitive;
007import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Sequence;
008import org.apache.commons.ssl.org.bouncycastle.asn1.DERSequence;
009import org.apache.commons.ssl.org.bouncycastle.asn1.crmf.CertId;
010import org.apache.commons.ssl.org.bouncycastle.asn1.x509.Extensions;
011
012public class RevAnnContent
013    extends ASN1Object
014{
015    private PKIStatus status;
016    private CertId certId;
017    private ASN1GeneralizedTime willBeRevokedAt;
018    private ASN1GeneralizedTime badSinceDate;
019    private Extensions crlDetails;
020    
021    private RevAnnContent(ASN1Sequence seq)
022    {
023        status = PKIStatus.getInstance(seq.getObjectAt(0));
024        certId = CertId.getInstance(seq.getObjectAt(1));
025        willBeRevokedAt = ASN1GeneralizedTime.getInstance(seq.getObjectAt(2));
026        badSinceDate = ASN1GeneralizedTime.getInstance(seq.getObjectAt(3));
027
028        if (seq.size() > 4)
029        {
030            crlDetails = Extensions.getInstance(seq.getObjectAt(4));
031        }
032    }
033
034    public static RevAnnContent getInstance(Object o)
035    {
036        if (o instanceof RevAnnContent)
037        {
038            return (RevAnnContent)o;
039        }
040
041        if (o != null)
042        {
043            return new RevAnnContent(ASN1Sequence.getInstance(o));
044        }
045
046        return null;
047    }
048
049    public PKIStatus getStatus()
050    {
051        return status;
052    }
053
054    public CertId getCertId()
055    {
056        return certId;
057    }
058
059    public ASN1GeneralizedTime getWillBeRevokedAt()
060    {
061        return willBeRevokedAt;
062    }
063
064    public ASN1GeneralizedTime getBadSinceDate()
065    {
066        return badSinceDate;
067    }
068
069    public Extensions getCrlDetails()
070    {
071        return crlDetails;
072    }
073
074    /**
075     * <pre>
076     * RevAnnContent ::= SEQUENCE {
077     *       status              PKIStatus,
078     *       certId              CertId,
079     *       willBeRevokedAt     GeneralizedTime,
080     *       badSinceDate        GeneralizedTime,
081     *       crlDetails          Extensions  OPTIONAL
082     *        -- extra CRL details (e.g., crl number, reason, location, etc.)
083     * }
084     * </pre>
085     * @return a basic ASN.1 object representation.
086     */
087    public ASN1Primitive toASN1Primitive()
088    {
089        ASN1EncodableVector v = new ASN1EncodableVector();
090
091        v.add(status);
092        v.add(certId);
093        v.add(willBeRevokedAt);
094        v.add(badSinceDate);
095
096        if (crlDetails != null)
097        {
098            v.add(crlDetails);
099        }
100
101        return new DERSequence(v);
102    }
103}