Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / ServiceModel / System / ServiceModel / TcpTransportSecurity.cs / 1 / TcpTransportSecurity.cs
//------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------- namespace System.ServiceModel { using System; using System.ServiceModel.Channels; using System.ServiceModel.Security; using System.Net; using System.Net.Security; public sealed class TcpTransportSecurity { internal const TcpClientCredentialType DefaultClientCredentialType = TcpClientCredentialType.Windows; internal const ProtectionLevel DefaultProtectionLevel = ProtectionLevel.EncryptAndSign; TcpClientCredentialType clientCredentialType; ProtectionLevel protectionLevel; internal TcpTransportSecurity() { this.clientCredentialType = DefaultClientCredentialType; this.protectionLevel = DefaultProtectionLevel; } public TcpClientCredentialType ClientCredentialType { get { return this.clientCredentialType; } set { if (!TcpClientCredentialTypeHelper.IsDefined(value)) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentOutOfRangeException("value")); } this.clientCredentialType = value; } } public ProtectionLevel ProtectionLevel { get { return this.protectionLevel; } set { if (!ProtectionLevelHelper.IsDefined(value)) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentOutOfRangeException("value")); } this.protectionLevel = value; } } SslStreamSecurityBindingElement CreateSslBindingElement(bool requireClientCertificate) { if (this.protectionLevel != ProtectionLevel.EncryptAndSign) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException(SR.GetString( SR.UnsupportedSslProtectionLevel, this.protectionLevel))); } SslStreamSecurityBindingElement result = new SslStreamSecurityBindingElement(); result.RequireClientCertificate = requireClientCertificate; return result; } static bool IsSslBindingElement(BindingElement element, TcpTransportSecurity transportSecurity, out bool requireClientCertificate) { requireClientCertificate = false; SslStreamSecurityBindingElement ssl = element as SslStreamSecurityBindingElement; if (ssl == null) return false; transportSecurity.ProtectionLevel = ProtectionLevel.EncryptAndSign; requireClientCertificate = ssl.RequireClientCertificate; return true; } internal BindingElement CreateTransportProtectionOnly() { return this.CreateSslBindingElement(false); } internal static bool SetTransportProtectionOnly(BindingElement transport, TcpTransportSecurity transportSecurity) { bool requireClientCertificate; return IsSslBindingElement(transport, transportSecurity, out requireClientCertificate); } internal BindingElement CreateTransportProtectionAndAuthentication() { if (this.clientCredentialType == TcpClientCredentialType.Certificate || this.clientCredentialType == TcpClientCredentialType.None) { return this.CreateSslBindingElement(this.clientCredentialType == TcpClientCredentialType.Certificate); } else { WindowsStreamSecurityBindingElement result = new WindowsStreamSecurityBindingElement(); result.ProtectionLevel = this.protectionLevel; return result; } } internal static bool SetTransportProtectionAndAuthentication(BindingElement transport, TcpTransportSecurity transportSecurity) { bool requireClientCertificate = false; if (transport is WindowsStreamSecurityBindingElement) { transportSecurity.ClientCredentialType = TcpClientCredentialType.Windows; transportSecurity.ProtectionLevel = ((WindowsStreamSecurityBindingElement)transport).ProtectionLevel; return true; } else if (IsSslBindingElement(transport, transportSecurity, out requireClientCertificate)) { transportSecurity.ClientCredentialType = requireClientCertificate ? TcpClientCredentialType.Certificate : TcpClientCredentialType.None; return true; } return 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
- SqlNode.cs
- AutoCompleteStringCollection.cs
- SecurityDocument.cs
- RichTextBox.cs
- Label.cs
- ButtonBase.cs
- TextBreakpoint.cs
- KnownTypeHelper.cs
- DoubleUtil.cs
- SafeRegistryHandle.cs
- Collection.cs
- Encoding.cs
- Parsers.cs
- TemplateContentLoader.cs
- BindingManagerDataErrorEventArgs.cs
- AssemblySettingAttributes.cs
- Hex.cs
- RemotingHelper.cs
- Ipv6Element.cs
- LazyTextWriterCreator.cs
- DocumentPageViewAutomationPeer.cs
- SmiEventStream.cs
- BindingMemberInfo.cs
- DLinqTableProvider.cs
- Rfc4050KeyFormatter.cs
- AnimatedTypeHelpers.cs
- TcpDuplicateContext.cs
- SubMenuStyleCollection.cs
- ObjectDataSourceSelectingEventArgs.cs
- ConsoleCancelEventArgs.cs
- ServiceChannelFactory.cs
- ObjectItemNoOpAssemblyLoader.cs
- TypefaceMetricsCache.cs
- CheckedPointers.cs
- RegexReplacement.cs
- MetadataSource.cs
- PropertyToken.cs
- DocumentsTrace.cs
- ArraySet.cs
- DataIdProcessor.cs
- TransformFinalBlockRequest.cs
- ToolStripDropDownClosingEventArgs.cs
- WpfKnownMember.cs
- ServerIdentity.cs
- GeneratedView.cs
- WinEventWrap.cs
- Page.cs
- InstanceStore.cs
- BufferAllocator.cs
- HyperLinkField.cs
- ISAPIWorkerRequest.cs
- RequestDescription.cs
- KerberosTicketHashIdentifierClause.cs
- TableRow.cs
- ActiveDocumentEvent.cs
- RectangleConverter.cs
- TimeoutValidationAttribute.cs
- TextTreeTextBlock.cs
- ResourceAssociationTypeEnd.cs
- PngBitmapDecoder.cs
- XslUrlEditor.cs
- FlowDocumentPaginator.cs
- HostUtils.cs
- DataViewSetting.cs
- SelectedCellsChangedEventArgs.cs
- UriSection.cs
- CodeGeneratorAttribute.cs
- ChannelAcceptor.cs
- ImageMetadata.cs
- DesignerGenericWebPart.cs
- TextBox.cs
- PenContext.cs
- DecoderFallbackWithFailureFlag.cs
- ToolStripDropDown.cs
- RecordConverter.cs
- CollectionBase.cs
- ContainsRowNumberChecker.cs
- TextBlockAutomationPeer.cs
- DataBinder.cs
- SmiMetaDataProperty.cs
- TextBox.cs
- EndPoint.cs
- SettingsPropertyValue.cs
- RequestStatusBarUpdateEventArgs.cs
- CodeDomDecompiler.cs
- TreeViewEvent.cs
- UpdateExpressionVisitor.cs
- TabControlCancelEvent.cs
- RecognizerBase.cs
- UshortList2.cs
- RawStylusActions.cs
- DetectEofStream.cs
- MetadataSource.cs
- ValidationEventArgs.cs
- AssemblyEvidenceFactory.cs
- CaseStatement.cs
- TitleStyle.cs
- SchemeSettingElement.cs
- ObjectDataSource.cs
- WhitespaceRuleLookup.cs