Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / ServiceModel / System / ServiceModel / NetTcpSecurity.cs / 1 / NetTcpSecurity.cs
//------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------- namespace System.ServiceModel { using System.Diagnostics; using System.Net.Security; using System.ServiceModel.Channels; using System.ServiceModel.Security; using System.ServiceModel.Configuration; public sealed class NetTcpSecurity { internal const SecurityMode DefaultMode = SecurityMode.Transport; SecurityMode mode; TcpTransportSecurity transportSecurity; MessageSecurityOverTcp messageSecurity; internal NetTcpSecurity() : this(DefaultMode, new TcpTransportSecurity(), new MessageSecurityOverTcp()) { } NetTcpSecurity(SecurityMode mode, TcpTransportSecurity transportSecurity, MessageSecurityOverTcp messageSecurity) { DiagnosticUtility.DebugAssert(SecurityModeHelper.IsDefined(mode), string.Format("Invalid SecurityMode value: {0}.", mode.ToString())); this.mode = mode; this.transportSecurity = transportSecurity == null ? new TcpTransportSecurity() : transportSecurity; this.messageSecurity = messageSecurity == null ? new MessageSecurityOverTcp() : messageSecurity; } public SecurityMode Mode { get { return this.mode; } set { if (!SecurityModeHelper.IsDefined(value)) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentOutOfRangeException("value")); } this.mode = value; } } public TcpTransportSecurity Transport { get { return this.transportSecurity; } } public MessageSecurityOverTcp Message { get { return this.messageSecurity; } } internal BindingElement CreateTransportSecurity() { if (this.mode == SecurityMode.TransportWithMessageCredential) { return this.transportSecurity.CreateTransportProtectionOnly(); } else if (this.mode == SecurityMode.Transport) { return this.transportSecurity.CreateTransportProtectionAndAuthentication(); } else { return null; } } internal static UnifiedSecurityMode GetModeFromTransportSecurity(BindingElement transport) { if (transport == null) { return UnifiedSecurityMode.None | UnifiedSecurityMode.Message; } else { return UnifiedSecurityMode.TransportWithMessageCredential | UnifiedSecurityMode.Transport; } } internal static bool SetTransportSecurity(BindingElement transport, SecurityMode mode, TcpTransportSecurity transportSecurity) { if (mode == SecurityMode.TransportWithMessageCredential) { return TcpTransportSecurity.SetTransportProtectionOnly(transport, transportSecurity); } else if (mode == SecurityMode.Transport) { return TcpTransportSecurity.SetTransportProtectionAndAuthentication(transport, transportSecurity); } return transport == null; } internal SecurityBindingElement CreateMessageSecurity(bool isReliableSessionEnabled) { if (this.mode == SecurityMode.Message) { return this.messageSecurity.CreateSecurityBindingElement(false, isReliableSessionEnabled, null); } else if (this.mode == SecurityMode.TransportWithMessageCredential) { return this.messageSecurity.CreateSecurityBindingElement(true, isReliableSessionEnabled, this.CreateTransportSecurity()); } else { return null; } } internal static bool TryCreate(SecurityBindingElement wsSecurity, SecurityMode mode, bool isReliableSessionEnabled, BindingElement transportSecurity, TcpTransportSecurity tcpTransportSecurity, out NetTcpSecurity security) { security = null; MessageSecurityOverTcp messageSecurity = null; if (mode == SecurityMode.Message) { if (!MessageSecurityOverTcp.TryCreate(wsSecurity, isReliableSessionEnabled, null, out messageSecurity)) return false; } else if (mode == SecurityMode.TransportWithMessageCredential) { if (!MessageSecurityOverTcp.TryCreate(wsSecurity, isReliableSessionEnabled, transportSecurity, out messageSecurity)) return false; } security = new NetTcpSecurity(mode, tcpTransportSecurity, messageSecurity); return SecurityElement.AreBindingsMatching(security.CreateMessageSecurity(isReliableSessionEnabled), wsSecurity, false); } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- CallContext.cs
- ProfessionalColors.cs
- ObjectDataSourceMethodEventArgs.cs
- NumericUpDown.cs
- AppearanceEditorPart.cs
- OracleConnectionStringBuilder.cs
- DriveNotFoundException.cs
- OdbcInfoMessageEvent.cs
- SecurityKeyType.cs
- RegexCharClass.cs
- SecurityToken.cs
- ExceptionUtil.cs
- SqlUDTStorage.cs
- Point4DConverter.cs
- EncoderReplacementFallback.cs
- Material.cs
- Oid.cs
- ElementHostAutomationPeer.cs
- ControlParameter.cs
- NullableDecimalMinMaxAggregationOperator.cs
- GlobalItem.cs
- XhtmlBasicPanelAdapter.cs
- ResourceWriter.cs
- DocumentPropertiesDialog.cs
- WmiInstallComponent.cs
- RemoteWebConfigurationHost.cs
- LogicalTreeHelper.cs
- SmtpTransport.cs
- LocationSectionRecord.cs
- SqlLiftWhereClauses.cs
- ColorTranslator.cs
- RawStylusInputCustomDataList.cs
- HttpServerUtilityBase.cs
- MILUtilities.cs
- _SslState.cs
- DataProviderNameConverter.cs
- MILUtilities.cs
- EncoderBestFitFallback.cs
- Number.cs
- RegexGroup.cs
- GenericsNotImplementedException.cs
- ExpressionPrefixAttribute.cs
- COM2IVsPerPropertyBrowsingHandler.cs
- TransformerInfo.cs
- Subtree.cs
- XmlBoundElement.cs
- PointHitTestParameters.cs
- RootNamespaceAttribute.cs
- StyleBamlTreeBuilder.cs
- Trustee.cs
- ObjectView.cs
- XmlObjectSerializer.cs
- ToolBarButtonClickEvent.cs
- xml.cs
- CommunicationObjectAbortedException.cs
- DeferredElementTreeState.cs
- ImageCodecInfoPrivate.cs
- ClientConfigurationSystem.cs
- ObjectNavigationPropertyMapping.cs
- Exceptions.cs
- DefaultCommandExtensionCallback.cs
- PeerContact.cs
- MetadataItem.cs
- MessageQueuePermission.cs
- PocoEntityKeyStrategy.cs
- ContentOperations.cs
- Registry.cs
- SqlBuilder.cs
- xml.cs
- VariableQuery.cs
- Button.cs
- ListBoxItemWrapperAutomationPeer.cs
- TreeNodeEventArgs.cs
- AudioFormatConverter.cs
- MruCache.cs
- SubMenuStyle.cs
- ErasingStroke.cs
- ProcessHostServerConfig.cs
- TagPrefixCollection.cs
- RecipientInfo.cs
- StyleCollection.cs
- basenumberconverter.cs
- httpapplicationstate.cs
- DesignerActionMethodItem.cs
- CodeStatement.cs
- InvalidCastException.cs
- TemplateKey.cs
- WebBrowserProgressChangedEventHandler.cs
- WindowsScroll.cs
- CustomExpressionEventArgs.cs
- SmtpLoginAuthenticationModule.cs
- TransformDescriptor.cs
- GlyphRun.cs
- _DomainName.cs
- EventLogLink.cs
- _SecureChannel.cs
- TableItemPatternIdentifiers.cs
- RecipientIdentity.cs
- CreatingCookieEventArgs.cs
- GetTokenRequest.cs