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.ASN1Object; 005import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Primitive; 006import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Sequence; 007import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1TaggedObject; 008import org.apache.commons.ssl.org.bouncycastle.asn1.DERSequence; 009import org.apache.commons.ssl.org.bouncycastle.asn1.DERTaggedObject; 010 011public class CertRepMessage 012 extends ASN1Object 013{ 014 private ASN1Sequence caPubs; 015 private ASN1Sequence response; 016 017 private CertRepMessage(ASN1Sequence seq) 018 { 019 int index = 0; 020 021 if (seq.size() > 1) 022 { 023 caPubs = ASN1Sequence.getInstance((ASN1TaggedObject)seq.getObjectAt(index++), true); 024 } 025 026 response = ASN1Sequence.getInstance(seq.getObjectAt(index)); 027 } 028 029 public static CertRepMessage getInstance(Object o) 030 { 031 if (o instanceof CertRepMessage) 032 { 033 return (CertRepMessage)o; 034 } 035 036 if (o != null) 037 { 038 return new CertRepMessage(ASN1Sequence.getInstance(o)); 039 } 040 041 return null; 042 } 043 044 public CertRepMessage(CMPCertificate[] caPubs, CertResponse[] response) 045 { 046 if (response == null) 047 { 048 throw new IllegalArgumentException("'response' cannot be null"); 049 } 050 051 if (caPubs != null) 052 { 053 ASN1EncodableVector v = new ASN1EncodableVector(); 054 for (int i = 0; i < caPubs.length; i++) 055 { 056 v.add(caPubs[i]); 057 } 058 this.caPubs = new DERSequence(v); 059 } 060 061 { 062 ASN1EncodableVector v = new ASN1EncodableVector(); 063 for (int i = 0; i < response.length; i++) 064 { 065 v.add(response[i]); 066 } 067 this.response = new DERSequence(v); 068 } 069 } 070 071 public CMPCertificate[] getCaPubs() 072 { 073 if (caPubs == null) 074 { 075 return null; 076 } 077 078 CMPCertificate[] results = new CMPCertificate[caPubs.size()]; 079 080 for (int i = 0; i != results.length; i++) 081 { 082 results[i] = CMPCertificate.getInstance(caPubs.getObjectAt(i)); 083 } 084 085 return results; 086 } 087 088 public CertResponse[] getResponse() 089 { 090 CertResponse[] results = new CertResponse[response.size()]; 091 092 for (int i = 0; i != results.length; i++) 093 { 094 results[i] = CertResponse.getInstance(response.getObjectAt(i)); 095 } 096 097 return results; 098 } 099 100 /** 101 * <pre> 102 * CertRepMessage ::= SEQUENCE { 103 * caPubs [1] SEQUENCE SIZE (1..MAX) OF CMPCertificate 104 * OPTIONAL, 105 * response SEQUENCE OF CertResponse 106 * } 107 * </pre> 108 * @return a basic ASN.1 object representation. 109 */ 110 public ASN1Primitive toASN1Primitive() 111 { 112 ASN1EncodableVector v = new ASN1EncodableVector(); 113 114 if (caPubs != null) 115 { 116 v.add(new DERTaggedObject(true, 1, caPubs)); 117 } 118 119 v.add(response); 120 121 return new DERSequence(v); 122 } 123}