001package org.apache.commons.ssl.org.bouncycastle.asn1.crmf;
002
003import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1EncodableVector;
004import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Integer;
005import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Object;
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;
009import org.apache.commons.ssl.org.bouncycastle.asn1.x509.GeneralName;
010
011public class SinglePubInfo
012    extends ASN1Object
013{
014    private ASN1Integer pubMethod;
015    private GeneralName pubLocation;
016
017    private SinglePubInfo(ASN1Sequence seq)
018    {
019        pubMethod = ASN1Integer.getInstance(seq.getObjectAt(0));
020
021        if (seq.size() == 2)
022        {
023            pubLocation = GeneralName.getInstance(seq.getObjectAt(1));
024        }
025    }
026
027    public static SinglePubInfo getInstance(Object o)
028    {
029        if (o instanceof SinglePubInfo)
030        {
031            return (SinglePubInfo)o;
032        }
033
034        if (o != null)
035        {
036            return new SinglePubInfo(ASN1Sequence.getInstance(o));
037        }
038
039        return null;
040    }
041
042    public GeneralName getPubLocation()
043    {
044        return pubLocation;
045    }
046
047    /**
048     * <pre>
049     * SinglePubInfo ::= SEQUENCE {
050     *        pubMethod    INTEGER {
051     *           dontCare    (0),
052     *           x500        (1),
053     *           web         (2),
054     *           ldap        (3) },
055     *       pubLocation  GeneralName OPTIONAL }
056     * </pre>
057     * @return a basic ASN.1 object representation.
058     */
059    public ASN1Primitive toASN1Primitive()
060    {
061        ASN1EncodableVector v = new ASN1EncodableVector();
062
063        v.add(pubMethod);
064
065        if (pubLocation != null)
066        {
067            v.add(pubLocation);
068        }
069
070        return new DERSequence(v);
071    }
072}