1 package org.bouncycastle.asn1.dvcs;
2 
3 import org.bouncycastle.asn1.ASN1EncodableVector;
4 import org.bouncycastle.asn1.ASN1Integer;
5 import org.bouncycastle.asn1.ASN1Sequence;
6 import org.bouncycastle.asn1.ASN1Set;
7 import org.bouncycastle.asn1.DERSequence;
8 import org.bouncycastle.asn1.DERTaggedObject;
9 import org.bouncycastle.asn1.cmp.PKIStatusInfo;
10 import org.bouncycastle.asn1.x509.DigestInfo;
11 import org.bouncycastle.asn1.x509.Extensions;
12 import org.bouncycastle.asn1.x509.PolicyInformation;
13 
14 /**
15  * <pre>
16  *     DVCSCertInfo::= SEQUENCE  {
17  *         version             Integer DEFAULT 1 ,
18  *         dvReqInfo           DVCSRequestInformation,
19  *         messageImprint      DigestInfo,
20  *         serialNumber        Integer,
21  *         responseTime        DVCSTime,
22  *         dvStatus            [0] PKIStatusInfo OPTIONAL,
23  *         policy              [1] PolicyInformation OPTIONAL,
24  *         reqSignature        [2] SignerInfos  OPTIONAL,
25  *         certs               [3] SEQUENCE SIZE (1..MAX) OF
26  *                                 TargetEtcChain OPTIONAL,
27  *         extensions          Extensions OPTIONAL
28  *     }
29  * </pre>
30  */
31 
32 public class DVCSCertInfoBuilder
33 {
34 
35     private int version = DEFAULT_VERSION;
36     private DVCSRequestInformation dvReqInfo;
37     private DigestInfo messageImprint;
38     private ASN1Integer serialNumber;
39     private DVCSTime responseTime;
40     private PKIStatusInfo dvStatus;
41     private PolicyInformation policy;
42     private ASN1Set reqSignature;
43     private ASN1Sequence certs;
44     private Extensions extensions;
45 
46     private static final int DEFAULT_VERSION = 1;
47     private static final int TAG_DV_STATUS = 0;
48     private static final int TAG_POLICY = 1;
49     private static final int TAG_REQ_SIGNATURE = 2;
50     private static final int TAG_CERTS = 3;
51 
DVCSCertInfoBuilder( DVCSRequestInformation dvReqInfo, DigestInfo messageImprint, ASN1Integer serialNumber, DVCSTime responseTime)52     public DVCSCertInfoBuilder(
53         DVCSRequestInformation dvReqInfo,
54         DigestInfo messageImprint,
55         ASN1Integer serialNumber,
56         DVCSTime responseTime)
57     {
58         this.dvReqInfo = dvReqInfo;
59         this.messageImprint = messageImprint;
60         this.serialNumber = serialNumber;
61         this.responseTime = responseTime;
62     }
63 
build()64     public DVCSCertInfo build()
65     {
66         ASN1EncodableVector v = new ASN1EncodableVector(10);
67 
68         if (version != DEFAULT_VERSION)
69         {
70             v.add(new ASN1Integer(version));
71         }
72         v.add(dvReqInfo);
73         v.add(messageImprint);
74         v.add(serialNumber);
75         v.add(responseTime);
76         if (dvStatus != null)
77         {
78             v.add(new DERTaggedObject(false, TAG_DV_STATUS, dvStatus));
79         }
80         if (policy != null)
81         {
82             v.add(new DERTaggedObject(false, TAG_POLICY, policy));
83         }
84         if (reqSignature != null)
85         {
86             v.add(new DERTaggedObject(false, TAG_REQ_SIGNATURE, reqSignature));
87         }
88         if (certs != null)
89         {
90             v.add(new DERTaggedObject(false, TAG_CERTS, certs));
91         }
92         if (extensions != null)
93         {
94             v.add(extensions);
95         }
96 
97         return DVCSCertInfo.getInstance(new DERSequence(v));
98     }
99 
setVersion(int version)100     public void setVersion(int version)
101     {
102         this.version = version;
103     }
104 
setDvReqInfo(DVCSRequestInformation dvReqInfo)105     public void setDvReqInfo(DVCSRequestInformation dvReqInfo)
106     {
107         this.dvReqInfo = dvReqInfo;
108     }
109 
setMessageImprint(DigestInfo messageImprint)110     public void setMessageImprint(DigestInfo messageImprint)
111     {
112         this.messageImprint = messageImprint;
113     }
114 
setSerialNumber(ASN1Integer serialNumber)115     public void setSerialNumber(ASN1Integer serialNumber)
116     {
117         this.serialNumber = serialNumber;
118     }
119 
setResponseTime(DVCSTime responseTime)120     public void setResponseTime(DVCSTime responseTime)
121     {
122         this.responseTime = responseTime;
123     }
124 
setDvStatus(PKIStatusInfo dvStatus)125     public void setDvStatus(PKIStatusInfo dvStatus)
126     {
127         this.dvStatus = dvStatus;
128     }
129 
setPolicy(PolicyInformation policy)130     public void setPolicy(PolicyInformation policy)
131     {
132         this.policy = policy;
133     }
134 
setReqSignature(ASN1Set reqSignature)135     public void setReqSignature(ASN1Set reqSignature)
136     {
137         this.reqSignature = reqSignature;
138     }
139 
setCerts(TargetEtcChain[] certs)140     public void setCerts(TargetEtcChain[] certs)
141     {
142         this.certs = new DERSequence(certs);
143     }
144 
setExtensions(Extensions extensions)145     public void setExtensions(Extensions extensions)
146     {
147         this.extensions = extensions;
148     }
149 
150 }
151