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.DERSequence; 008import org.apache.commons.ssl.org.bouncycastle.asn1.crmf.CertTemplate; 009import org.apache.commons.ssl.org.bouncycastle.asn1.x509.Extensions; 010import org.apache.commons.ssl.org.bouncycastle.asn1.x509.X509Extensions; 011 012public class RevDetails 013 extends ASN1Object 014{ 015 private CertTemplate certDetails; 016 private Extensions crlEntryDetails; 017 018 private RevDetails(ASN1Sequence seq) 019 { 020 certDetails = CertTemplate.getInstance(seq.getObjectAt(0)); 021 if (seq.size() > 1) 022 { 023 crlEntryDetails = Extensions.getInstance(seq.getObjectAt(1)); 024 } 025 } 026 027 public static RevDetails getInstance(Object o) 028 { 029 if (o instanceof RevDetails) 030 { 031 return (RevDetails)o; 032 } 033 034 if (o != null) 035 { 036 return new RevDetails(ASN1Sequence.getInstance(o)); 037 } 038 039 return null; 040 } 041 042 public RevDetails(CertTemplate certDetails) 043 { 044 this.certDetails = certDetails; 045 } 046 047 /** 048 * @deprecated use method taking Extensions 049 * @param certDetails 050 * @param crlEntryDetails 051 */ 052 public RevDetails(CertTemplate certDetails, X509Extensions crlEntryDetails) 053 { 054 this.certDetails = certDetails; 055 this.crlEntryDetails = Extensions.getInstance(crlEntryDetails.toASN1Primitive()); 056 } 057 058 public RevDetails(CertTemplate certDetails, Extensions crlEntryDetails) 059 { 060 this.certDetails = certDetails; 061 this.crlEntryDetails = crlEntryDetails; 062 } 063 064 public CertTemplate getCertDetails() 065 { 066 return certDetails; 067 } 068 069 public Extensions getCrlEntryDetails() 070 { 071 return crlEntryDetails; 072 } 073 074 /** 075 * <pre> 076 * RevDetails ::= SEQUENCE { 077 * certDetails CertTemplate, 078 * -- allows requester to specify as much as they can about 079 * -- the cert. for which revocation is requested 080 * -- (e.g., for cases in which serialNumber is not available) 081 * crlEntryDetails Extensions OPTIONAL 082 * -- requested crlEntryExtensions 083 * } 084 * </pre> 085 * @return a basic ASN.1 object representation. 086 */ 087 public ASN1Primitive toASN1Primitive() 088 { 089 ASN1EncodableVector v = new ASN1EncodableVector(); 090 091 v.add(certDetails); 092 093 if (crlEntryDetails != null) 094 { 095 v.add(crlEntryDetails); 096 } 097 098 return new DERSequence(v); 099 } 100}