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