Home | History | Annotate | Download | only in ocsp
      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