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
- EncryptedType.cs
- PageCache.cs
- EventLogStatus.cs
- IteratorFilter.cs
- GreenMethods.cs
- CodeGen.cs
- TreeViewCancelEvent.cs
- BuildProviderAppliesToAttribute.cs
- CqlQuery.cs
- CorrelationHandle.cs
- ContentElement.cs
- EditorAttribute.cs
- SchemaMapping.cs
- RegexWorker.cs
- XNodeNavigator.cs
- MouseBinding.cs
- BitmapMetadata.cs
- AnnotationHelper.cs
- WebControlsSection.cs
- SchemaImporterExtensionsSection.cs
- CodeTypeReferenceCollection.cs
- CacheDependency.cs
- SourceSwitch.cs
- CodeDomDecompiler.cs
- BitmapEffectInput.cs
- ColorConverter.cs
- EmptyStringExpandableObjectConverter.cs
- StoragePropertyMapping.cs
- DirectoryObjectSecurity.cs
- AsyncOperation.cs
- XmlBufferReader.cs
- DataMember.cs
- ContainerControl.cs
- TableParagraph.cs
- FormsAuthenticationUser.cs
- Rect3D.cs
- DbFunctionCommandTree.cs
- TypeBuilder.cs
- HostedBindingBehavior.cs
- GlyphingCache.cs
- DefaultValueAttribute.cs
- HyperLinkStyle.cs
- SelectionPatternIdentifiers.cs
- BulletedList.cs
- Point3DConverter.cs
- XmlCollation.cs
- EraserBehavior.cs
- AccessControlEntry.cs
- Transform3DGroup.cs
- WindowPattern.cs
- DiscoveryClientChannelFactory.cs
- Root.cs
- TextElementEditingBehaviorAttribute.cs
- EventLogStatus.cs
- RenderDataDrawingContext.cs
- AttributeTable.cs
- BitmapEffectDrawingContextState.cs
- ScopeCollection.cs
- CaseStatement.cs
- RootAction.cs
- KeyMatchBuilder.cs
- RowBinding.cs
- SqlTriggerContext.cs
- Typography.cs
- AuthorizationSection.cs
- uribuilder.cs
- SqlIdentifier.cs
- StylusPointProperties.cs
- Switch.cs
- XmlSchemaType.cs
- WebPartRestoreVerb.cs
- WindowExtensionMethods.cs
- HostingPreferredMapPath.cs
- XhtmlBasicLinkAdapter.cs
- FlowDocument.cs
- Int32Storage.cs
- Converter.cs
- QueryInterceptorAttribute.cs
- BulletedList.cs
- ProfilePropertySettings.cs
- TimeSpanSecondsOrInfiniteConverter.cs
- ApplySecurityAndSendAsyncResult.cs
- IDQuery.cs
- CqlParser.cs
- SamlConditions.cs
- ColumnCollectionEditor.cs
- TextEditorMouse.cs
- Int64Storage.cs
- AccessViolationException.cs
- EntryIndex.cs
- AsyncOperation.cs
- URLBuilder.cs
- ParentUndoUnit.cs
- SqlConnectionPoolProviderInfo.cs
- GregorianCalendar.cs
- EventBuilder.cs
- RayMeshGeometry3DHitTestResult.cs
- ColorInterpolationModeValidation.cs
- ContentElement.cs
- EmulateRecognizeCompletedEventArgs.cs