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.ASN1Primitive;
006import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Sequence;
007import org.apache.commons.ssl.org.bouncycastle.asn1.DERSequence;
008
009public class SigPolicyQualifiers
010    extends ASN1Object
011{
012    ASN1Sequence qualifiers;
013
014    public static SigPolicyQualifiers getInstance(
015        Object obj)
016    {
017        if (obj instanceof SigPolicyQualifiers)
018        {
019            return (SigPolicyQualifiers) obj;
020        }
021        else if (obj instanceof ASN1Sequence)
022        {
023            return new SigPolicyQualifiers(ASN1Sequence.getInstance(obj));
024        }
025
026        return null;
027    }
028
029    private SigPolicyQualifiers(
030        ASN1Sequence seq)
031    {
032        qualifiers = seq;
033    }
034
035    public SigPolicyQualifiers(
036        SigPolicyQualifierInfo[] qualifierInfos)
037    {
038        ASN1EncodableVector v = new ASN1EncodableVector();
039        for (int i=0; i < qualifierInfos.length; i++)
040        {
041            v.add(qualifierInfos[i]);
042        }
043        qualifiers = new DERSequence(v);
044    }
045
046    /**
047     * Return the number of qualifier info elements present.
048     *
049     * @return number of elements present.
050     */
051    public int size()
052    {
053        return qualifiers.size();
054    }
055
056    /**
057     * Return the SigPolicyQualifierInfo at index i.
058     *
059     * @param i index of the info of interest
060     * @return the info at index i.
061     */
062    public SigPolicyQualifierInfo getInfoAt(
063        int i)
064    {
065        return SigPolicyQualifierInfo.getInstance(qualifiers.getObjectAt(i));
066    }
067
068    /**
069     * <pre>
070     * SigPolicyQualifiers ::= SEQUENCE SIZE (1..MAX) OF SigPolicyQualifierInfo
071     * </pre>
072     */
073    public ASN1Primitive toASN1Primitive()
074    {
075        return qualifiers;
076    }
077}