1    package org.bouncycastle.asn1.x509;
2    
3    import java.math.BigInteger;
4    import java.util.*;
5    
6    import org.bouncycastle.asn1.*;
7    
8    public class DSAParameter
9        implements DEREncodable
10   {
11       DERIntegerDERIntegerDERIntegerpublic static DSAParameter getInstance(
12           ASN1TaggedObject obj,
13           boolean          explicit)
14       {
15           return getInstance(ASN1Sequence.getInstance(obj, explicit));
16       }
17   
18       public static DSAParameter getInstance(
19           Object obj)
20       {
21           if(obj == null || obj instanceof DSAParameter) 
22           {
23               return (DSAParameter)obj;
24           }
25           
26           if(obj instanceof ASN1Sequence) 
27           {
28               return new DSAParameter((ASN1Sequence)obj);
29           }
30           
31           throw new IllegalArgumentException("Invalid DSAParameter: " + obj.getClass().getName());
32       }
33   
34       public DSAParameter(
35           BigInteger  p,
36           BigInteger  q,
37           BigInteger  g)
38       {
39           this.p = new DERInteger(p);
40           this.q = new DERInteger(q);
41           this.g = new DERInteger(g);
42       }
43   
44       public DSAParameter(
45           ASN1Sequence  seq)
46       {
47           Enumeration     e = seq.getObjects();
48   
49           p = (DERInteger)e.nextElement();
50           q = (DERInteger)e.nextElement();
51           g = (DERInteger)e.nextElement();
52       }
53   
54       public BigInteger getP()
55       {
56           return p.getPositiveValue();
57       }
58   
59       public BigInteger getQ()
60       {
61           return q.getPositiveValue();
62       }
63   
64       public BigInteger getG()
65       {
66           return g.getPositiveValue();
67       }
68   
69       public DERObject getDERObject()
70       {
71           DEREncodableVector  v = new DEREncodableVector();
72   
73           v.add(p);
74           v.add(q);
75           v.add(g);
76   
77           return new DERSequence(v);
78       }
79   }
80   ?????????????????????p????????????????????????q???????????????????????????g???????????????????DSAParameter????????????????????????????????getInstance?????????ASN1TaggedObject?????????boolean????????????????getInstance????????????????????????????ASN1Sequence?????????????????????????????????????????getInstance?????????????????????????????????????????????????????obj??????????????????????????????????????????????????????????explicit???????????????????DSAParameter????????????????????????????????getInstance?????????Object????????????obj???????????????????????????obj?????????????????????DSAParameter??????????????????????????????????obj????????????obj????????????????????????DSAParameter??????????????????????????????????????ASN1Sequence???????????????????????????????????????????????????obj???????????????????????????????????????????????????????????????????????obj????????????DSAParameter?????????BigInteger?????????BigInteger?????????BigInteger??????????????????????DERInteger?????????????????????????????????p??????????????????????DERInteger?????????????????????????????????q??????????????????????DERInteger?????????????????????????????????g????????????DSAParameter?????????ASN1Sequence?????????????????????????????seq?????????????????????????????????getObjects?????????p??????????????DERInteger?????????????????????????e?????????q??????????????DERInteger?????????????????????????e?????????g??????????????DERInteger?????????????????????????e????????????BigInteger???????????????????????getP????????????????p??????????????????getPositiveValue????????????BigInteger???????????????????????getQ????????????????q??????????????????getPositiveValue????????????BigInteger???????????????????????getG????????????????g??????????????????getPositiveValue????????????DERObject??????????????????????getDERObject?????????DEREncodableVector?????????v???????????add???????????????p?????????v???????????add???????????????q?????????v???????????add???????????????g????????????????????DERSequence????????????????????????????????v