001package org.apache.commons.ssl.org.bouncycastle.asn1.esf; 002 003import java.math.BigInteger; 004 005import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1EncodableVector; 006import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Integer; 007import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Object; 008import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Primitive; 009import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Sequence; 010import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1UTCTime; 011import org.apache.commons.ssl.org.bouncycastle.asn1.DERSequence; 012import org.apache.commons.ssl.org.bouncycastle.asn1.x500.X500Name; 013 014/** 015 * <pre> 016 * CrlIdentifier ::= SEQUENCE 017 * { 018 * crlissuer Name, 019 * crlIssuedTime UTCTime, 020 * crlNumber INTEGER OPTIONAL 021 * } 022 * </pre> 023 */ 024public class CrlIdentifier 025 extends ASN1Object 026{ 027 private X500Name crlIssuer; 028 private ASN1UTCTime crlIssuedTime; 029 private ASN1Integer crlNumber; 030 031 public static CrlIdentifier getInstance(Object obj) 032 { 033 if (obj instanceof CrlIdentifier) 034 { 035 return (CrlIdentifier)obj; 036 } 037 else if (obj != null) 038 { 039 return new CrlIdentifier(ASN1Sequence.getInstance(obj)); 040 } 041 042 return null; 043 } 044 045 private CrlIdentifier(ASN1Sequence seq) 046 { 047 if (seq.size() < 2 || seq.size() > 3) 048 { 049 throw new IllegalArgumentException(); 050 } 051 this.crlIssuer = X500Name.getInstance(seq.getObjectAt(0)); 052 this.crlIssuedTime = ASN1UTCTime.getInstance(seq.getObjectAt(1)); 053 if (seq.size() > 2) 054 { 055 this.crlNumber = ASN1Integer.getInstance(seq.getObjectAt(2)); 056 } 057 } 058 059 public CrlIdentifier(X500Name crlIssuer, ASN1UTCTime crlIssuedTime) 060 { 061 this(crlIssuer, crlIssuedTime, null); 062 } 063 064 public CrlIdentifier(X500Name crlIssuer, ASN1UTCTime crlIssuedTime, 065 BigInteger crlNumber) 066 { 067 this.crlIssuer = crlIssuer; 068 this.crlIssuedTime = crlIssuedTime; 069 if (null != crlNumber) 070 { 071 this.crlNumber = new ASN1Integer(crlNumber); 072 } 073 } 074 075 public X500Name getCrlIssuer() 076 { 077 return this.crlIssuer; 078 } 079 080 public ASN1UTCTime getCrlIssuedTime() 081 { 082 return this.crlIssuedTime; 083 } 084 085 public BigInteger getCrlNumber() 086 { 087 if (null == this.crlNumber) 088 { 089 return null; 090 } 091 return this.crlNumber.getValue(); 092 } 093 094 public ASN1Primitive toASN1Primitive() 095 { 096 ASN1EncodableVector v = new ASN1EncodableVector(); 097 v.add(this.crlIssuer.toASN1Primitive()); 098 v.add(this.crlIssuedTime); 099 if (null != this.crlNumber) 100 { 101 v.add(this.crlNumber); 102 } 103 return new DERSequence(v); 104 } 105 106}