public void Test_TestVectors() { var client = new SrpClient(TestVectors.H, TestVectors.g, TestVectors.N); var server = new SrpServer(TestVectors.H, TestVectors.g, TestVectors.N); // generate password verifier to store BigInteger v = client.GenerateVerifier(TestVectors.I, TestVectors.P, TestVectors.s); Assert.Equal(TestVectors.expected_v, v); var A = client.GenerateTestVectorAValues(TestVectors.a); Assert.Equal(TestVectors.expected_A, A); var B = server.GenerateTestVectorBValues(v, TestVectors.b); Assert.Equal(TestVectors.expected_B, B); var clientS = client.ComputeSessionKey(TestVectors.I, TestVectors.P, TestVectors.s, B); var serverS = server.ComputeSessionKey(v, A); Assert.Equal(clientS, serverS); Assert.Equal(TestVectors.expected_S, clientS); var M1 = client.GenerateClientProof(B, clientS); Assert.True(server.ValidateClientProof(M1, A, serverS)); var M2 = server.GenerateServerProof(A, M1, serverS); Assert.True(client.ValidateServerProof(M2, M1, clientS)); }