001package org.apache.commons.ssl.org.bouncycastle.asn1.esf; 002 003import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Encodable; 004import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1EncodableVector; 005import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Object; 006import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1ObjectIdentifier; 007import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Primitive; 008import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Sequence; 009import org.apache.commons.ssl.org.bouncycastle.asn1.DERSequence; 010 011/** 012 * Commitment type qualifiers, used in the Commitment-Type-Indication attribute (RFC3126). 013 * 014 * <pre> 015 * CommitmentTypeQualifier ::= SEQUENCE { 016 * commitmentTypeIdentifier CommitmentTypeIdentifier, 017 * qualifier ANY DEFINED BY commitmentTypeIdentifier OPTIONAL } 018 * </pre> 019 */ 020public class CommitmentTypeQualifier 021 extends ASN1Object 022{ 023 private ASN1ObjectIdentifier commitmentTypeIdentifier; 024 private ASN1Encodable qualifier; 025 026 /** 027 * Creates a new <code>CommitmentTypeQualifier</code> instance. 028 * 029 * @param commitmentTypeIdentifier a <code>CommitmentTypeIdentifier</code> value 030 */ 031 public CommitmentTypeQualifier( 032 ASN1ObjectIdentifier commitmentTypeIdentifier) 033 { 034 this(commitmentTypeIdentifier, null); 035 } 036 037 /** 038 * Creates a new <code>CommitmentTypeQualifier</code> instance. 039 * 040 * @param commitmentTypeIdentifier a <code>CommitmentTypeIdentifier</code> value 041 * @param qualifier the qualifier, defined by the above field. 042 */ 043 public CommitmentTypeQualifier( 044 ASN1ObjectIdentifier commitmentTypeIdentifier, 045 ASN1Encodable qualifier) 046 { 047 this.commitmentTypeIdentifier = commitmentTypeIdentifier; 048 this.qualifier = qualifier; 049 } 050 051 /** 052 * Creates a new <code>CommitmentTypeQualifier</code> instance. 053 * 054 * @param as <code>CommitmentTypeQualifier</code> structure 055 * encoded as an ASN1Sequence. 056 */ 057 private CommitmentTypeQualifier( 058 ASN1Sequence as) 059 { 060 commitmentTypeIdentifier = (ASN1ObjectIdentifier)as.getObjectAt(0); 061 062 if (as.size() > 1) 063 { 064 qualifier = as.getObjectAt(1); 065 } 066 } 067 068 public static CommitmentTypeQualifier getInstance(Object as) 069 { 070 if (as instanceof CommitmentTypeQualifier) 071 { 072 return (CommitmentTypeQualifier)as; 073 } 074 else if (as != null) 075 { 076 return new CommitmentTypeQualifier(ASN1Sequence.getInstance(as)); 077 } 078 079 return null; 080 } 081 082 public ASN1ObjectIdentifier getCommitmentTypeIdentifier() 083 { 084 return commitmentTypeIdentifier; 085 } 086 087 public ASN1Encodable getQualifier() 088 { 089 return qualifier; 090 } 091 092 /** 093 * Returns a DER-encodable representation of this instance. 094 * 095 * @return a <code>ASN1Primitive</code> value 096 */ 097 public ASN1Primitive toASN1Primitive() 098 { 099 ASN1EncodableVector dev = new ASN1EncodableVector(); 100 dev.add(commitmentTypeIdentifier); 101 if (qualifier != null) 102 { 103 dev.add(qualifier); 104 } 105 106 return new DERSequence(dev); 107 } 108}