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;

    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> * 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; } }