001package org.apache.commons.ssl.org.bouncycastle.asn1.esf;
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.ASN1ObjectIdentifier;
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 CommitmentTypeIndication
011    extends ASN1Object
012{
013    private ASN1ObjectIdentifier   commitmentTypeId;
014    private ASN1Sequence          commitmentTypeQualifier;
015    
016    private CommitmentTypeIndication(
017        ASN1Sequence seq)
018    {
019        commitmentTypeId = (ASN1ObjectIdentifier)seq.getObjectAt(0);
020
021        if (seq.size() > 1)
022        {
023            commitmentTypeQualifier = (ASN1Sequence)seq.getObjectAt(1);
024        }
025    }
026
027    public CommitmentTypeIndication(
028        ASN1ObjectIdentifier commitmentTypeId)
029    {
030        this.commitmentTypeId = commitmentTypeId;
031    }
032
033    public CommitmentTypeIndication(
034        ASN1ObjectIdentifier commitmentTypeId,
035        ASN1Sequence        commitmentTypeQualifier)
036    {
037        this.commitmentTypeId = commitmentTypeId;
038        this.commitmentTypeQualifier = commitmentTypeQualifier;
039    }
040
041    public static CommitmentTypeIndication getInstance(
042        Object obj)
043    {
044        if (obj == null || obj instanceof CommitmentTypeIndication)
045        {
046            return (CommitmentTypeIndication)obj;
047        }
048
049        return new CommitmentTypeIndication(ASN1Sequence.getInstance(obj));
050    }
051
052    public ASN1ObjectIdentifier getCommitmentTypeId()
053    {
054        return commitmentTypeId;
055    }
056    
057    public ASN1Sequence getCommitmentTypeQualifier()
058    {
059        return commitmentTypeQualifier;
060    }
061    
062    /**
063     * <pre>
064     * CommitmentTypeIndication ::= SEQUENCE {
065     *      commitmentTypeId   CommitmentTypeIdentifier,
066     *      commitmentTypeQualifier   SEQUENCE SIZE (1..MAX) OF
067     *              CommitmentTypeQualifier OPTIONAL }
068     * </pre>
069     */ 
070    public ASN1Primitive toASN1Primitive()
071    {
072        ASN1EncodableVector v = new ASN1EncodableVector();
073        
074        v.add(commitmentTypeId);
075
076        if (commitmentTypeQualifier != null)
077        {
078            v.add(commitmentTypeQualifier);
079        }
080        
081        return new DERSequence(v);
082    }
083}