void ReleaseAuth()
 {
     _srp256 = null;
     _srp    = null;
     _sspi?.Dispose();
     _sspi = null;
 }
    public AuthBlock(GdsConnection connection, string user, string password, WireCryptOption wireCrypt)
    {
        _srp256 = new Srp256Client();
        _srp    = new SrpClient();
        _sspi   = new SspiHelper();

        Connection = connection;
        User       = user;
        Password   = password;
        WireCrypt  = wireCrypt;
    }
    public void KeyMatchTest()
    {
        var user             = "******";
        var password         = "******";
        var client           = new Srp256Client();
        var salt             = client.GetSalt();
        var serverKeyPair    = client.ServerSeed(user, password, salt);
        var serverSessionKey = client.GetServerSessionKey(user, password, salt, client.PublicKey, serverKeyPair.Item1, serverKeyPair.Item2);

        client.ClientProof(user, password, salt, serverKeyPair.Item1);
        Assert.AreEqual(serverSessionKey.ToString(), client.SessionKey.ToString());
    }