Beispiel #1
0
 public SessionRequestMessage(Message message, HandShakeRequest handshake, VaspInformation vasp)
 {
     MessageType = MessageType.SessionRequest;
     Message     = message;
     HandShake   = handshake;
     VASP        = vasp;
 }
Beispiel #2
0
 public SessionRequestMessage(string sessionId, HandShakeRequest handshake, VaspInformation vasp)
 {
     MessageType = MessageType.SessionRequest;
     Message     = new Message(Guid.NewGuid().ToString(), sessionId, "1");
     HandShake   = handshake;
     VASP        = vasp;
 }
Beispiel #3
0
        private static SessionRequestMessage GetSessionRequestMessage()
        {
            //Should be a contract
            var vaspKey = EthECKey.GenerateKey();

            //4Bytes
            var topic = "0x12345678"; //"0x" + "My Topic".GetHashCode().ToString("x");

            string ecdhPubKey = "12";

            var message = new Message(
                Guid.NewGuid().ToByteArray().ToHex(prefix: false),
                Guid.NewGuid().ToByteArray().ToHex(prefix: false),
                "1");
            var handshake     = new HandShakeRequest(topic, ecdhPubKey);
            var postalAddress = new PostalAddress(
                "TestingStreet",
                61,
                "Test Address Line",
                "410000",
                "TownN",
                Country.List["DE"]
                );
            var placeOfBirth    = new PlaceOfBirth(DateTime.UtcNow, "TownN", Country.List["DE"]);
            var vaspInformation = new VaspInformation(
                "Test test",
                vaspKey.GetPublicAddress(),
                vaspKey.GetPubKey().ToHex(prefix: false),
                postalAddress,
                placeOfBirth,
                new NaturalPersonId[]
            {
                new NaturalPersonId("SomeId2", NaturalIdentificationType.AlienRegistrationNumber,
                                    Country.List["DE"]),
            },
                new JuridicalPersonId[]
            {
                new JuridicalPersonId("SomeId1", JuridicalIdentificationType.BankPartyIdentification,
                                      Country.List["DE"]),
            },
                "DEUTDEFF");

            var request = new SessionRequestMessage(message, handshake, vaspInformation)
            {
                Comment = "This is test message",
            };

            return(request);
        }
Beispiel #4
0
        public static SessionRequestMessage MapFromProto(ProtoSessionRequestMessage message)
        {
            var messageIn = new Message(
                message.Message.MessageId,
                message.Message.SessionId,
                message.Message.MessageCode);
            var handshake = new HandShakeRequest(message.TopicA, message.EcdshPubKey);
            var vasp      = Mapper.MapVaspInformationFromProto(message.VaspInfo);

            var proto = new SessionRequestMessage(messageIn, handshake, vasp)
            {
                Comment = message.Comment,
            };

            return(proto);
        }
Beispiel #5
0
        protected override bool HandleMessages(byte[] message)
        {
            try
            {
                HandShakeRequest msg = BsonUtilities.Deserialise <HandShakeRequest>(message);
                Console.WriteLine("HandShakeRequest rec");
                if (Config.Password.Equals(msg.AuthPassword))
                {
                    State = HandShakeState.Authorised;
                }
                else
                {
                    State = HandShakeState.NotAuthorised;
                }

                var waiter = new TaskCompletionSource <bool>();

                this.SendMessage(new HandShakeOutcome()
                {
                    MessageType = State == HandShakeState.Authorised ? MessageTypeEnum.AuthRequestOk : MessageTypeEnum.AuthRequestError,
                    ServerGuid  = State == HandShakeState.Authorised ? this._server.ServerGuid : Guid.Empty
                }, waiter);

                waiter.Task.Wait();
                if (waiter.Task.Result && State == HandShakeState.Authorised)
                {
                    if (msg.MessageType == MessageTypeEnum.ClientAuthRequest)
                    {
                        _server.ClientConnected(msg.RegisteredGuid, TemporaryID);
                    }
                    else if (msg.MessageType == MessageTypeEnum.ServerAuthRequest)
                    {
                        _server.ServerConnected(msg.RegisteredGuid, TemporaryID);
                    }
                }
                else
                {
                    _server.ConnectionFailed(this, TemporaryID);
                }
            }
            catch (Exception ex)
            {
                this.State = HandShakeState.ProtocolError;
                _server.ConnectionFailed(this, TemporaryID);
            }
            return(false);
        }
Beispiel #6
0
        private void HandShakeRequestHandler(HandShakeRequest request)
        {
            EncryptionkeyObject encryptionkeyObject = new EncryptionkeyObject();

            encryptionkeyObject.FirstX      = BitConverter.ToDouble(UtilityFunction.DecryptByte(privateKey, request.FirstX), 0);
            encryptionkeyObject.U           = BitConverter.ToDouble(UtilityFunction.DecryptByte(privateKey, request.U), 0);
            encryptionkeyObject.SelectChoas = (ChoasEnum)BitConverter.ToInt16(UtilityFunction.DecryptByte(privateKey, request.SelectChoas), 0);

            if (clientPublicEncryptionkeys.ContainsKey(request.SenderClient))
            {
                clientPublicEncryptionkeys[request.SenderClient] = encryptionkeyObject;
            }
            else
            {
                clientPublicEncryptionkeys.Add(request.SenderClient, encryptionkeyObject);
            }
        }
Beispiel #7
0
        private void SessionResponseHandler(SessionResponse response)
        {
            if (response.IsConfirmed)
            {
                if (clientPublicKey.ContainsKey(response.ClientName))
                {
                    clientPublicKey[response.ClientName] = response.PublicKey;
                }
                else
                {
                    clientPublicKey.Add(response.ClientName, response.PublicKey);
                }
                HandShakeRequest    handShakeRequest    = new HandShakeRequest();
                EncryptionkeyObject encryptionkeyObject = new EncryptionkeyObject();
                Random rnd = new Random();

                encryptionkeyObject.FirstX      = rnd.NextDouble();
                encryptionkeyObject.U           = rnd.NextDouble();
                encryptionkeyObject.SelectChoas = rnd.Next(0, 2) == 0 ? ChoasEnum.First : ChoasEnum.Secend;

                if (clientPublicEncryptionkeys.ContainsKey(response.ClientName))
                {
                    clientPublicEncryptionkeys[response.ClientName] = encryptionkeyObject;
                }
                else
                {
                    clientPublicEncryptionkeys.Add(response.ClientName, encryptionkeyObject);
                }

                handShakeRequest.FirstX         = UtilityFunction.EncryptByte(response.PublicKey, BitConverter.GetBytes(encryptionkeyObject.FirstX));
                handShakeRequest.U              = UtilityFunction.EncryptByte(response.PublicKey, BitConverter.GetBytes(encryptionkeyObject.U));
                handShakeRequest.SelectChoas    = UtilityFunction.EncryptByte(response.PublicKey, BitConverter.GetBytes((short)encryptionkeyObject.SelectChoas));
                handShakeRequest.ReceiverClient = response.ClientName;

                SendMessage(handShakeRequest);
            }
        }