public UaSoapXmlBinding(
NamespaceTable namespaceUris,
EncodeableFactory factory,
EndpointConfiguration configuration,
EndpointDescription description)
:
base(namespaceUris, factory, configuration)
{
if (description != null && description.SecurityMode != MessageSecurityMode.None)
{
SymmetricSecurityBindingElement bootstrap = (SymmetricSecurityBindingElement)SecurityBindingElement.CreateMutualCertificateBindingElement();
bootstrap.MessageProtectionOrder = MessageProtectionOrder.SignBeforeEncryptAndEncryptSignature;
bootstrap.DefaultAlgorithmSuite = SecurityPolicies.ToSecurityAlgorithmSuite(description.SecurityPolicyUri);
bootstrap.IncludeTimestamp = true;
bootstrap.MessageSecurityVersion = MessageSecurityVersion.WSSecurity11WSTrust13WSSecureConversation13WSSecurityPolicy12BasicSecurityProfile10;
bootstrap.RequireSignatureConfirmation = false;
bootstrap.SecurityHeaderLayout = SecurityHeaderLayout.Strict;
bootstrap.SetKeyDerivation(true);
m_security = (SymmetricSecurityBindingElement)SecurityBindingElement.CreateSecureConversationBindingElement(bootstrap, true);
m_security.MessageProtectionOrder = MessageProtectionOrder.EncryptBeforeSign;
m_security.DefaultAlgorithmSuite = SecurityPolicies.ToSecurityAlgorithmSuite(description.SecurityPolicyUri);
m_security.IncludeTimestamp = true;
m_security.KeyEntropyMode = SecurityKeyEntropyMode.CombinedEntropy;
m_security.MessageSecurityVersion = MessageSecurityVersion.WSSecurity11WSTrust13WSSecureConversation13WSSecurityPolicy12BasicSecurityProfile10;
m_security.RequireSignatureConfirmation = false;
m_security.SecurityHeaderLayout = SecurityHeaderLayout.Strict;
m_security.SetKeyDerivation(true);
}
m_encoding = new TextMessageEncodingBindingElement(MessageVersion.Soap12WSAddressing10, Encoding.UTF8);
// WCF does not distinguish between arrays and byte string.
int maxArrayLength = configuration.MaxArrayLength;
if (configuration.MaxArrayLength < configuration.MaxByteStringLength)
{
maxArrayLength = configuration.MaxByteStringLength;
}
m_encoding.ReaderQuotas.MaxArrayLength = maxArrayLength;
m_encoding.ReaderQuotas.MaxStringContentLength = configuration.MaxStringLength;
m_encoding.ReaderQuotas.MaxBytesPerRead = Int32.MaxValue;
m_encoding.ReaderQuotas.MaxDepth = Int32.MaxValue;
m_encoding.ReaderQuotas.MaxNameTableCharCount = Int32.MaxValue;
m_transport = new HttpTransportBindingElement();
m_transport.AllowCookies = false;
m_transport.AuthenticationScheme = System.Net.AuthenticationSchemes.Anonymous;
m_transport.BypassProxyOnLocal = true;
m_transport.HostNameComparisonMode = HostNameComparisonMode.StrongWildcard;
m_transport.KeepAliveEnabled = true;
m_transport.ManualAddressing = false;
m_transport.MaxBufferPoolSize = Int32.MaxValue;
m_transport.MaxBufferSize = configuration.MaxMessageSize;
m_transport.MaxReceivedMessageSize = configuration.MaxMessageSize;
m_transport.TransferMode = TransferMode.Buffered;
m_transport.UseDefaultWebProxy = false;
}
#endregion