Esempio n. 1
0
        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);
            }
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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);
     }
 }
Esempio n. 5
0
        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);
        }
Esempio n. 6
0
        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);
        }
Esempio n. 7
0
        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);
        }
Esempio n. 8
0
        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);
        }
Esempio n. 9
0
        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);
        }