示例#1
0
        public override PipeFilterResult AfterReading(PipeFilterContext filterContext)
        {
            PipeFilterResult r = new PipeFilterResult(this.Client, null, false);

            if (null != _aead)
            {
                if (!filterContext.Memory.IsEmpty)
                {
                    var cipher = _aead.DecryptTcp(filterContext.Memory.Slice(0, filterContext.MemoryLength));
                    if (null != cipher && cipher.SignificantLength > 0)
                    {
                        r = new PipeFilterResult(this.Client, cipher, true);
                    }
                    else
                    {
                        _logger?.LogError($"AeadCipherTcpFilter AfterReading no cipher data.");
                    }
                }
                else
                {
                    _logger?.LogError($"AeadCipherTcpFilter AfterReading filterContext.Memory.IsEmpty");
                }
            }
            return(r);
        }
示例#2
0
        public override PipeFilterResult BeforeWriting(PipeFilterContext filterContext)
        {
            PipeFilterResult r = new PipeFilterResult(this.Client, null, false);

            if (null != _aead)
            {
                if (!filterContext.Memory.IsEmpty)
                {
                    var cipher = _aead.EncryptTcp(filterContext.Memory.Slice(0, filterContext.MemoryLength));
                    r = new PipeFilterResult(this.Client, cipher, true);
                }
                else
                {
                    _logger?.LogError($"AeadCipherTcpFilter BeforeWriting filterContext.Memory.IsEmpty");
                }
            }
            return(r);
        }
示例#3
0
        public override PipeFilterResult BeforeWriting(PipeFilterContext ctx)
        {
            PipeFilterResult r = new PipeFilterResult(this.Client, null, false);

            if (null != _cipher)
            {
                if (!ctx.Memory.IsEmpty)
                {
                    var bufferCipher = _cipher.EncryptTcp(ctx.Memory);
                    r = new PipeFilterResult(this.Client, bufferCipher, true);
                }
                else
                {
                    _logger?.LogError($"AeadCipherTcpFilter BeforeWriting filterContext.Memory.IsEmpty");
                }
            }
            return(r);
        }