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}