public TlsSRPKeyExchange(int keyExchange, Vector supportedSignatureAlgorithms, TlsSRPGroupVerifier groupVerifier, byte[] identity, byte[] password) { super(keyExchange, supportedSignatureAlgorithms); this.tlsSigner = createSigner(keyExchange); this.groupVerifier = groupVerifier; this.identity = identity; this.password = password; this.srpClient = new SRP6Client(); }
private void testMutualVerification(BigInteger N, BigInteger g) throws CryptoException { byte[] I = "username".getBytes(); byte[] P = "password".getBytes(); byte[] s = new byte[16]; random.nextBytes(s); SRP6VerifierGenerator gen = new SRP6VerifierGenerator(); gen.init(N, g, new SHA256Digest()); BigInteger v = gen.generateVerifier(s, I, P); SRP6Client client = new SRP6Client(); client.init(N, g, new SHA256Digest(), random); SRP6Server server = new SRP6Server(); server.init(N, g, v, new SHA256Digest(), random); BigInteger A = client.generateClientCredentials(s, I, P); BigInteger B = server.generateServerCredentials(); BigInteger clientS = client.calculateSecret(B); BigInteger serverS = server.calculateSecret(A); if (!clientS.equals(serverS)) { fail("SRP agreement failed - client/server calculated different secrets"); } }
private void testMutualVerification(SRP6GroupParameters group) throws CryptoException { byte[] I = "username".getBytes(); byte[] P = "password".getBytes(); byte[] s = new byte[16]; random.nextBytes(s); SRP6VerifierGenerator gen = new SRP6VerifierGenerator(); gen.init(group, new SHA256Digest()); BigInteger v = gen.generateVerifier(s, I, P); SRP6Client client = new SRP6Client(); client.init(group, new SHA256Digest(), random); SRP6Server server = new SRP6Server(); server.init(group, v, new SHA256Digest(), random); BigInteger A = client.generateClientCredentials(s, I, P); BigInteger B = server.generateServerCredentials(); BigInteger clientS = client.calculateSecret(B); BigInteger serverS = server.calculateSecret(A); if (!clientS.equals(serverS)) { fail("SRP agreement failed - client/server calculated different secrets"); } }