public bool Handle(IPacket header, IIBLVMSocket socket) { if (header.Type == PacketType.ManagerBitLockerUnlock) { Utils.PacketValidation(socket.Status, (int)ClientSocketStatus.LoggedIn, header.GetPayloadSize(), false); IPayload <ManagerBitLockerUnlock> packet = socket.PacketFactory.CreateManagerBitLockerUnlockRequest(null, null, cryptor); packet.ParsePayload(header.GetPayloadSize(), socket.SocketStream); IDevice receiver = (from device in deviceController.GetUserDevices(session.Account.Id) where device.DeviceIP.Equals(packet.Payload.Drive.IP) select device).FirstOrDefault(); if (receiver != null) { Utils.SendPacket(socket.SocketStream, socket.PacketFactory.CreateServerBitLockerCommandResponse(broadcaster.RequestBitLockerUnlock(receiver, packet.Payload.Drive.Drive, packet.Payload.Password))); } else { Utils.SendPacket(socket.SocketStream, socket.PacketFactory.CreateServerBitLockerCommandResponse(false)); } return(true); } return(false); }