001package org.apache.commons.ssl.org.bouncycastle.asn1.dvcs;
002
003import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1EncodableVector;
004import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Integer;
005import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Sequence;
006import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Set;
007import org.apache.commons.ssl.org.bouncycastle.asn1.DERSequence;
008import org.apache.commons.ssl.org.bouncycastle.asn1.DERTaggedObject;
009import org.apache.commons.ssl.org.bouncycastle.asn1.cmp.PKIStatusInfo;
010import org.apache.commons.ssl.org.bouncycastle.asn1.x509.DigestInfo;
011import org.apache.commons.ssl.org.bouncycastle.asn1.x509.Extensions;
012import org.apache.commons.ssl.org.bouncycastle.asn1.x509.PolicyInformation;
013
014/**
015 * <pre>
016 *     DVCSCertInfo::= SEQUENCE  {
017 *         version             Integer DEFAULT 1 ,
018 *         dvReqInfo           DVCSRequestInformation,
019 *         messageImprint      DigestInfo,
020 *         serialNumber        Integer,
021 *         responseTime        DVCSTime,
022 *         dvStatus            [0] PKIStatusInfo OPTIONAL,
023 *         policy              [1] PolicyInformation OPTIONAL,
024 *         reqSignature        [2] SignerInfos  OPTIONAL,
025 *         certs               [3] SEQUENCE SIZE (1..MAX) OF
026 *                                 TargetEtcChain OPTIONAL,
027 *         extensions          Extensions OPTIONAL
028 *     }
029 * </pre>
030 */
031
032public class DVCSCertInfoBuilder
033{
034
035    private int version = DEFAULT_VERSION;
036    private DVCSRequestInformation dvReqInfo;
037    private DigestInfo messageImprint;
038    private ASN1Integer serialNumber;
039    private DVCSTime responseTime;
040    private PKIStatusInfo dvStatus;
041    private PolicyInformation policy;
042    private ASN1Set reqSignature;
043    private ASN1Sequence certs;
044    private Extensions extensions;
045
046    private static final int DEFAULT_VERSION = 1;
047    private static final int TAG_DV_STATUS = 0;
048    private static final int TAG_POLICY = 1;
049    private static final int TAG_REQ_SIGNATURE = 2;
050    private static final int TAG_CERTS = 3;
051
052    public DVCSCertInfoBuilder(
053        DVCSRequestInformation dvReqInfo,
054        DigestInfo messageImprint,
055        ASN1Integer serialNumber,
056        DVCSTime responseTime)
057    {
058        this.dvReqInfo = dvReqInfo;
059        this.messageImprint = messageImprint;
060        this.serialNumber = serialNumber;
061        this.responseTime = responseTime;
062    }
063
064    public DVCSCertInfo build()
065    {
066
067        ASN1EncodableVector v = new ASN1EncodableVector();
068
069        if (version != DEFAULT_VERSION)
070        {
071            v.add(new ASN1Integer(version));
072        }
073        v.add(dvReqInfo);
074        v.add(messageImprint);
075        v.add(serialNumber);
076        v.add(responseTime);
077        if (dvStatus != null)
078        {
079            v.add(new DERTaggedObject(false, TAG_DV_STATUS, dvStatus));
080        }
081        if (policy != null)
082        {
083            v.add(new DERTaggedObject(false, TAG_POLICY, policy));
084        }
085        if (reqSignature != null)
086        {
087            v.add(new DERTaggedObject(false, TAG_REQ_SIGNATURE, reqSignature));
088        }
089        if (certs != null)
090        {
091            v.add(new DERTaggedObject(false, TAG_CERTS, certs));
092        }
093        if (extensions != null)
094        {
095            v.add(extensions);
096        }
097
098        return DVCSCertInfo.getInstance(new DERSequence(v));
099    }
100
101    public void setVersion(int version)
102    {
103        this.version = version;
104    }
105
106    public void setDvReqInfo(DVCSRequestInformation dvReqInfo)
107    {
108        this.dvReqInfo = dvReqInfo;
109    }
110
111    public void setMessageImprint(DigestInfo messageImprint)
112    {
113        this.messageImprint = messageImprint;
114    }
115
116    public void setSerialNumber(ASN1Integer serialNumber)
117    {
118        this.serialNumber = serialNumber;
119    }
120
121    public void setResponseTime(DVCSTime responseTime)
122    {
123        this.responseTime = responseTime;
124    }
125
126    public void setDvStatus(PKIStatusInfo dvStatus)
127    {
128        this.dvStatus = dvStatus;
129    }
130
131    public void setPolicy(PolicyInformation policy)
132    {
133        this.policy = policy;
134    }
135
136    public void setReqSignature(ASN1Set reqSignature)
137    {
138        this.reqSignature = reqSignature;
139    }
140
141    public void setCerts(TargetEtcChain[] certs)
142    {
143        this.certs = new DERSequence(certs);
144    }
145
146    public void setExtensions(Extensions extensions)
147    {
148        this.extensions = extensions;
149    }
150
151}