DHValidationParameters.java revision b61a96e7ef1a78acf013bbf08fe537e5b5f129ca
1b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallampackage org.bouncycastle.crypto.params;
2b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam
3b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallampublic class DHValidationParameters
4b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam{
5b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    private byte[]  seed;
6b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    private int     counter;
7b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam
8b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    public DHValidationParameters(
9b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam        byte[]  seed,
10b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam        int     counter)
11b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    {
12b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam        this.seed = seed;
13b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam        this.counter = counter;
14b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    }
15b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam
16b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    public boolean equals(
17b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam        Object o)
18b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    {
19b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam        if (!(o instanceof DHValidationParameters))
20b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam        {
21b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam            return false;
22b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam        }
23b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam
24b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam        DHValidationParameters  other = (DHValidationParameters)o;
25b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam
26b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam        if (other.counter != this.counter)
27b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam        {
28b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam            return false;
29b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam        }
30b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam
31b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam        if (other.seed.length != this.seed.length)
32b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam        {
33b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam            return false;
34b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam        }
35b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam
36b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam        for (int i = 0; i != other.seed.length; i++)
37b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam        {
38b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam            if (other.seed[i] != this.seed[i])
39b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam            {
40b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam                return false;
41b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam            }
42b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam        }
43b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam
44b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam        return true;
45b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    }
46b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam
47b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    public int hashCode()
48b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    {
49b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam        int code = counter;
50b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam
51b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam        for (int i = 0; i != seed.length; i++)
52b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam        {
53b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam            code ^= (seed[i] & 0xff) << (i % 4);
54b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam        }
55b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam
56b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam        return code;
57b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    }
58b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam}
59