Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / ServiceModel / System / ServiceModel / Channels / WindowsStreamSecurityBindingElement.cs / 1 / WindowsStreamSecurityBindingElement.cs
//------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------- namespace System.ServiceModel.Channels { using System.Collections.Generic; using System.ServiceModel.Description; using System.Net.Security; using System.ServiceModel; using System.ServiceModel.Security; using System.Xml; public class WindowsStreamSecurityBindingElement : StreamUpgradeBindingElement, ITransportTokenAssertionProvider, IPolicyExportExtension { ProtectionLevel protectionLevel; public WindowsStreamSecurityBindingElement() : base() { this.protectionLevel = ConnectionOrientedTransportDefaults.ProtectionLevel; } protected WindowsStreamSecurityBindingElement(WindowsStreamSecurityBindingElement elementToBeCloned) : base(elementToBeCloned) { this.protectionLevel = elementToBeCloned.protectionLevel; } public ProtectionLevel ProtectionLevel { get { return this.protectionLevel; } set { ProtectionLevelHelper.Validate(value); this.protectionLevel = value; } } public override BindingElement Clone() { return new WindowsStreamSecurityBindingElement(this); } public override IChannelFactoryBuildChannelFactory (BindingContext context) { if (context == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("context"); } #pragma warning suppress 56506 // [....], BindingContext.BindingParameters cannot be null context.BindingParameters.Add(this); return context.BuildInnerChannelFactory (); } public override bool CanBuildChannelFactory (BindingContext context) { if (context == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("context"); } #pragma warning suppress 56506 // [....], BindingContext.BindingParameters cannot be null context.BindingParameters.Add(this); return context.CanBuildInnerChannelFactory (); } public override IChannelListener BuildChannelListener (BindingContext context) { if (context == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("context"); } #pragma warning suppress 56506 // [....], BindingContext.BindingParameters cannot be null context.BindingParameters.Add(this); return context.BuildInnerChannelListener (); } public override bool CanBuildChannelListener (BindingContext context) { if (context == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("context"); } #pragma warning suppress 56506 // [....], BindingContext.BindingParameters cannot be null context.BindingParameters.Add(this); return context.CanBuildInnerChannelListener (); } public override StreamUpgradeProvider BuildClientStreamUpgradeProvider(BindingContext context) { return new WindowsStreamSecurityUpgradeProvider(this, context, true); } public override StreamUpgradeProvider BuildServerStreamUpgradeProvider(BindingContext context) { return new WindowsStreamSecurityUpgradeProvider(this, context, false); } public override T GetProperty (BindingContext context) { if (context == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("context"); } if (typeof(T) == typeof(ISecurityCapabilities)) { return (T)(object)new SecurityCapabilities(true, true, true, protectionLevel, protectionLevel); } else if (typeof(T) == typeof(IdentityVerifier)) { return (T)(object)IdentityVerifier.CreateDefault(); } else { return context.GetInnerProperty (); } } internal static void ImportPolicy(MetadataImporter importer, PolicyConversionContext policyContext) { XmlElement assertion = PolicyConversionContext.FindAssertion(policyContext.GetBindingAssertions(), TransportPolicyConstants.WindowsTransportSecurityName, TransportPolicyConstants.DotNetFramingNamespace, true); if (assertion != null) { WindowsStreamSecurityBindingElement windowsBindingElement = new WindowsStreamSecurityBindingElement(); XmlReader reader = new XmlNodeReader(assertion); reader.ReadStartElement(); string protectionLevelString = null; if (reader.IsStartElement( TransportPolicyConstants.ProtectionLevelName, TransportPolicyConstants.DotNetFramingNamespace) && !reader.IsEmptyElement) { protectionLevelString = reader.ReadElementContentAsString(); } if (string.IsNullOrEmpty(protectionLevelString)) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new XmlException( SR.GetString(SR.ExpectedElementMissing, TransportPolicyConstants.ProtectionLevelName, TransportPolicyConstants.DotNetFramingNamespace))); } windowsBindingElement.ProtectionLevel = (ProtectionLevel)Enum.Parse(typeof(ProtectionLevel), protectionLevelString); policyContext.BindingElements.Add(windowsBindingElement); } } #region ITransportTokenAssertionProvider Members public XmlElement GetTransportTokenAssertion() { XmlDocument document = new XmlDocument(); XmlElement assertion = document.CreateElement(TransportPolicyConstants.DotNetFramingPrefix, TransportPolicyConstants.WindowsTransportSecurityName, TransportPolicyConstants.DotNetFramingNamespace); XmlElement protectionLevelElement = document.CreateElement(TransportPolicyConstants.DotNetFramingPrefix, TransportPolicyConstants.ProtectionLevelName, TransportPolicyConstants.DotNetFramingNamespace); protectionLevelElement.AppendChild(document.CreateTextNode(this.ProtectionLevel.ToString())); assertion.AppendChild(protectionLevelElement); return assertion; } #endregion void IPolicyExportExtension.ExportPolicy(MetadataExporter exporter, PolicyConversionContext context) { if (exporter == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("exporter"); } if (context == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("context"); } SecurityBindingElement.ExportPolicy(exporter, context); } internal override bool IsMatch(BindingElement b) { if (b == null) { return false; } WindowsStreamSecurityBindingElement security = b as WindowsStreamSecurityBindingElement; if (security == null) { return false; } if (this.protectionLevel != security.protectionLevel) { return false; } return true; } } } // 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
- HttpMethodAttribute.cs
- TextEditorTables.cs
- CompositeScriptReference.cs
- ColorPalette.cs
- CodeSpit.cs
- DesignSurfaceCollection.cs
- SmiEventSink_Default.cs
- TemplatedAdorner.cs
- ContainerActivationHelper.cs
- CompiledWorkflowDefinitionContext.cs
- HotSpotCollectionEditor.cs
- SapiRecoInterop.cs
- InfiniteTimeSpanConverter.cs
- WebPartZoneCollection.cs
- StringUtil.cs
- ScriptDescriptor.cs
- GrabHandleGlyph.cs
- TCEAdapterGenerator.cs
- DebugView.cs
- BuildProviderCollection.cs
- AuthenticatingEventArgs.cs
- XmlCharType.cs
- KeySpline.cs
- HtmlMeta.cs
- PeerCollaborationPermission.cs
- XmlIlGenerator.cs
- HashRepartitionStream.cs
- DebuggerAttributes.cs
- DataSourceXmlAttributeAttribute.cs
- Vector3dCollection.cs
- Attributes.cs
- DbUpdateCommandTree.cs
- Column.cs
- DataGridViewLayoutData.cs
- BitmapDownload.cs
- InternalUserCancelledException.cs
- Type.cs
- AdRotator.cs
- AttachedPropertyInfo.cs
- EventProviderClassic.cs
- ISAPIRuntime.cs
- ChameleonKey.cs
- WindowsSpinner.cs
- InteropAutomationProvider.cs
- ClipboardProcessor.cs
- Oid.cs
- RemoteWebConfigurationHostServer.cs
- ToolStripSplitStackLayout.cs
- HealthMonitoringSection.cs
- SystemEvents.cs
- NotificationContext.cs
- PersonalizationProviderHelper.cs
- BamlTreeUpdater.cs
- RequestQueue.cs
- CompleteWizardStep.cs
- RSAPKCS1KeyExchangeDeformatter.cs
- TextComposition.cs
- ProfileProvider.cs
- ChildTable.cs
- SHA256.cs
- CodeChecksumPragma.cs
- TextCompositionManager.cs
- InheritanceAttribute.cs
- FacetDescriptionElement.cs
- Stream.cs
- DataGridViewComponentPropertyGridSite.cs
- VectorKeyFrameCollection.cs
- BitmapMetadataEnumerator.cs
- SqlDuplicator.cs
- XmlReturnWriter.cs
- OutOfMemoryException.cs
- SemaphoreFullException.cs
- ImageDrawing.cs
- FamilyMap.cs
- CatalogPart.cs
- TraceLevelHelper.cs
- SafeTokenHandle.cs
- UIAgentCrashedException.cs
- Point3DCollection.cs
- ExportFileRequest.cs
- EmbossBitmapEffect.cs
- TraceListener.cs
- ImageCodecInfo.cs
- CustomAttributeSerializer.cs
- List.cs
- BitmapFrameEncode.cs
- OracleRowUpdatingEventArgs.cs
- Light.cs
- XmlChildEnumerator.cs
- Point3DCollectionConverter.cs
- WeakReference.cs
- SmiSettersStream.cs
- SimpleRecyclingCache.cs
- ReadOnlyHierarchicalDataSource.cs
- MILUtilities.cs
- PageClientProxyGenerator.cs
- FontStretches.cs
- ObjectTokenCategory.cs
- Validator.cs
- MetadataArtifactLoaderXmlReaderWrapper.cs