Пример #1
0
        public void ToBytes(DataBlock block)
        {
            byte[] data = Bytes.Concatenate(HandshakeCryptoPayload.GetVerification(), Bytes.ToInt32(method), Bytes.Parse("0000"));

            block.With((buffer, offset, count) =>
            {
                Array.Copy(data, 0, buffer, offset, Length);
            });
        }
Пример #2
0
        private bool VerifyCryptoMessage(NetworkIncomingMessage message)
        {
            HandshakeKey decryptor = keys.Remote.Clone();

            byte[] synchronize = HandshakeCryptoPayload.GetVerification();

            byte[] encrypted = decryptor.Decrypt(synchronize);
            int    offset    = Bytes.Find(message.ToBytes(), encrypted);

            return(offset >= 0 && message.Length >= offset + HandshakeCryptoPayload.MinimumSize);
        }
Пример #3
0
        private void SynchronizeCryptoMessage(NetworkIncomingMessage message)
        {
            HandshakeKey decryptor = keys.Remote.Clone();

            byte[] synchronize = HandshakeCryptoPayload.GetVerification();

            byte[] encrypted = decryptor.Encrypt(synchronize, 0, synchronize.Length);
            int    offset    = Bytes.Find(message.ToBytes(), encrypted);

            message.Acknowledge(offset);
            connection.Receive(MeasureCryptoMessage, HandshakeCryptoPayload.MinimumSize);
        }