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);
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        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);
        }