Exemplo n.º 1
0
    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));
    }