DiffieHellman { public static BigInteger generatePublicKey(BigInteger privateKey) { return baseNumber.modPow(privateKey, primeNumber); }  static BigInteger generateSecretKey(BigInteger remotePublicKey, BigInteger privateKey); static BigInteger generatePublicKey(BigInteger privateKey); static BigInteger generatePrivateKey(int bitLength);  }
@Test public void testStaticKey() { BigInteger clientPrivateKey = new BigInteger("1234567891433", 10); BigInteger clientPublicKey = OakleyGroup1.generator.modPow(clientPrivateKey, OakleyGroup1.primeNumber); BigInteger serverPrivateKey = new BigInteger("3234567891283", 10); BigInteger serverPublicKey = DiffieHellman.generatePublicKey(serverPrivateKey); testDH(clientPrivateKey, clientPublicKey, serverPrivateKey, serverPublicKey); }
@Test public void testGeneratedClientPublicKey() { BigInteger clientPrivateKey = new BigInteger("1234567891433", 10); BigInteger clientPublicKey = new BigInteger(new byte[]{ (byte) 0x0, (byte) 0xA5, (byte) 0x36, (byte) 0x5C, (byte) 0xAB, (byte) 0x4B, (byte) 0x89, (byte) 0x4F, (byte) 0xF5, (byte) 0x9C, (byte) 0xA3, (byte) 0x98, (byte) 0xA0, (byte) 0x45, (byte) 0xF5, (byte) 0xF8, (byte) 0xFD, (byte) 0x5, (byte) 0x30, (byte) 0xA4, (byte) 0xDE, (byte) 0xA7, (byte) 0xC3, (byte) 0x22, (byte) 0xCE, (byte) 0x96, (byte) 0x4D, (byte) 0x16, (byte) 0xFF, (byte) 0xAA, (byte) 0x9, (byte) 0x64, (byte) 0xDA, (byte) 0xCE, (byte) 0xCE, (byte) 0xAC, (byte) 0x60, (byte) 0x36, (byte) 0x2F, (byte) 0xF6, (byte) 0xEA, (byte) 0x6A, (byte) 0xF9, (byte) 0xD1, (byte) 0x22, (byte) 0x94, (byte) 0x56, (byte) 0x1A, (byte) 0xEB, (byte) 0xA7, (byte) 0xC9, (byte) 0x7E, (byte) 0x27, (byte) 0xE2, (byte) 0x67, (byte) 0x85, (byte) 0xE7, (byte) 0xB1, (byte) 0xAB, (byte) 0x71, (byte) 0x5A, (byte) 0x56, (byte) 0x46, (byte) 0xBD, (byte) 0x87, (byte) 0x98, (byte) 0x6A, (byte) 0x1, (byte) 0xD3, (byte) 0x1A, (byte) 0xA5, (byte) 0x8C, (byte) 0x10, (byte) 0x39, (byte) 0x8A, (byte) 0x83, (byte) 0x68, (byte) 0x6B, (byte) 0x72, (byte) 0xEC, (byte) 0xCB, (byte) 0xF7, (byte) 0x74, (byte) 0x6E, (byte) 0x1A, (byte) 0x29, (byte) 0x6C, (byte) 0xC6, (byte) 0xDA, (byte) 0x96, (byte) 0xE7, (byte) 0x7E, (byte) 0x47, (byte) 0xBF, (byte) 0x9A, (byte) 0xF3, (byte) 0xA }); BigInteger serverPrivateKey = new BigInteger("3234567891283", 10); BigInteger serverPublicKey = DiffieHellman.generatePublicKey(serverPrivateKey); testDH(clientPrivateKey, clientPublicKey, serverPrivateKey, serverPublicKey); }