1b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallampackage org.bouncycastle.crypto.params;
2b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam
3b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallamimport java.math.BigInteger;
4b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam
5b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallamimport org.bouncycastle.crypto.CipherParameters;
6b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam
7b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallampublic class DSAParameters
8b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    implements CipherParameters
9b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam{
10b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    private BigInteger              g;
11b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    private BigInteger              q;
12b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    private BigInteger              p;
13b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    private DSAValidationParameters validation;
14b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam
15b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    public DSAParameters(
16b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam        BigInteger  p,
17b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam        BigInteger  q,
18b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam        BigInteger  g)
19b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    {
20b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam        this.g = g;
21b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam        this.p = p;
22b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam        this.q = q;
23b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    }
24b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam
25b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    public DSAParameters(
26b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam        BigInteger              p,
27b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam        BigInteger              q,
28b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam        BigInteger              g,
29b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam        DSAValidationParameters params)
30b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    {
31b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam        this.g = g;
32b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam        this.p = p;
33b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam        this.q = q;
34b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam        this.validation = params;
35b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    }
36b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam
37b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    public BigInteger getP()
38b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    {
39b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam        return p;
40b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    }
41b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam
42b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    public BigInteger getQ()
43b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    {
44b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam        return q;
45b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    }
46b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam
47b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    public BigInteger getG()
48b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    {
49b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam        return g;
50b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    }
51b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam
52b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    public DSAValidationParameters getValidationParameters()
53b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    {
54b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam        return validation;
55b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    }
56b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam
57b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    public boolean equals(
58b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam        Object  obj)
59b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    {
60b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam        if (!(obj instanceof DSAParameters))
61b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam        {
62b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam            return false;
63b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam        }
64b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam
65b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam        DSAParameters    pm = (DSAParameters)obj;
66b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam
67b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam        return (pm.getP().equals(p) && pm.getQ().equals(q) && pm.getG().equals(g));
68b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    }
69b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam
70b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    public int hashCode()
71b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    {
72b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam        return getP().hashCode() ^ getQ().hashCode() ^ getG().hashCode();
73b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    }
74b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam}
75