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
- IndicShape.cs
- ExpandableObjectConverter.cs
- ForceCopyBuildProvider.cs
- HwndKeyboardInputProvider.cs
- ColumnMap.cs
- Roles.cs
- TypeContext.cs
- SupportsEventValidationAttribute.cs
- GridViewRowPresenterBase.cs
- DesignerVerbCollection.cs
- BooleanAnimationUsingKeyFrames.cs
- InputLanguageSource.cs
- ByteKeyFrameCollection.cs
- MetafileHeaderWmf.cs
- IteratorDescriptor.cs
- ObservableDictionary.cs
- OrderedDictionaryStateHelper.cs
- Italic.cs
- CounterCreationDataConverter.cs
- InputManager.cs
- DependsOnAttribute.cs
- HandlerFactoryCache.cs
- RelatedView.cs
- TreeNodeBindingCollection.cs
- Int64.cs
- TimersDescriptionAttribute.cs
- DataGridViewRow.cs
- TimeSpanSecondsConverter.cs
- FontEmbeddingManager.cs
- ExpressionNode.cs
- HtmlValidationSummaryAdapter.cs
- TableStyle.cs
- FontFaceLayoutInfo.cs
- Filter.cs
- EncryptedType.cs
- SortDescription.cs
- RegistryHandle.cs
- BevelBitmapEffect.cs
- AutomationFocusChangedEventArgs.cs
- WebPartManager.cs
- ShapingWorkspace.cs
- TableParagraph.cs
- BitmapEffectInput.cs
- newitemfactory.cs
- RegexWriter.cs
- StrongTypingException.cs
- AutoResetEvent.cs
- Cursors.cs
- DataSysAttribute.cs
- CheckBoxRenderer.cs
- ComboBoxItem.cs
- Win32Native.cs
- PackageProperties.cs
- ResXResourceSet.cs
- HttpServerUtilityWrapper.cs
- BooleanExpr.cs
- OutputCacheSettings.cs
- ToolboxComponentsCreatedEventArgs.cs
- ConfigPathUtility.cs
- XmlStreamedByteStreamReader.cs
- ConfigXmlElement.cs
- RichTextBoxDesigner.cs
- ThreadAbortException.cs
- Int32CollectionValueSerializer.cs
- UnknownBitmapEncoder.cs
- RelativeSource.cs
- GridViewColumnHeader.cs
- SchemaDeclBase.cs
- LogManagementAsyncResult.cs
- HostingEnvironment.cs
- AppDomainResourcePerfCounters.cs
- XmlSchemaException.cs
- DataGridViewCellParsingEventArgs.cs
- PropertyGrid.cs
- DefaultClaimSet.cs
- IndentedWriter.cs
- SafeViewOfFileHandle.cs
- LinearKeyFrames.cs
- ParameterElementCollection.cs
- SystemInformation.cs
- ColorContextHelper.cs
- PropertyValueChangedEvent.cs
- ITextView.cs
- RoutedEventConverter.cs
- HelloOperation11AsyncResult.cs
- RegistryKey.cs
- ToolStripRendererSwitcher.cs
- Exceptions.cs
- ColumnBinding.cs
- SaveFileDialogDesigner.cs
- StylusPointDescription.cs
- FacetDescription.cs
- Peer.cs
- HostingEnvironmentException.cs
- NavigationEventArgs.cs
- Themes.cs
- DocumentGridPage.cs
- SecurityContext.cs
- path.cs
- GridViewSortEventArgs.cs