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.DERSequence;
005import org.apache.commons.ssl.org.bouncycastle.asn1.DERTaggedObject;
006import org.apache.commons.ssl.org.bouncycastle.asn1.crmf.CertId;
007import org.apache.commons.ssl.org.bouncycastle.asn1.x509.CertificateList;
008
009public class RevRepContentBuilder
010{
011    private ASN1EncodableVector status = new ASN1EncodableVector();
012    private ASN1EncodableVector revCerts = new ASN1EncodableVector();
013    private ASN1EncodableVector crls = new ASN1EncodableVector();
014
015    public RevRepContentBuilder add(PKIStatusInfo status)
016    {
017        this.status.add(status);
018
019        return this;
020    }
021
022    public RevRepContentBuilder add(PKIStatusInfo status, CertId certId)
023    {
024        if (this.status.size() != this.revCerts.size())
025        {
026            throw new IllegalStateException("status and revCerts sequence must be in common order");
027        }
028        this.status.add(status);
029        this.revCerts.add(certId);
030
031        return this;
032    }
033
034    public RevRepContentBuilder addCrl(CertificateList crl)
035    {
036        this.crls.add(crl);
037
038        return this;
039    }
040
041    public RevRepContent build()
042    {
043        ASN1EncodableVector v = new ASN1EncodableVector();
044
045        v.add(new DERSequence(status));
046
047        if (revCerts.size() != 0)
048        {
049            v.add(new DERTaggedObject(true, 0, new DERSequence(revCerts)));
050        }
051
052        if (crls.size() != 0)
053        {
054            v.add(new DERTaggedObject(true, 1, new DERSequence(crls)));
055        }
056
057        return RevRepContent.getInstance(new DERSequence(v));
058    }
059}