001package org.apache.commons.ssl.org.bouncycastle.asn1.ocsp; 002 003import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1EncodableVector; 004import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Enumerated; 005import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1GeneralizedTime; 006import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Object; 007import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Primitive; 008import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Sequence; 009import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1TaggedObject; 010import org.apache.commons.ssl.org.bouncycastle.asn1.DERSequence; 011import org.apache.commons.ssl.org.bouncycastle.asn1.DERTaggedObject; 012import org.apache.commons.ssl.org.bouncycastle.asn1.x509.CRLReason; 013 014public class RevokedInfo 015 extends ASN1Object 016{ 017 private ASN1GeneralizedTime revocationTime; 018 private CRLReason revocationReason; 019 020 public RevokedInfo( 021 ASN1GeneralizedTime revocationTime, 022 CRLReason revocationReason) 023 { 024 this.revocationTime = revocationTime; 025 this.revocationReason = revocationReason; 026 } 027 028 private RevokedInfo( 029 ASN1Sequence seq) 030 { 031 this.revocationTime = ASN1GeneralizedTime.getInstance(seq.getObjectAt(0)); 032 033 if (seq.size() > 1) 034 { 035 this.revocationReason = CRLReason.getInstance(ASN1Enumerated.getInstance( 036 (ASN1TaggedObject)seq.getObjectAt(1), true)); 037 } 038 } 039 040 public static RevokedInfo getInstance( 041 ASN1TaggedObject obj, 042 boolean explicit) 043 { 044 return getInstance(ASN1Sequence.getInstance(obj, explicit)); 045 } 046 047 public static RevokedInfo getInstance( 048 Object obj) 049 { 050 if (obj instanceof RevokedInfo) 051 { 052 return (RevokedInfo)obj; 053 } 054 else if (obj != null) 055 { 056 return new RevokedInfo(ASN1Sequence.getInstance(obj)); 057 } 058 059 return null; 060 } 061 062 public ASN1GeneralizedTime getRevocationTime() 063 { 064 return revocationTime; 065 } 066 067 public CRLReason getRevocationReason() 068 { 069 return revocationReason; 070 } 071 072 /** 073 * Produce an object suitable for an ASN1OutputStream. 074 * <pre> 075 * RevokedInfo ::= SEQUENCE { 076 * revocationTime GeneralizedTime, 077 * revocationReason [0] EXPLICIT CRLReason OPTIONAL } 078 * </pre> 079 */ 080 public ASN1Primitive toASN1Primitive() 081 { 082 ASN1EncodableVector v = new ASN1EncodableVector(); 083 084 v.add(revocationTime); 085 if (revocationReason != null) 086 { 087 v.add(new DERTaggedObject(true, 0, revocationReason)); 088 } 089 090 return new DERSequence(v); 091 } 092}