public void SmokeTestAfterHi <T>(T message) where T : P2PMessage { if (NdmMessageCode.IsProviderOnly(message.PacketType)) { return; } BuildSubprotocol(); EthereumEcdsa ecdsa = new EthereumEcdsa(ChainId.Mainnet, LimboLogs.Instance); Signature signature = ecdsa.Sign(TestItem.PrivateKeyA, Keccak.Zero); HiMessage hiMessage = new HiMessage(1, TestItem.AddressA, TestItem.AddressB, TestItem.PublicKeyA, signature); byte[] hiBytes = _service.Serialize(hiMessage); _subprotocol.HandleMessage(new Packet(hiBytes)); byte[] bytes = _service.Serialize(message); Packet packet = new Packet(bytes); packet.PacketType = message.PacketType; if (NdmMessageCode.IsRequestResponse(message.PacketType)) { Assert.Throws <SubprotocolException>(() => _subprotocol.HandleMessage(packet)); } else { _subprotocol.HandleMessage(packet); } }
public void Bitlogin_FailedLogout_ClientSendingFakeSignature() { BitloginServer bitloginServer = new BitloginServer(Random.value); BitloginClient bitloginClient = new BitloginClient(); HiMessage hiMessage = bitloginClient.GetHiMessage(); BitloginProtocolMessage okSignThisMessage = bitloginServer.GetOkSignThisMessage(hiMessage); VerifyMeMessage verifyMeMessage = bitloginClient.GetVerifyMeMessage(okSignThisMessage as OkSignThisMessage); bitloginServer.GetAuthenticationResult(verifyMeMessage); Account.VerificationState currentClientVerificationStateInServer = bitloginServer.GetVerificationStateOfAccount(bitloginClient.LegacyAddress); Assert.IsTrue(currentClientVerificationStateInServer == Account.VerificationState.verified); LogOutRequestMessage logOutRequestMessage = bitloginClient.GetLogOutRequestMessage(); logOutRequestMessage.signature = bitloginClient.SignMessage("Wrong message to sign"); BitloginProtocolMessage logOutResponse = bitloginServer.LogOutRequest(logOutRequestMessage); Assert.IsInstanceOf <ErrorMessage>(logOutResponse); Assert.IsTrue(((ErrorMessage)logOutResponse).errorCode == 400); Account.VerificationState currentClientVerificationStateInServerAfterLogOut = bitloginServer.GetVerificationStateOfAccount(bitloginClient.LegacyAddress); Assert.IsTrue(currentClientVerificationStateInServerAfterLogOut == Account.VerificationState.verified); }
public void handling_hi_message_should_succeed() { _verifySignature = true; InitSubprotocol(); var hiMessage = new HiMessage(1, TestItem.AddressC, TestItem.AddressD, TestItem.PublicKeyA, new Signature(1, 1, 27)); var hiPacket = new Packet(hiMessage.Protocol, hiMessage.PacketType, _messageSerializationService.Serialize(hiMessage)); _messageSerializationService.Deserialize <HiMessage>(hiPacket.Data).Returns(hiMessage); var hash = Keccak.Compute(hiMessage.NodeId.Bytes); _ecdsa.RecoverPublicKey(hiMessage.Signature, hash).Returns(TestItem.PublicKeyA); _subprotocol.HandleMessage(hiPacket); _ecdsa.Received().RecoverPublicKey(hiMessage.Signature, hash); _subprotocol.ProviderAddress.Should().Be(hiMessage.ProviderAddress); _subprotocol.ConsumerAddress.Should().Be(hiMessage.ConsumerAddress); _consumerService.Received().AddProviderPeer(_subprotocol); var getDataAssetsMessage = new GetDataAssetsMessage(); _messageSerializationService.Serialize(getDataAssetsMessage).Returns(Array.Empty <byte>()); var getDataAssetsPacket = new Packet(getDataAssetsMessage.Protocol, getDataAssetsMessage.PacketType, _messageSerializationService.Serialize(getDataAssetsMessage)); _messageSerializationService.Deserialize <GetDataAssetsMessage>(getDataAssetsPacket.Data) .Returns(getDataAssetsMessage); Received.InOrder(() => { _session.DeliverMessage(Arg.Any <GetDataAssetsMessage>()); _session.DeliverMessage(Arg.Any <GetDepositApprovalsMessage>()); }); }
protected override void Handle(HiMessage message) { base.Handle(message); if (IsConsumer) { _providerService.AddConsumerPeer(this); } }
void OnHiMessage(HiMessage message) { var reply = PresenceMessage.FromUserInfo <HelloMessage>(thisUser); reply.Recipient = message.Sender; channel.SendMessage(reply); UserInfo user = message.GetUser(); OnPresenceMessage(user, discovered: true); }
public void Bitlogin_SuccessLogin_CheckClientVerifiedInServer() { BitloginClient bitloginClient = new BitloginClient(); BitloginServer bitloginServer = new BitloginServer(Random.value); HiMessage hiMessage = bitloginClient.GetHiMessage(); BitloginProtocolMessage okSignThisMessage = bitloginServer.GetOkSignThisMessage(hiMessage); Assert.IsTrue(okSignThisMessage is OkSignThisMessage, "bitloginServer.GetOkSignThisMessage() returning not a OkSignThisMessage"); VerifyMeMessage verifyMeMessage = bitloginClient.GetVerifyMeMessage(okSignThisMessage as OkSignThisMessage); BitloginProtocolMessage authenticationResult = bitloginServer.GetAuthenticationResult(verifyMeMessage); Assert.IsTrue(authenticationResult is AuthenticationSuccess, "bitloginServer.GetAuthenticationResult() returning not a AuthenticationSuccess"); Account.VerificationState currentClientVerificationStateInServer = bitloginServer.GetVerificationStateOfAccount(bitloginClient.LegacyAddress); Assert.IsTrue(currentClientVerificationStateInServer == Account.VerificationState.verified); }
public void Bitlogin_FailedLogin_ClientAlreadyInTheSystem() { BitloginClient bitloginClient = new BitloginClient(); BitloginServer bitloginServer = new BitloginServer(Random.value); HiMessage hiMessage = bitloginClient.GetHiMessage(); BitloginProtocolMessage okSignThisMessage = bitloginServer.GetOkSignThisMessage(hiMessage); Assert.IsInstanceOf <OkSignThisMessage>(okSignThisMessage, "bitloginServer.GetOkSignThisMessage() returning not a OkSignThisMessage"); BitloginProtocolMessage okSignThisMessage2 = bitloginServer.GetOkSignThisMessage(hiMessage); Assert.IsInstanceOf <ErrorMessage>(okSignThisMessage2, "bitloginServer.GetOkSignThisMessage() returning not a ErrorMessage when GettingOkSignThisMessage twice"); Assert.IsTrue((okSignThisMessage2 as ErrorMessage)?.errorCode == 100, "bitloginServer.GetOkSignThisMessage() returning not a ErrorMessage 100 when GettingOkSignThisMessage twice"); Account.VerificationState currentClientVerificationStateInServer = bitloginServer.GetVerificationStateOfAccount(bitloginClient.LegacyAddress); Assert.IsTrue(currentClientVerificationStateInServer == Account.VerificationState.unverified); }
public void Bitlogin_SuccessLoginAndLogout() { BitloginClient bitloginClient = new BitloginClient(); BitloginServer bitloginServer = new BitloginServer(Random.value); HiMessage hiMessage = bitloginClient.GetHiMessage(); BitloginProtocolMessage okSignThisMessage = bitloginServer.GetOkSignThisMessage(hiMessage); VerifyMeMessage verifyMeMessage = bitloginClient.GetVerifyMeMessage(okSignThisMessage as OkSignThisMessage); bitloginServer.GetAuthenticationResult(verifyMeMessage); Account.VerificationState currentClientVerificationStateInServer = bitloginServer.GetVerificationStateOfAccount(bitloginClient.LegacyAddress); Assert.IsTrue(currentClientVerificationStateInServer == Account.VerificationState.verified); LogOutRequestMessage logOutRequestMessage = bitloginClient.GetLogOutRequestMessage(); BitloginProtocolMessage logoutResult = bitloginServer.LogOutRequest(logOutRequestMessage); Assert.IsInstanceOf <LogOutSuccessMessage>(logoutResult); Account.VerificationState currentClientVerificationStateInServerAfterLogOut = bitloginServer.GetVerificationStateOfAccount(bitloginClient.LegacyAddress); Assert.IsTrue(currentClientVerificationStateInServerAfterLogOut == Account.VerificationState.unknown); }
public void Bitlogin_FailedLogin_ClientSendingARandomSignature() { BitloginClient bitloginClient = new BitloginClient(); BitloginServer bitloginServer = new BitloginServer(Random.value); HiMessage hiMessage = bitloginClient.GetHiMessage(); BitloginProtocolMessage okSignThisMessage = bitloginServer.GetOkSignThisMessage(hiMessage); VerifyMeMessage verifyMeMessage = bitloginClient.GetVerifyMeMessage(okSignThisMessage as OkSignThisMessage); verifyMeMessage.signature = "this is not even a signature " + Random.value.ToString(); BitloginProtocolMessage authenticationResult = bitloginServer.GetAuthenticationResult(verifyMeMessage); Assert.IsInstanceOf <ErrorMessage>(authenticationResult, "Client sending fake signature is returning authentication success"); Assert.IsTrue((authenticationResult as ErrorMessage).errorCode == 500, "bitloginServer.GetAuthenticationResult() returning not a error code 500"); Account.VerificationState currentClientVerificationStateInServer = bitloginServer.GetVerificationStateOfAccount(bitloginClient.LegacyAddress); Assert.IsTrue(currentClientVerificationStateInServer == Account.VerificationState.unverified); }