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
- ProtocolsConfiguration.cs
- DiscoveryProxy.cs
- BrowserCapabilitiesCompiler.cs
- CopyOnWriteList.cs
- KeyboardEventArgs.cs
- IndentTextWriter.cs
- TextRangeAdaptor.cs
- BufferModesCollection.cs
- SymmetricCryptoHandle.cs
- __ConsoleStream.cs
- LostFocusEventManager.cs
- QueryOptionExpression.cs
- FontWeightConverter.cs
- ResourcePermissionBaseEntry.cs
- BufferedReadStream.cs
- DefaultMemberAttribute.cs
- Pen.cs
- HttpContext.cs
- SchemaCollectionCompiler.cs
- PersonalizationProvider.cs
- SimpleApplicationHost.cs
- GrammarBuilderBase.cs
- Html32TextWriter.cs
- TemplatePropertyEntry.cs
- ScaleTransform3D.cs
- AuthenticationException.cs
- Schedule.cs
- TableLayoutCellPaintEventArgs.cs
- JsonWriter.cs
- SmtpSection.cs
- RtfToXamlLexer.cs
- SmtpSpecifiedPickupDirectoryElement.cs
- DummyDataSource.cs
- CriticalFinalizerObject.cs
- WindowsSlider.cs
- XmlSerializer.cs
- WebPartVerb.cs
- XmlMessageFormatter.cs
- SymLanguageVendor.cs
- TextBoxBase.cs
- EditorZoneAutoFormat.cs
- NavigationWindow.cs
- CodeRegionDirective.cs
- TextContainerHelper.cs
- ThousandthOfEmRealDoubles.cs
- Command.cs
- DataSourceControlBuilder.cs
- HttpResponseHeader.cs
- Stackframe.cs
- OdbcConnection.cs
- TypeConstant.cs
- ResourcesBuildProvider.cs
- WorkflowApplicationUnhandledExceptionEventArgs.cs
- ClientApiGenerator.cs
- ModuleBuilder.cs
- ToolboxItemCollection.cs
- SecurityKeyIdentifier.cs
- WindowInteractionStateTracker.cs
- PostBackTrigger.cs
- StateItem.cs
- Int64KeyFrameCollection.cs
- InternalCache.cs
- RangeValuePattern.cs
- CommonRemoteMemoryBlock.cs
- SoapElementAttribute.cs
- EventHandlerService.cs
- StreamSecurityUpgradeInitiatorBase.cs
- Merger.cs
- ServiceSecurityAuditElement.cs
- HitTestParameters.cs
- EventBookmark.cs
- ScaleTransform.cs
- SatelliteContractVersionAttribute.cs
- TdsParameterSetter.cs
- RegexStringValidator.cs
- AttachmentCollection.cs
- BrowserInteropHelper.cs
- CustomGrammar.cs
- ScriptReference.cs
- CommonObjectSecurity.cs
- _ShellExpression.cs
- TextPenaltyModule.cs
- InheritanceAttribute.cs
- BindToObject.cs
- MultiViewDesigner.cs
- ExtensibleClassFactory.cs
- StreamResourceInfo.cs
- WebProxyScriptElement.cs
- PersonalizationStateInfoCollection.cs
- OutputCacheSection.cs
- ViewgenGatekeeper.cs
- RedistVersionInfo.cs
- SqlUDTStorage.cs
- Addressing.cs
- InvalidAsynchronousStateException.cs
- QuaternionValueSerializer.cs
- AtomServiceDocumentSerializer.cs
- ScriptIgnoreAttribute.cs
- TypeBrowserDialog.cs
- ReadOnlyCollection.cs