Home | History | Annotate | Download | only in x509
      1 package org.bouncycastle.asn1.x509;
      2 
      3 import java.math.BigInteger;
      4 import java.util.Enumeration;
      5 
      6 import org.bouncycastle.asn1.ASN1EncodableVector;
      7 import org.bouncycastle.asn1.ASN1Integer;
      8 import org.bouncycastle.asn1.ASN1Object;
      9 import org.bouncycastle.asn1.ASN1Primitive;
     10 import org.bouncycastle.asn1.ASN1Sequence;
     11 import org.bouncycastle.asn1.ASN1TaggedObject;
     12 import org.bouncycastle.asn1.DERSequence;
     13 
     14 public class DSAParameter
     15     extends ASN1Object
     16 {
     17     ASN1Integer      p, q, g;
     18 
     19     public static DSAParameter getInstance(
     20         ASN1TaggedObject obj,
     21         boolean          explicit)
     22     {
     23         return getInstance(ASN1Sequence.getInstance(obj, explicit));
     24     }
     25 
     26     public static DSAParameter getInstance(
     27         Object obj)
     28     {
     29         if (obj instanceof DSAParameter)
     30         {
     31             return (DSAParameter)obj;
     32         }
     33 
     34         if(obj != null)
     35         {
     36             return new DSAParameter(ASN1Sequence.getInstance(obj));
     37         }
     38 
     39         return null;
     40     }
     41 
     42     public DSAParameter(
     43         BigInteger  p,
     44         BigInteger  q,
     45         BigInteger  g)
     46     {
     47         this.p = new ASN1Integer(p);
     48         this.q = new ASN1Integer(q);
     49         this.g = new ASN1Integer(g);
     50     }
     51 
     52     private DSAParameter(
     53         ASN1Sequence  seq)
     54     {
     55         if (seq.size() != 3)
     56         {
     57             throw new IllegalArgumentException("Bad sequence size: " + seq.size());
     58         }
     59 
     60         Enumeration     e = seq.getObjects();
     61 
     62         p = ASN1Integer.getInstance(e.nextElement());
     63         q = ASN1Integer.getInstance(e.nextElement());
     64         g = ASN1Integer.getInstance(e.nextElement());
     65     }
     66 
     67     public BigInteger getP()
     68     {
     69         return p.getPositiveValue();
     70     }
     71 
     72     public BigInteger getQ()
     73     {
     74         return q.getPositiveValue();
     75     }
     76 
     77     public BigInteger getG()
     78     {
     79         return g.getPositiveValue();
     80     }
     81 
     82     public ASN1Primitive toASN1Primitive()
     83     {
     84         ASN1EncodableVector  v = new ASN1EncodableVector();
     85 
     86         v.add(p);
     87         v.add(q);
     88         v.add(g);
     89 
     90         return new DERSequence(v);
     91     }
     92 }
     93