1package org.bouncycastle.asn1.pkcs; 2 3import org.bouncycastle.asn1.ASN1Encodable; 4import org.bouncycastle.asn1.ASN1EncodableVector; 5import org.bouncycastle.asn1.ASN1Sequence; 6import org.bouncycastle.asn1.DERBitString; 7import org.bouncycastle.asn1.DERObject; 8import org.bouncycastle.asn1.DERSequence; 9import org.bouncycastle.asn1.x509.AlgorithmIdentifier; 10 11/** 12 * PKCS10 Certification request object. 13 * <pre> 14 * CertificationRequest ::= SEQUENCE { 15 * certificationRequestInfo CertificationRequestInfo, 16 * signatureAlgorithm AlgorithmIdentifier{{ SignatureAlgorithms }}, 17 * signature BIT STRING 18 * } 19 * </pre> 20 */ 21public class CertificationRequest 22 extends ASN1Encodable 23{ 24 protected CertificationRequestInfo reqInfo = null; 25 protected AlgorithmIdentifier sigAlgId = null; 26 protected DERBitString sigBits = null; 27 28 protected CertificationRequest() 29 { 30 } 31 32 public CertificationRequest( 33 CertificationRequestInfo requestInfo, 34 AlgorithmIdentifier algorithm, 35 DERBitString signature) 36 { 37 this.reqInfo = requestInfo; 38 this.sigAlgId = algorithm; 39 this.sigBits = signature; 40 } 41 42 public CertificationRequest( 43 ASN1Sequence seq) 44 { 45 reqInfo = CertificationRequestInfo.getInstance(seq.getObjectAt(0)); 46 sigAlgId = AlgorithmIdentifier.getInstance(seq.getObjectAt(1)); 47 sigBits = (DERBitString)seq.getObjectAt(2); 48 } 49 50 public CertificationRequestInfo getCertificationRequestInfo() 51 { 52 return reqInfo; 53 } 54 55 public AlgorithmIdentifier getSignatureAlgorithm() 56 { 57 return sigAlgId; 58 } 59 60 public DERBitString getSignature() 61 { 62 return sigBits; 63 } 64 65 public DERObject toASN1Object() 66 { 67 // Construct the CertificateRequest 68 ASN1EncodableVector v = new ASN1EncodableVector(); 69 70 v.add(reqInfo); 71 v.add(sigAlgId); 72 v.add(sigBits); 73 74 return new DERSequence(v); 75 } 76} 77