001package org.apache.commons.ssl.org.bouncycastle.asn1.crmf; 002 003import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1EncodableVector; 004import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Integer; 005import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Object; 006import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Primitive; 007import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Sequence; 008import org.apache.commons.ssl.org.bouncycastle.asn1.DERSequence; 009 010public class CertRequest 011 extends ASN1Object 012{ 013 private ASN1Integer certReqId; 014 private CertTemplate certTemplate; 015 private Controls controls; 016 017 private CertRequest(ASN1Sequence seq) 018 { 019 certReqId = new ASN1Integer(ASN1Integer.getInstance(seq.getObjectAt(0)).getValue()); 020 certTemplate = CertTemplate.getInstance(seq.getObjectAt(1)); 021 if (seq.size() > 2) 022 { 023 controls = Controls.getInstance(seq.getObjectAt(2)); 024 } 025 } 026 027 public static CertRequest getInstance(Object o) 028 { 029 if (o instanceof CertRequest) 030 { 031 return (CertRequest)o; 032 } 033 else if (o != null) 034 { 035 return new CertRequest(ASN1Sequence.getInstance(o)); 036 } 037 038 return null; 039 } 040 041 public CertRequest( 042 int certReqId, 043 CertTemplate certTemplate, 044 Controls controls) 045 { 046 this(new ASN1Integer(certReqId), certTemplate, controls); 047 } 048 049 public CertRequest( 050 ASN1Integer certReqId, 051 CertTemplate certTemplate, 052 Controls controls) 053 { 054 this.certReqId = certReqId; 055 this.certTemplate = certTemplate; 056 this.controls = controls; 057 } 058 059 public ASN1Integer getCertReqId() 060 { 061 return certReqId; 062 } 063 064 public CertTemplate getCertTemplate() 065 { 066 return certTemplate; 067 } 068 069 public Controls getControls() 070 { 071 return controls; 072 } 073 074 /** 075 * <pre> 076 * CertRequest ::= SEQUENCE { 077 * certReqId INTEGER, -- ID for matching request and reply 078 * certTemplate CertTemplate, -- Selected fields of cert to be issued 079 * controls Controls OPTIONAL } -- Attributes affecting issuance 080 * </pre> 081 * @return a basic ASN.1 object representation. 082 */ 083 public ASN1Primitive toASN1Primitive() 084 { 085 ASN1EncodableVector v = new ASN1EncodableVector(); 086 087 v.add(certReqId); 088 v.add(certTemplate); 089 090 if (controls != null) 091 { 092 v.add(controls); 093 } 094 095 return new DERSequence(v); 096 } 097}