001package org.apache.commons.ssl.org.bouncycastle.asn1.pkcs; 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.DERBitString; 008import org.apache.commons.ssl.org.bouncycastle.asn1.DERSequence; 009import org.apache.commons.ssl.org.bouncycastle.asn1.x509.AlgorithmIdentifier; 010 011/** 012 * PKCS10 Certification request object. 013 * <pre> 014 * CertificationRequest ::= SEQUENCE { 015 * certificationRequestInfo CertificationRequestInfo, 016 * signatureAlgorithm AlgorithmIdentifier{{ SignatureAlgorithms }}, 017 * signature BIT STRING 018 * } 019 * </pre> 020 */ 021public class CertificationRequest 022 extends ASN1Object 023{ 024 protected CertificationRequestInfo reqInfo = null; 025 protected AlgorithmIdentifier sigAlgId = null; 026 protected DERBitString sigBits = null; 027 028 public static CertificationRequest getInstance(Object o) 029 { 030 if (o instanceof CertificationRequest) 031 { 032 return (CertificationRequest)o; 033 } 034 035 if (o != null) 036 { 037 return new CertificationRequest(ASN1Sequence.getInstance(o)); 038 } 039 040 return null; 041 } 042 043 protected CertificationRequest() 044 { 045 } 046 047 public CertificationRequest( 048 CertificationRequestInfo requestInfo, 049 AlgorithmIdentifier algorithm, 050 DERBitString signature) 051 { 052 this.reqInfo = requestInfo; 053 this.sigAlgId = algorithm; 054 this.sigBits = signature; 055 } 056 057 public CertificationRequest( 058 ASN1Sequence seq) 059 { 060 reqInfo = CertificationRequestInfo.getInstance(seq.getObjectAt(0)); 061 sigAlgId = AlgorithmIdentifier.getInstance(seq.getObjectAt(1)); 062 sigBits = (DERBitString)seq.getObjectAt(2); 063 } 064 065 public CertificationRequestInfo getCertificationRequestInfo() 066 { 067 return reqInfo; 068 } 069 070 public AlgorithmIdentifier getSignatureAlgorithm() 071 { 072 return sigAlgId; 073 } 074 075 public DERBitString getSignature() 076 { 077 return sigBits; 078 } 079 080 public ASN1Primitive toASN1Primitive() 081 { 082 // Construct the CertificateRequest 083 ASN1EncodableVector v = new ASN1EncodableVector(); 084 085 v.add(reqInfo); 086 v.add(sigAlgId); 087 v.add(sigBits); 088 089 return new DERSequence(v); 090 } 091}