001package org.apache.commons.ssl.org.bouncycastle.asn1.x9;
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.ASN1TaggedObject;
009import org.apache.commons.ssl.org.bouncycastle.asn1.DERBitString;
010import org.apache.commons.ssl.org.bouncycastle.asn1.DERSequence;
011
012public class DHValidationParms extends ASN1Object
013{
014    private DERBitString seed;
015    private ASN1Integer pgenCounter;
016
017    public static DHValidationParms getInstance(ASN1TaggedObject obj, boolean explicit)
018    {
019        return getInstance(ASN1Sequence.getInstance(obj, explicit));
020    }
021
022    public static DHValidationParms getInstance(Object obj)
023    {
024        if (obj instanceof DHValidationParms)
025        {
026            return (DHValidationParms)obj;
027        }
028        else if (obj != null)
029        {
030            return new DHValidationParms(ASN1Sequence.getInstance(obj));
031        }
032
033        return null;
034    }
035
036    public DHValidationParms(DERBitString seed, ASN1Integer pgenCounter)
037    {
038        if (seed == null)
039        {
040            throw new IllegalArgumentException("'seed' cannot be null");
041        }
042        if (pgenCounter == null)
043        {
044            throw new IllegalArgumentException("'pgenCounter' cannot be null");
045        }
046
047        this.seed = seed;
048        this.pgenCounter = pgenCounter;
049    }
050
051    private DHValidationParms(ASN1Sequence seq)
052    {
053        if (seq.size() != 2)
054        {
055            throw new IllegalArgumentException("Bad sequence size: " + seq.size());
056        }
057
058        this.seed = DERBitString.getInstance(seq.getObjectAt(0));
059        this.pgenCounter = ASN1Integer.getInstance(seq.getObjectAt(1));
060    }
061
062    public DERBitString getSeed()
063    {
064        return this.seed;
065    }
066
067    public ASN1Integer getPgenCounter()
068    {
069        return this.pgenCounter;
070    }
071
072    public ASN1Primitive toASN1Primitive()
073    {
074        ASN1EncodableVector v = new ASN1EncodableVector();
075        v.add(this.seed);
076        v.add(this.pgenCounter);
077        return new DERSequence(v);
078    }
079}