private void MeasureCryptoMessage(NetworkIncomingMessage message) { HandshakeKey decryptor = keys.Remote.Clone(); NetworkIncomingMessage decrypted = decryptor.Decrypt(message); int size = HandshakeCryptoPayload.GetSize(decrypted); connection.Receive(HandleCryptoMessage, size); }
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); }); }
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); }
private void HandleCryptoMessage(NetworkIncomingMessage message) { HandshakeKey decryptor = keys.Remote.Clone(); NetworkIncomingMessage decrypted = decryptor.Decrypt(message); int size = HandshakeCryptoPayload.GetSize(decrypted); message.Acknowledge(size); keys.Remote.Acknowledge(size); connection.Send(new HandshakeMessage(context.Peer, context.Hash, context.Options), keys.Local); connection.Receive(MeasureHandshakeMessage, HandshakeMessage.MinSize); }
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); }
private void HandleCryptoPayloadMessage(NetworkIncomingMessage message) { HandshakeKey decryptor = keys.Remote.Clone(); NetworkIncomingMessage decrypted = decryptor.Decrypt(message); int size = HandshakeCryptoPayload.GetSize(decrypted); int method = HandshakeCryptoPayload.GetMethod(decrypted); message.Acknowledge(size); keys.Remote.Acknowledge(size); connection.Receive(MeasureCryptoMessage, HandshakeCryptoMessage.MinimumSize, method); }