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