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; }
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; }
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; }
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); }
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); }