private static bool TryCreateSecurity(SecurityBindingElement sbe, Microsoft.ServiceBus.UnifiedSecurityMode mode, Microsoft.ServiceBus.RelayClientAuthenticationType relayClientAuthenticationType, HttpRelayTransportSecurity transportSecurity, bool isReliableSession, out WSHttpRelaySecurity security) { if (!WSHttpRelaySecurity.TryCreate(sbe, mode, transportSecurity, relayClientAuthenticationType, isReliableSession, out security)) { return(false); } if (sbe == null) { return(true); } return(WS2007HttpRelayBinding.AreBindingsMatching(security.CreateMessageSecurity(isReliableSession, WS2007HttpRelayBinding.WS2007MessageSecurityVersion), sbe)); }
internal static bool TryCreate(SecurityBindingElement sbe, Microsoft.ServiceBus.RelayClientAuthenticationType relayClientAuthenticationType, TransportBindingElement transport, System.ServiceModel.Channels.ReliableSessionBindingElement rsbe, out Binding binding) { Microsoft.ServiceBus.UnifiedSecurityMode unifiedSecurityMode; WSHttpRelaySecurity wSHttpRelaySecurity; bool flag; bool flag1 = rsbe != null; binding = null; HttpRelayTransportSecurity defaultHttpTransportSecurity = WSHttpRelaySecurity.GetDefaultHttpTransportSecurity(); if (!WSHttpRelayBinding.GetSecurityModeFromTransport(transport, defaultHttpTransportSecurity, out unifiedSecurityMode)) { return(false); } HttpsRelayTransportBindingElement httpsRelayTransportBindingElement = transport as HttpsRelayTransportBindingElement; if (httpsRelayTransportBindingElement != null && httpsRelayTransportBindingElement.MessageSecurityVersion != null && httpsRelayTransportBindingElement.MessageSecurityVersion.SecurityPolicyVersion != WS2007HttpRelayBinding.WS2007MessageSecurityVersion.SecurityPolicyVersion) { return(false); } if (WS2007HttpRelayBinding.TryCreateSecurity(sbe, unifiedSecurityMode, relayClientAuthenticationType, defaultHttpTransportSecurity, flag1, out wSHttpRelaySecurity)) { WS2007HttpRelayBinding wS2007HttpRelayBinding = new WS2007HttpRelayBinding(wSHttpRelaySecurity, flag1); if (!WSHttpRelayBinding.TryGetAllowCookiesFromTransport(transport, out flag)) { return(false); } wS2007HttpRelayBinding.AllowCookies = flag; binding = wS2007HttpRelayBinding; } if (rsbe != null && rsbe.ReliableMessagingVersion != ReliableMessagingVersion.WSReliableMessaging11) { return(false); } return(binding != null); }
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); }