001package org.apache.commons.ssl.org.bouncycastle.asn1.oiw;
002
003import java.math.BigInteger;
004import java.util.Enumeration;
005
006import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1EncodableVector;
007import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Integer;
008import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Object;
009import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Primitive;
010import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Sequence;
011import org.apache.commons.ssl.org.bouncycastle.asn1.DERSequence;
012
013public class ElGamalParameter
014    extends ASN1Object
015{
016    ASN1Integer      p, g;
017
018    public ElGamalParameter(
019        BigInteger  p,
020        BigInteger  g)
021    {
022        this.p = new ASN1Integer(p);
023        this.g = new ASN1Integer(g);
024    }
025
026    private ElGamalParameter(
027        ASN1Sequence  seq)
028    {
029        Enumeration     e = seq.getObjects();
030
031        p = (ASN1Integer)e.nextElement();
032        g = (ASN1Integer)e.nextElement();
033    }
034
035    public static ElGamalParameter getInstance(Object o)
036    {
037        if (o instanceof ElGamalParameter)
038        {
039            return (ElGamalParameter)o;
040        }
041        else if (o != null)
042        {
043            return new ElGamalParameter(ASN1Sequence.getInstance(o));
044        }
045
046        return null;
047    }
048
049    public BigInteger getP()
050    {
051        return p.getPositiveValue();
052    }
053
054    public BigInteger getG()
055    {
056        return g.getPositiveValue();
057    }
058
059    public ASN1Primitive toASN1Primitive()
060    {
061        ASN1EncodableVector  v = new ASN1EncodableVector();
062
063        v.add(p);
064        v.add(g);
065
066        return new DERSequence(v);
067    }
068}