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());
    }
    public void Start(byte[] serverData, string acceptPluginName, bool isAuthenticated, byte[] serverKeys)
    {
        ServerData       = serverData;
        AcceptPluginName = acceptPluginName;
        IsAuthenticated  = isAuthenticated;
        ServerKeys       = serverKeys;

        var hasServerData = ServerData.Length != 0;

        if (AcceptPluginName.Equals(_srp256.Name, StringComparison.Ordinal))
        {
            PublicClientData = Encoding.ASCII.GetBytes(_srp256.PublicKeyHex);
            if (hasServerData)
            {
                ClientData = Encoding.ASCII.GetBytes(_srp256.ClientProof(NormalizeLogin(User), Password, ServerData).ToHexString());
            }
            SessionKey     = _srp256.SessionKey;
            SessionKeyName = _srp256.SessionKeyName;
        }
        else if (AcceptPluginName.Equals(_srp.Name, StringComparison.Ordinal))
        {
            PublicClientData = Encoding.ASCII.GetBytes(_srp.PublicKeyHex);
            if (hasServerData)
            {
                ClientData = Encoding.ASCII.GetBytes(_srp.ClientProof(NormalizeLogin(User), Password, ServerData).ToHexString());
            }
            SessionKey     = _srp.SessionKey;
            SessionKeyName = _srp.SessionKeyName;
        }
        else if (AcceptPluginName.Equals(_sspi.Name, StringComparison.Ordinal))
        {
            if (hasServerData)
            {
                ClientData = _sspi.GetClientSecurity(ServerData);
            }
        }
        else
        {
            throw new NotSupportedException($"Not supported plugin '{AcceptPluginName}'.");
        }
    }