001package org.apache.commons.ssl.org.bouncycastle.asn1.x509.qualified; 002 003import java.util.Enumeration; 004 005import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Encodable; 006import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1EncodableVector; 007import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Object; 008import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1ObjectIdentifier; 009import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Primitive; 010import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Sequence; 011import org.apache.commons.ssl.org.bouncycastle.asn1.DERSequence; 012 013/** 014 * The QCStatement object. 015 * <pre> 016 * QCStatement ::= SEQUENCE { 017 * statementId OBJECT IDENTIFIER, 018 * statementInfo ANY DEFINED BY statementId OPTIONAL} 019 * </pre> 020 */ 021 022public class QCStatement 023 extends ASN1Object 024 implements ETSIQCObjectIdentifiers, RFC3739QCObjectIdentifiers 025{ 026 ASN1ObjectIdentifier qcStatementId; 027 ASN1Encodable qcStatementInfo; 028 029 public static QCStatement getInstance( 030 Object obj) 031 { 032 if (obj instanceof QCStatement) 033 { 034 return (QCStatement)obj; 035 } 036 if (obj != null) 037 { 038 return new QCStatement(ASN1Sequence.getInstance(obj)); 039 } 040 041 return null; 042 } 043 044 private QCStatement( 045 ASN1Sequence seq) 046 { 047 Enumeration e = seq.getObjects(); 048 049 // qcStatementId 050 qcStatementId = ASN1ObjectIdentifier.getInstance(e.nextElement()); 051 // qcstatementInfo 052 if (e.hasMoreElements()) 053 { 054 qcStatementInfo = (ASN1Encodable) e.nextElement(); 055 } 056 } 057 058 public QCStatement( 059 ASN1ObjectIdentifier qcStatementId) 060 { 061 this.qcStatementId = qcStatementId; 062 this.qcStatementInfo = null; 063 } 064 065 public QCStatement( 066 ASN1ObjectIdentifier qcStatementId, 067 ASN1Encodable qcStatementInfo) 068 { 069 this.qcStatementId = qcStatementId; 070 this.qcStatementInfo = qcStatementInfo; 071 } 072 073 public ASN1ObjectIdentifier getStatementId() 074 { 075 return qcStatementId; 076 } 077 078 public ASN1Encodable getStatementInfo() 079 { 080 return qcStatementInfo; 081 } 082 083 public ASN1Primitive toASN1Primitive() 084 { 085 ASN1EncodableVector seq = new ASN1EncodableVector(); 086 seq.add(qcStatementId); 087 088 if (qcStatementInfo != null) 089 { 090 seq.add(qcStatementInfo); 091 } 092 093 return new DERSequence(seq); 094 } 095}