14eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Rootpackage org.bouncycastle.asn1.ocsp; 24eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root 34eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Rootimport java.util.Enumeration; 44eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root 54eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Rootimport org.bouncycastle.asn1.ASN1EncodableVector; 64eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Rootimport org.bouncycastle.asn1.ASN1GeneralizedTime; 74eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Rootimport org.bouncycastle.asn1.ASN1Integer; 84eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Rootimport org.bouncycastle.asn1.ASN1Object; 94eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Rootimport org.bouncycastle.asn1.ASN1Primitive; 104eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Rootimport org.bouncycastle.asn1.ASN1Sequence; 114eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Rootimport org.bouncycastle.asn1.ASN1TaggedObject; 124eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Rootimport org.bouncycastle.asn1.DERIA5String; 134eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Rootimport org.bouncycastle.asn1.DERSequence; 144eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Rootimport org.bouncycastle.asn1.DERTaggedObject; 154eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root 164eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Rootpublic class CrlID 174eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root extends ASN1Object 184eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root{ 194eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root private DERIA5String crlUrl; 204eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root private ASN1Integer crlNum; 214eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root private ASN1GeneralizedTime crlTime; 224eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root 234eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root private CrlID( 244eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root ASN1Sequence seq) 254eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root { 264eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root Enumeration e = seq.getObjects(); 274eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root 284eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root while (e.hasMoreElements()) 294eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root { 304eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root ASN1TaggedObject o = (ASN1TaggedObject)e.nextElement(); 314eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root 324eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root switch (o.getTagNo()) 334eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root { 344eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root case 0: 354eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root crlUrl = DERIA5String.getInstance(o, true); 364eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root break; 374eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root case 1: 384eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root crlNum = ASN1Integer.getInstance(o, true); 394eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root break; 404eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root case 2: 414eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root crlTime = ASN1GeneralizedTime.getInstance(o, true); 424eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root break; 434eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root default: 444eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root throw new IllegalArgumentException( 454eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root "unknown tag number: " + o.getTagNo()); 464eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root } 474eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root } 484eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root } 494eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root 504eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root public static CrlID getInstance( 514eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root Object obj) 524eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root { 534eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root if (obj instanceof CrlID) 544eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root { 554eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root return (CrlID)obj; 564eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root } 574eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root else if (obj != null) 584eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root { 594eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root return new CrlID(ASN1Sequence.getInstance(obj)); 604eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root } 614eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root 624eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root return null; 634eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root } 644eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root 654eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root public DERIA5String getCrlUrl() 664eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root { 674eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root return crlUrl; 684eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root } 694eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root 704eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root public ASN1Integer getCrlNum() 714eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root { 724eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root return crlNum; 734eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root } 744eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root 754eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root public ASN1GeneralizedTime getCrlTime() 764eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root { 774eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root return crlTime; 784eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root } 794eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root 804eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root /** 814eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root * Produce an object suitable for an ASN1OutputStream. 824eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root * <pre> 834eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root * CrlID ::= SEQUENCE { 844eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root * crlUrl [0] EXPLICIT IA5String OPTIONAL, 854eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root * crlNum [1] EXPLICIT INTEGER OPTIONAL, 864eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root * crlTime [2] EXPLICIT GeneralizedTime OPTIONAL } 874eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root * </pre> 884eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root */ 894eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root public ASN1Primitive toASN1Primitive() 904eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root { 914eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root ASN1EncodableVector v = new ASN1EncodableVector(); 924eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root 934eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root if (crlUrl != null) 944eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root { 954eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root v.add(new DERTaggedObject(true, 0, crlUrl)); 964eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root } 974eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root 984eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root if (crlNum != null) 994eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root { 1004eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root v.add(new DERTaggedObject(true, 1, crlNum)); 1014eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root } 1024eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root 1034eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root if (crlTime != null) 1044eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root { 1054eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root v.add(new DERTaggedObject(true, 2, crlTime)); 1064eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root } 1074eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root 1084eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root return new DERSequence(v); 1094eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root } 1104eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root} 111