Esempio n. 1
0
 public void NotifyCSEncryptedSessionKeyMessage(ProudServer server, ProudSession session, NotifyCSEncryptedSessionKeyMessage message)
 {
     session.Logger?.Verbose("Handshake:NotifyCSEncryptedSessionKey");
     session.Crypt = new Crypt(server.Rsa.Decrypt(message.SecureKey, true));
     session.Crypt.InitializeFastEncryption(session.Crypt.AES.Decrypt(message.FastKey));
     session.SendAsync(new NotifyCSSessionKeySuccessMessage());
 }
Esempio n. 2
0
        public void NotifyCSEncryptedSessionKeyMessage(ProudServer server, ProudSession session, NotifyCSEncryptedSessionKeyMessage message)
        {
            var secureKey = server.Rsa.Decrypt(message.SecureKey, true);

            session.Crypt = new Crypt(secureKey);
            session.SendAsync(new NotifyCSSessionKeySuccessMessage());
        }
        public void NotifyCSEncryptedSessionKeyMessage(IService service, ProudSession session, NotifyCSEncryptedSessionKeyMessage message)
        {
            using (var rsa = new RSACryptoServiceProvider(1024))
            {
                rsa.ImportCspBlob(message.Key);
                session.EncryptContext = new EncryptContext(128 /*_filter.Config.EncryptedMessageKeyLength*/);

                byte[] blob;
                using (var w = new BinaryWriter(new PooledMemoryStream(service.ArrayPool)))
                {
                    w.Write((byte)1);
                    w.Write((byte)2);
                    w.Write((byte)0);
                    w.Write((byte)0);
                    w.Write(26625);
                    w.Write(41984);

                    var encrypted = rsa.Encrypt(session.EncryptContext.RC4.Key, false);
                    w.Write(encrypted.Reverse());
                    blob = w.ToArray();
                }
                session.Send(new NotifyCSSessionKeySuccessMessage(blob));
            }
        }
Esempio n. 4
0
        public void NotifyCSEncryptedSessionKeyMessage(IChannelHandlerContext context, ProudSession session, NotifyCSEncryptedSessionKeyMessage message)
        {
            using (var rsa = new RSACryptoServiceProvider(1024))
            {
                rsa.ImportCspBlob(message.Key);
                session.Crypt = new Crypt(_server.Configuration.EncryptedMessageKeyLength);

                byte[] blob;
                using (var w = new MemoryStream().ToBinaryWriter(false))
                {
                    w.Write((byte)1);
                    w.Write((byte)2);
                    w.Write((byte)0);
                    w.Write((byte)0);
                    w.Write(26625);
                    w.Write(41984);

                    var encrypted = rsa.Encrypt(session.Crypt.RC4.Key, false);
                    w.Write(encrypted.Reverse());
                    blob = w.ToArray();
                }

                session.SendAsync(new NotifyCSSessionKeySuccessMessage(blob));
            }
        }