/// <summary> /// Used Post-Exchange to decrypt bytes received from the client /// </summary> /// /// <param name="PacketStream">The stream containing the ciphertext</param> private void ReceiveMessage(Stream PacketStream) { if (!_isEstablished) throw new CryptoProcessingException("DtmKex:Receive", "The VPN has not been established!", new InvalidOperationException()); // get the header DtmPacket pktHdr = new DtmPacket(PacketStream); // store total bytes received _bytesReceived += pktHdr.PayloadLength; byte[] enc = new byte[pktHdr.PayloadLength]; // get the encrypted data PacketStream.Read(enc, 0, enc.Length); // decrypt it using servers processor byte[] dec = SymmetricTransform(_cltSymProcessor, enc); // remove padding dec = UnwrapMessage(dec); // return the data if (DataReceived != null) { DtmDataReceivedEventArgs args = new DtmDataReceivedEventArgs(new MemoryStream(dec), 0); DataReceived(this, args); } }
/// <summary> /// Fires when a post-exchange packet containing processed data is received /// </summary> private void OnDataReceived(object owner, DtmDataReceivedEventArgs args) { Console.WriteLine(Encoding.ASCII.GetString(args.Message.ToArray())); Console.Write(CON_TITLE); }