Exemplo n.º 1
0
        protected override void Response()
        {
            GOAEncryption enc =
                new GOAEncryption(_secretKey, _request.Challenge, SBServer.ServerChallenge);

            _sendingBuffer = new ServerListResponse().
                             CombineHeaderAndContext
                             (
                enc.Encrypt(_dataList.ToArray()),
                SBServer.ServerChallenge
                             );
            //refresh encryption state
            SBSession session = (SBSession)_session.GetInstance();

            session.EncState = enc.State;

            if (_sendingBuffer == null || _sendingBuffer.Length < 4)
            {
                return;
            }

            LogWriter.ToLog(LogEventLevel.Debug,
                            $"[Send] { StringExtensions.ReplaceUnreadableCharToHex(_dataList.ToArray(), 0, _dataList.Count)}");
            session.BaseSendAsync(_sendingBuffer);
        }
Exemplo n.º 2
0
        protected override void ConstructResponse()
        {
            _dataList.Add((byte)SBServerResponseType.PushServerMessage);

            byte[] info = GenerateServerInfo().ToArray();

            // we add server info here
            _dataList.AddRange(info);
            LogWriter.ToLog("[Plain] " +
                            StringExtensions.ReplaceUnreadableCharToHex(info));

            byte[] msgLength =
                ByteTools.GetBytes((short)(info.Length + 2), true);

            _dataList.InsertRange(0, msgLength);

            SBSession session = (SBSession)_session.GetInstance();

            GOAEncryption enc = new GOAEncryption(session.EncState);

            _sendingBuffer   = enc.Encrypt(_dataList.ToArray());
            session.EncState = enc.State;
        }