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}'."); } }