Exemplo n.º 1
0
        /// <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);
            }
        }
Exemplo n.º 2
0
 /// <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);
 }