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
- TextRunTypographyProperties.cs
- WorkflowInstance.cs
- PersonalizationStateQuery.cs
- GroupJoinQueryOperator.cs
- PartialTrustVisibleAssemblyCollection.cs
- DataRowExtensions.cs
- Sql8ExpressionRewriter.cs
- SqlDependencyUtils.cs
- GeometryHitTestParameters.cs
- TableLayoutPanelCodeDomSerializer.cs
- TextProviderWrapper.cs
- BaseCodeDomTreeGenerator.cs
- ReferenceSchema.cs
- ZoneIdentityPermission.cs
- Int32KeyFrameCollection.cs
- ResourceKey.cs
- InputMethod.cs
- InkPresenter.cs
- MemberInfoSerializationHolder.cs
- CookieParameter.cs
- CurrencyWrapper.cs
- FormCollection.cs
- SQLBytesStorage.cs
- RoutedEventValueSerializer.cs
- WebPartsPersonalization.cs
- BindingContext.cs
- ElementAtQueryOperator.cs
- WindowsListViewGroup.cs
- SqlExpander.cs
- EventLogReader.cs
- DataViewManager.cs
- SiteMapDataSourceDesigner.cs
- KeyFrames.cs
- X509ChainElement.cs
- DataAdapter.cs
- RuntimeResourceSet.cs
- PrincipalPermission.cs
- URLString.cs
- ColorConverter.cs
- XmlChildNodes.cs
- ReliableOutputConnection.cs
- PropertyMappingExceptionEventArgs.cs
- ProfileGroupSettings.cs
- HwndHostAutomationPeer.cs
- TimelineClockCollection.cs
- MarshalByRefObject.cs
- InternalBase.cs
- XmlSerializerSection.cs
- HwndAppCommandInputProvider.cs
- TcpProcessProtocolHandler.cs
- PropertySegmentSerializer.cs
- ExceptionUtil.cs
- WebPartHelpVerb.cs
- ProxyGenerationError.cs
- RenderData.cs
- ReadOnlyActivityGlyph.cs
- ExceptionUtil.cs
- CommentAction.cs
- FormsAuthenticationEventArgs.cs
- GridView.cs
- TextEditorCopyPaste.cs
- Debug.cs
- CodeAssignStatement.cs
- ElementsClipboardData.cs
- PersistenceIOParticipant.cs
- ProfileSettingsCollection.cs
- InputReportEventArgs.cs
- ErrorWebPart.cs
- CryptoProvider.cs
- SiteMapPathDesigner.cs
- SystemPens.cs
- ConfigurationSectionCollection.cs
- DbDeleteCommandTree.cs
- namescope.cs
- Models.cs
- TextParagraphView.cs
- ValidatorCollection.cs
- EdmRelationshipRoleAttribute.cs
- Argument.cs
- DataGridRelationshipRow.cs
- RedistVersionInfo.cs
- SQLSingleStorage.cs
- TdsEnums.cs
- XPathAncestorQuery.cs
- KerberosSecurityTokenParameters.cs
- WebEventTraceProvider.cs
- PointLight.cs
- MouseButton.cs
- TableSectionStyle.cs
- DropShadowBitmapEffect.cs
- HttpCacheVaryByContentEncodings.cs
- FrameworkTemplate.cs
- XPathSelectionIterator.cs
- StylusEventArgs.cs
- FlagsAttribute.cs
- SHA512.cs
- Point.cs
- ByteRangeDownloader.cs
- SqlProviderUtilities.cs
- XPathDocument.cs