internal static bool TryCreate(BindingElementCollection elements, out Binding binding) { Microsoft.ServiceBus.UnifiedSecurityMode unifiedSecurityMode; NetOnewayRelaySecurity netOnewayRelaySecurity; bool flag; binding = null; if (elements.Count > 3) { return(false); } SecurityBindingElement securityBindingElement = null; BinaryMessageEncodingBindingElement binaryMessageEncodingBindingElement = null; RelayedOnewayTransportBindingElement relayedOnewayTransportBindingElement = null; using (IEnumerator <BindingElement> enumerator = elements.GetEnumerator()) { while (enumerator.MoveNext()) { BindingElement current = enumerator.Current; if (current is SecurityBindingElement) { securityBindingElement = current as SecurityBindingElement; } else if (current is TransportBindingElement) { relayedOnewayTransportBindingElement = current as RelayedOnewayTransportBindingElement; } else if (!(current is MessageEncodingBindingElement)) { flag = false; return(flag); } else { binaryMessageEncodingBindingElement = current as BinaryMessageEncodingBindingElement; } } unifiedSecurityMode = (!relayedOnewayTransportBindingElement.TransportProtectionEnabled ? Microsoft.ServiceBus.UnifiedSecurityMode.None | Microsoft.ServiceBus.UnifiedSecurityMode.Message : Microsoft.ServiceBus.UnifiedSecurityMode.Transport | Microsoft.ServiceBus.UnifiedSecurityMode.TransportWithMessageCredential); if (binaryMessageEncodingBindingElement == null) { return(false); } if (!NetOnewayRelayBinding.TryCreateSecurity(securityBindingElement, relayedOnewayTransportBindingElement.RelayClientAuthenticationType, unifiedSecurityMode, out netOnewayRelaySecurity)) { return(false); } NetOnewayRelayBinding netOnewayRelayBinding = new NetOnewayRelayBinding(netOnewayRelaySecurity); NetOnewayRelayBinding.InitializeFrom(relayedOnewayTransportBindingElement, binaryMessageEncodingBindingElement); if (!netOnewayRelayBinding.IsBindingElementsMatch(relayedOnewayTransportBindingElement, binaryMessageEncodingBindingElement)) { return(false); } binding = netOnewayRelayBinding; return(true); } return(flag); }
internal static bool TryCreate(BindingElementCollection elements, out NetMessagingBinding binding) { bool flag; binding = null; if (elements.Count > 2) { return(false); } BinaryMessageEncodingBindingElement binaryMessageEncodingBindingElement = null; NetMessagingTransportBindingElement netMessagingTransportBindingElement = null; using (IEnumerator <BindingElement> enumerator = elements.GetEnumerator()) { while (enumerator.MoveNext()) { BindingElement current = enumerator.Current; if (current is TransportBindingElement) { netMessagingTransportBindingElement = current as NetMessagingTransportBindingElement; } else if (!(current is BinaryMessageEncodingBindingElement)) { flag = false; return(flag); } else { binaryMessageEncodingBindingElement = current as BinaryMessageEncodingBindingElement; } } if (netMessagingTransportBindingElement == null) { return(false); } if (binaryMessageEncodingBindingElement == null) { return(false); } NetMessagingBinding netMessagingBinding = new NetMessagingBinding(); netMessagingBinding.InitializeFrom(binaryMessageEncodingBindingElement, netMessagingTransportBindingElement); if (!netMessagingBinding.IsBindingElementsMatch(binaryMessageEncodingBindingElement, netMessagingTransportBindingElement)) { return(false); } binding = netMessagingBinding; return(true); } return(flag); }
internal static bool TryCreate(BindingElementCollection elements, out Binding binding) { Microsoft.ServiceBus.UnifiedSecurityMode unifiedSecurityMode; BasicHttpRelaySecurity basicHttpRelaySecurity; bool flag; binding = null; if (elements.Count > 3) { return(false); } SecurityBindingElement securityBindingElement = null; MessageEncodingBindingElement messageEncodingBindingElement = null; HttpRelayTransportBindingElement httpRelayTransportBindingElement = null; using (IEnumerator <BindingElement> enumerator = elements.GetEnumerator()) { while (enumerator.MoveNext()) { BindingElement current = enumerator.Current; if (current is SecurityBindingElement) { securityBindingElement = current as SecurityBindingElement; } else if (current is HttpsRelayTransportBindingElement) { httpRelayTransportBindingElement = current as HttpsRelayTransportBindingElement; } else if (current is HttpRelayTransportBindingElement) { httpRelayTransportBindingElement = current as HttpRelayTransportBindingElement; } else if (!(current is MessageEncodingBindingElement)) { flag = false; return(flag); } else { messageEncodingBindingElement = current as MessageEncodingBindingElement; } } HttpRelayTransportSecurity httpRelayTransportSecurity = new HttpRelayTransportSecurity(); if (!BasicHttpRelayBinding.GetSecurityModeFromTransport(httpRelayTransportBindingElement, httpRelayTransportSecurity, out unifiedSecurityMode)) { return(false); } if (messageEncodingBindingElement == null) { return(false); } if (messageEncodingBindingElement.MessageVersion.Envelope != System.ServiceModel.EnvelopeVersion.Soap11) { return(false); } if (!BasicHttpRelayBinding.TryCreateSecurity(securityBindingElement, httpRelayTransportBindingElement.RelayClientAuthenticationType, unifiedSecurityMode, httpRelayTransportSecurity, out basicHttpRelaySecurity)) { return(false); } BasicHttpRelayBinding basicHttpRelayBinding = new BasicHttpRelayBinding(basicHttpRelaySecurity); basicHttpRelayBinding.InitializeFrom(httpRelayTransportBindingElement, messageEncodingBindingElement); if (!basicHttpRelayBinding.IsBindingElementsMatch(httpRelayTransportBindingElement, messageEncodingBindingElement)) { return(false); } binding = basicHttpRelayBinding; return(true); } return(flag); }
internal static bool TryCreate(BindingElementCollection elements, out Binding binding) { bool flag; binding = null; if (elements.Count > 5) { return(false); } PrivacyNoticeBindingElement privacyNoticeBindingElement = null; System.ServiceModel.Channels.ReliableSessionBindingElement reliableSessionBindingElement = null; SecurityBindingElement securityBindingElement = null; MessageEncodingBindingElement messageEncodingBindingElement = null; HttpRelayTransportBindingElement httpRelayTransportBindingElement = null; using (IEnumerator <BindingElement> enumerator = elements.GetEnumerator()) { while (enumerator.MoveNext()) { BindingElement current = enumerator.Current; if (current is SecurityBindingElement) { securityBindingElement = current as SecurityBindingElement; } else if (current is HttpsRelayTransportBindingElement) { httpRelayTransportBindingElement = current as HttpsRelayTransportBindingElement; } else if (current is HttpRelayTransportBindingElement) { httpRelayTransportBindingElement = current as HttpRelayTransportBindingElement; } else if (current is MessageEncodingBindingElement) { messageEncodingBindingElement = current as MessageEncodingBindingElement; } else if (current is System.ServiceModel.Channels.ReliableSessionBindingElement) { reliableSessionBindingElement = current as System.ServiceModel.Channels.ReliableSessionBindingElement; } else if (!(current is PrivacyNoticeBindingElement)) { flag = false; return(flag); } else { privacyNoticeBindingElement = current as PrivacyNoticeBindingElement; } } if (httpRelayTransportBindingElement == null) { return(false); } if (messageEncodingBindingElement == null) { return(false); } if (privacyNoticeBindingElement != null || !WS2007HttpRelayBinding.TryCreate(securityBindingElement, httpRelayTransportBindingElement.RelayClientAuthenticationType, httpRelayTransportBindingElement, reliableSessionBindingElement, out binding)) { return(false); } WSHttpRelayBindingBase wSHttpRelayBindingBase = binding as WSHttpRelayBindingBase; wSHttpRelayBindingBase.InitializeFrom(httpRelayTransportBindingElement, messageEncodingBindingElement, reliableSessionBindingElement); if (!wSHttpRelayBindingBase.IsBindingElementsMatch(httpRelayTransportBindingElement, messageEncodingBindingElement, reliableSessionBindingElement)) { return(false); } return(true); } return(flag); }