1 package org.bouncycastle.asn1.ocsp; 2 3 import org.bouncycastle.asn1.ASN1EncodableVector; 4 import org.bouncycastle.asn1.ASN1Object; 5 import org.bouncycastle.asn1.ASN1Primitive; 6 import org.bouncycastle.asn1.ASN1Sequence; 7 import org.bouncycastle.asn1.ASN1TaggedObject; 8 import org.bouncycastle.asn1.DERSequence; 9 import org.bouncycastle.asn1.DERTaggedObject; 10 import org.bouncycastle.asn1.x509.Extensions; 11 12 public class Request 13 extends ASN1Object 14 { 15 CertID reqCert; 16 Extensions singleRequestExtensions; 17 18 public Request( 19 CertID reqCert, 20 Extensions singleRequestExtensions) 21 { 22 this.reqCert = reqCert; 23 this.singleRequestExtensions = singleRequestExtensions; 24 } 25 26 private Request( 27 ASN1Sequence seq) 28 { 29 reqCert = CertID.getInstance(seq.getObjectAt(0)); 30 31 if (seq.size() == 2) 32 { 33 singleRequestExtensions = Extensions.getInstance( 34 (ASN1TaggedObject)seq.getObjectAt(1), true); 35 } 36 } 37 38 public static Request getInstance( 39 ASN1TaggedObject obj, 40 boolean explicit) 41 { 42 return getInstance(ASN1Sequence.getInstance(obj, explicit)); 43 } 44 45 public static Request getInstance( 46 Object obj) 47 { 48 if (obj instanceof Request) 49 { 50 return (Request)obj; 51 } 52 else if (obj != null) 53 { 54 return new Request(ASN1Sequence.getInstance(obj)); 55 } 56 57 return null; 58 } 59 60 public CertID getReqCert() 61 { 62 return reqCert; 63 } 64 65 public Extensions getSingleRequestExtensions() 66 { 67 return singleRequestExtensions; 68 } 69 70 /** 71 * Produce an object suitable for an ASN1OutputStream. 72 * <pre> 73 * Request ::= SEQUENCE { 74 * reqCert CertID, 75 * singleRequestExtensions [0] EXPLICIT Extensions OPTIONAL } 76 * </pre> 77 */ 78 public ASN1Primitive toASN1Primitive() 79 { 80 ASN1EncodableVector v = new ASN1EncodableVector(); 81 82 v.add(reqCert); 83 84 if (singleRequestExtensions != null) 85 { 86 v.add(new DERTaggedObject(true, 0, singleRequestExtensions)); 87 } 88 89 return new DERSequence(v); 90 } 91 } 92