001package org.apache.commons.ssl.org.bouncycastle.asn1.cmp; 002 003import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1EncodableVector; 004import org.apache.commons.ssl.org.bouncycastle.asn1.DERSequence; 005import org.apache.commons.ssl.org.bouncycastle.asn1.DERTaggedObject; 006import org.apache.commons.ssl.org.bouncycastle.asn1.crmf.CertId; 007import org.apache.commons.ssl.org.bouncycastle.asn1.x509.CertificateList; 008 009public class RevRepContentBuilder 010{ 011 private ASN1EncodableVector status = new ASN1EncodableVector(); 012 private ASN1EncodableVector revCerts = new ASN1EncodableVector(); 013 private ASN1EncodableVector crls = new ASN1EncodableVector(); 014 015 public RevRepContentBuilder add(PKIStatusInfo status) 016 { 017 this.status.add(status); 018 019 return this; 020 } 021 022 public RevRepContentBuilder add(PKIStatusInfo status, CertId certId) 023 { 024 if (this.status.size() != this.revCerts.size()) 025 { 026 throw new IllegalStateException("status and revCerts sequence must be in common order"); 027 } 028 this.status.add(status); 029 this.revCerts.add(certId); 030 031 return this; 032 } 033 034 public RevRepContentBuilder addCrl(CertificateList crl) 035 { 036 this.crls.add(crl); 037 038 return this; 039 } 040 041 public RevRepContent build() 042 { 043 ASN1EncodableVector v = new ASN1EncodableVector(); 044 045 v.add(new DERSequence(status)); 046 047 if (revCerts.size() != 0) 048 { 049 v.add(new DERTaggedObject(true, 0, new DERSequence(revCerts))); 050 } 051 052 if (crls.size() != 0) 053 { 054 v.add(new DERTaggedObject(true, 1, new DERSequence(crls))); 055 } 056 057 return RevRepContent.getInstance(new DERSequence(v)); 058 } 059}