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
011public class SigPolicyQualifierInfo
012    extends ASN1Object
013{
014    private ASN1ObjectIdentifier  sigPolicyQualifierId;
015    private ASN1Encodable         sigQualifier;
016
017    public SigPolicyQualifierInfo(
018        ASN1ObjectIdentifier   sigPolicyQualifierId,
019        ASN1Encodable          sigQualifier)
020    {
021        this.sigPolicyQualifierId = sigPolicyQualifierId;
022        this.sigQualifier = sigQualifier;
023    }
024
025    private SigPolicyQualifierInfo(
026        ASN1Sequence seq)
027    {
028        sigPolicyQualifierId = ASN1ObjectIdentifier.getInstance(seq.getObjectAt(0));
029        sigQualifier = seq.getObjectAt(1);
030    }
031
032    public static SigPolicyQualifierInfo getInstance(
033        Object obj)
034    {
035        if (obj instanceof SigPolicyQualifierInfo)
036        {
037            return (SigPolicyQualifierInfo) obj;
038        }
039        else if (obj != null)
040        {
041            return new SigPolicyQualifierInfo(ASN1Sequence.getInstance(obj));
042        }
043
044        return null;
045    }
046
047    public ASN1ObjectIdentifier getSigPolicyQualifierId()
048    {
049        return new ASN1ObjectIdentifier(sigPolicyQualifierId.getId());
050    }
051
052    public ASN1Encodable getSigQualifier()
053    {
054        return sigQualifier;
055    }
056
057    /**
058     * <pre>
059     * SigPolicyQualifierInfo ::= SEQUENCE {
060     *    sigPolicyQualifierId SigPolicyQualifierId,
061     *    sigQualifier ANY DEFINED BY sigPolicyQualifierId }
062     *
063     * SigPolicyQualifierId ::= OBJECT IDENTIFIER
064     * </pre>
065     */
066    public ASN1Primitive toASN1Primitive()
067    {
068        ASN1EncodableVector  v = new ASN1EncodableVector();
069
070        v.add(sigPolicyQualifierId);
071        v.add(sigQualifier);
072
073        return new DERSequence(v);
074    }
075}