blob: 5da097f5983d9a5400eb4d75e04090c6f5eb2810 [file] [log] [blame]
package org.bouncycastle.asn1.dvcs;
import org.bouncycastle.asn1.ASN1EncodableVector;
import org.bouncycastle.asn1.ASN1Integer;
import org.bouncycastle.asn1.ASN1Sequence;
import org.bouncycastle.asn1.ASN1Set;
import org.bouncycastle.asn1.DERSequence;
import org.bouncycastle.asn1.DERTaggedObject;
import org.bouncycastle.asn1.cmp.PKIStatusInfo;
import org.bouncycastle.asn1.x509.DigestInfo;
import org.bouncycastle.asn1.x509.Extensions;
import org.bouncycastle.asn1.x509.PolicyInformation;
/**
* <pre>
* DVCSCertInfo::= SEQUENCE {
* version Integer DEFAULT 1 ,
* dvReqInfo DVCSRequestInformation,
* messageImprint DigestInfo,
* serialNumber Integer,
* responseTime DVCSTime,
* dvStatus [0] PKIStatusInfo OPTIONAL,
* policy [1] PolicyInformation OPTIONAL,
* reqSignature [2] SignerInfos OPTIONAL,
* certs [3] SEQUENCE SIZE (1..MAX) OF
* TargetEtcChain OPTIONAL,
* extensions Extensions OPTIONAL
* }
* </pre>
*/
public class DVCSCertInfoBuilder
{
private int version = DEFAULT_VERSION;
private DVCSRequestInformation dvReqInfo;
private DigestInfo messageImprint;
private ASN1Integer serialNumber;
private DVCSTime responseTime;
private PKIStatusInfo dvStatus;
private PolicyInformation policy;
private ASN1Set reqSignature;
private ASN1Sequence certs;
private Extensions extensions;
private static final int DEFAULT_VERSION = 1;
private static final int TAG_DV_STATUS = 0;
private static final int TAG_POLICY = 1;
private static final int TAG_REQ_SIGNATURE = 2;
private static final int TAG_CERTS = 3;
public DVCSCertInfoBuilder(
DVCSRequestInformation dvReqInfo,
DigestInfo messageImprint,
ASN1Integer serialNumber,
DVCSTime responseTime)
{
this.dvReqInfo = dvReqInfo;
this.messageImprint = messageImprint;
this.serialNumber = serialNumber;
this.responseTime = responseTime;
}
public DVCSCertInfo build()
{
ASN1EncodableVector v = new ASN1EncodableVector();
if (version != DEFAULT_VERSION)
{
v.add(new ASN1Integer(version));
}
v.add(dvReqInfo);
v.add(messageImprint);
v.add(serialNumber);
v.add(responseTime);
if (dvStatus != null)
{
v.add(new DERTaggedObject(false, TAG_DV_STATUS, dvStatus));
}
if (policy != null)
{
v.add(new DERTaggedObject(false, TAG_POLICY, policy));
}
if (reqSignature != null)
{
v.add(new DERTaggedObject(false, TAG_REQ_SIGNATURE, reqSignature));
}
if (certs != null)
{
v.add(new DERTaggedObject(false, TAG_CERTS, certs));
}
if (extensions != null)
{
v.add(extensions);
}
return DVCSCertInfo.getInstance(new DERSequence(v));
}
public void setVersion(int version)
{
this.version = version;
}
public void setDvReqInfo(DVCSRequestInformation dvReqInfo)
{
this.dvReqInfo = dvReqInfo;
}
public void setMessageImprint(DigestInfo messageImprint)
{
this.messageImprint = messageImprint;
}
public void setSerialNumber(ASN1Integer serialNumber)
{
this.serialNumber = serialNumber;
}
public void setResponseTime(DVCSTime responseTime)
{
this.responseTime = responseTime;
}
public void setDvStatus(PKIStatusInfo dvStatus)
{
this.dvStatus = dvStatus;
}
public void setPolicy(PolicyInformation policy)
{
this.policy = policy;
}
public void setReqSignature(ASN1Set reqSignature)
{
this.reqSignature = reqSignature;
}
public void setCerts(TargetEtcChain[] certs)
{
this.certs = new DERSequence(certs);
}
public void setExtensions(Extensions extensions)
{
this.extensions = extensions;
}
}