internal SecurityBindingElement CreateSecurityBindingElement(bool isSecureTransportMode, bool isReliableSession) { SecurityBindingElement wSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11; SecurityBindingElement securityBindingElement; if (!isSecureTransportMode) { switch (this.clientCredentialType) { case MessageCredentialType.None: { securityBindingElement = SecurityBindingElement.CreateSslNegotiationBindingElement(false, true); break; } case MessageCredentialType.Windows: { securityBindingElement = SecurityBindingElement.CreateSspiNegotiationBindingElement(true); break; } case MessageCredentialType.UserName: { securityBindingElement = SecurityBindingElement.CreateUserNameForSslBindingElement(true); break; } case MessageCredentialType.Certificate: { securityBindingElement = SecurityBindingElement.CreateSslNegotiationBindingElement(true, true); break; } case MessageCredentialType.IssuedToken: { object[] objArray = new object[] { SecurityUtil.CreateSecurityStandardsManager(new object[0]), this.algorithmSuite }; securityBindingElement = SecurityBindingElement.CreateIssuedTokenForSslBindingElement(SecurityUtil.IssuedSecurityTokenParameters.CreateInfoCardParameters(objArray), true); break; } default: { Microsoft.ServiceBus.Diagnostics.DiagnosticUtility.DebugAssert("unknown ClientCredentialType"); throw Microsoft.ServiceBus.Diagnostics.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new NotSupportedException()); } } wSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11 = SecurityBindingElement.CreateSecureConversationBindingElement(securityBindingElement, true); } else { switch (this.clientCredentialType) { case MessageCredentialType.None: { throw Microsoft.ServiceBus.Diagnostics.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException(Microsoft.ServiceBus.SR.GetString(Resources.ClientCredentialTypeMustBeSpecifiedForMixedMode, new object[0]))); } case MessageCredentialType.Windows: { securityBindingElement = SecurityBindingElement.CreateSspiNegotiationOverTransportBindingElement(true); break; } case MessageCredentialType.UserName: { securityBindingElement = SecurityBindingElement.CreateUserNameOverTransportBindingElement(); break; } case MessageCredentialType.Certificate: { securityBindingElement = SecurityBindingElement.CreateCertificateOverTransportBindingElement(); break; } case MessageCredentialType.IssuedToken: { object[] objArray1 = new object[] { SecurityUtil.CreateSecurityStandardsManager(new object[0]), this.algorithmSuite }; securityBindingElement = SecurityBindingElement.CreateIssuedTokenOverTransportBindingElement(SecurityUtil.IssuedSecurityTokenParameters.CreateInfoCardParameters(objArray1)); break; } default: { Microsoft.ServiceBus.Diagnostics.DiagnosticUtility.DebugAssert("unknown ClientCredentialType"); throw Microsoft.ServiceBus.Diagnostics.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new NotSupportedException()); } } wSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11 = SecurityBindingElement.CreateSecureConversationBindingElement(securityBindingElement); } SecurityAlgorithmSuite algorithmSuite = this.AlgorithmSuite; SecurityAlgorithmSuite securityAlgorithmSuite = algorithmSuite; securityBindingElement.DefaultAlgorithmSuite = algorithmSuite; wSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11.DefaultAlgorithmSuite = securityAlgorithmSuite; wSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11.IncludeTimestamp = true; if (isReliableSession) { wSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11.LocalServiceSettings.ReconnectTransportOnFailure = true; wSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11.LocalClientSettings.ReconnectTransportOnFailure = true; } else { wSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11.LocalServiceSettings.ReconnectTransportOnFailure = false; wSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11.LocalClientSettings.ReconnectTransportOnFailure = false; } securityBindingElement.LocalServiceSettings.IssuedCookieLifetime = TimeSpan.FromMinutes(15); wSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11.MessageSecurityVersion = MessageSecurityVersion.WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11; securityBindingElement.MessageSecurityVersion = MessageSecurityVersion.WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11; return(wSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11); }