Example #1
0
        public FilterResult Out(MessageHeader header, IMessageDataContainer container)
        {
            var result = new FilterResult { OK = true };
            try
            {
                using (var scope = ObjectHost.Host.BeginLifetimeScope())
                {
                    var plainText = container.Take();
                    var keyId = container.Take().ToHex();
                    var keyProvider = scope.Resolve<ICryptoKeyProvider>();
                    var pubKey = keyProvider.GetPublicKey(keyId);
                    if (pubKey != null && pubKey.Length > 0)
                    {
                        container.Push(new RSACrypto().Encrypt(pubKey, plainText));
                    }
                    else result = new FilterResult { Error = ErrorCode.CryptoKeyReadFailed };
                }
            }
            catch (Exception ex)
            {
                result = new FilterResult { Error = ErrorCode.EncryptFailed };
                Log.Error(result.Error.ToString(), ex);

            }
            return result;
        }
Example #2
0
 public FilterResult In(IMessageDataContainer container)
 {
     var result = new FilterResult { OK = true };
     var checksum = BitConverter.ToUInt32(container.Take(), 0);
     var header = container.Take();
     var content = container.Take();
     var data = header.Concat(content);
     if (Crc32.VerifyDigest(checksum, header.Concat(content), (uint)0, (uint)data.Length))
     {
         container.Push(content);
     }
     else result = new FilterResult { Error = ErrorCode.DataBroken };
     return result;
 }
Example #3
0
 public FilterResult In(IMessageDataContainer container)
 {
     var result = new FilterResult { OK = true };
     try
     {
         var data = container.Take();
         if (data.Length > 0)
             container.Push(data.Unzip());
     }
     catch (Exception ex)
     {
         result = new FilterResult { Error = ErrorCode.UnzipFailed };
         Log.Error(result.Error.ToString(), ex);
     }
     return result;
 }
Example #4
0
        public FilterResult In(IMessageDataContainer container)
        {
            var result = new FilterResult {
                OK = true
            };
            var checksum = BitConverter.ToUInt32(container.Take(), 0);
            var header   = container.Take();
            var content  = container.Take();
            var data     = header.Concat(content);

            if (Crc32.VerifyDigest(checksum, header.Concat(content), (uint)0, (uint)data.Length))
            {
                container.Push(content);
            }
            else
            {
                result = new FilterResult {
                    Error = ErrorCode.DataBroken
                }
            };
            return(result);
        }
Example #5
0
        public FilterResult In(IMessageDataContainer container)
        {
            var result = new FilterResult {
                OK = true
            };

            try
            {
                var data = container.Take();
                if (data.Length > 0)
                {
                    container.Push(data.Unzip());
                }
            }
            catch (Exception ex)
            {
                result = new FilterResult {
                    Error = ErrorCode.UnzipFailed
                };
                Log.Error(result.Error.ToString(), ex);
            }
            return(result);
        }