Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / ServiceModel / System / ServiceModel / BasicHttpMessageSecurity.cs / 1 / BasicHttpMessageSecurity.cs
//------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------- namespace System.ServiceModel { using System.Net.Security; using System.ServiceModel.Channels; using System.ServiceModel.Security; using System.ServiceModel.Security.Tokens; public sealed class BasicHttpMessageSecurity { internal const BasicHttpMessageCredentialType DefaultClientCredentialType = BasicHttpMessageCredentialType.UserName; BasicHttpMessageCredentialType clientCredentialType; SecurityAlgorithmSuite algorithmSuite; internal BasicHttpMessageSecurity() { clientCredentialType = DefaultClientCredentialType; algorithmSuite = SecurityAlgorithmSuite.Default; } public BasicHttpMessageCredentialType ClientCredentialType { get { return this.clientCredentialType; } set { if (!BasicHttpMessageCredentialTypeHelper.IsDefined(value)) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentOutOfRangeException("value")); } this.clientCredentialType = value; } } public SecurityAlgorithmSuite AlgorithmSuite { get { return this.algorithmSuite; } set { if (value == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("value"); } this.algorithmSuite = value; } } // if any changes are made to this method, please reflect them in the corresponding TryCrete() method internal SecurityBindingElement CreateMessageSecurity(bool isSecureTransportMode) { SecurityBindingElement result; if (isSecureTransportMode) { MessageSecurityVersion version = MessageSecurityVersion.WSSecurity10WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10; switch (this.clientCredentialType) { case BasicHttpMessageCredentialType.Certificate: result = SecurityBindingElement.CreateCertificateOverTransportBindingElement(version); break; case BasicHttpMessageCredentialType.UserName: result = SecurityBindingElement.CreateUserNameOverTransportBindingElement(); result.MessageSecurityVersion = version; break; default: DiagnosticUtility.DebugAssert("Unsupported basic http message credential type"); throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new NotSupportedException()); } } else { if (this.clientCredentialType != BasicHttpMessageCredentialType.Certificate) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException(SR.GetString(SR.BasicHttpMessageSecurityRequiresCertificate))); } result = SecurityBindingElement.CreateMutualCertificateBindingElement(MessageSecurityVersion.WSSecurity10WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10, true); } result.DefaultAlgorithmSuite = this.AlgorithmSuite; result.SecurityHeaderLayout = SecurityHeaderLayout.Lax; result.SetKeyDerivation(false); result.DoNotEmitTrust = true; return result; } // This method reverses the CreateMessageSecurity(bool) method internal static bool TryCreate(SecurityBindingElement sbe, out BasicHttpMessageSecurity security, out bool isSecureTransportMode) { DiagnosticUtility.DebugAssert(null != sbe, string.Empty); security = null; isSecureTransportMode = false; if (sbe.DoNotEmitTrust == false) return false; if (!sbe.IsSetKeyDerivation(false)) return false; if (sbe.SecurityHeaderLayout != SecurityHeaderLayout.Lax) return false; if (sbe.MessageSecurityVersion != MessageSecurityVersion.WSSecurity10WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10) return false; BasicHttpMessageCredentialType credentialType; if (!SecurityBindingElement.IsMutualCertificateBinding(sbe, true)) { isSecureTransportMode = true; if (SecurityBindingElement.IsCertificateOverTransportBinding(sbe)) { credentialType = BasicHttpMessageCredentialType.Certificate; } else if (SecurityBindingElement.IsUserNameOverTransportBinding(sbe)) { credentialType = BasicHttpMessageCredentialType.UserName; } else { return false; } } else { credentialType = BasicHttpMessageCredentialType.Certificate; } security = new BasicHttpMessageSecurity(); security.ClientCredentialType = credentialType; security.AlgorithmSuite = sbe.DefaultAlgorithmSuite; 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
- DefaultSection.cs
- WindowsEditBoxRange.cs
- SqlTransaction.cs
- ProtocolsConfigurationHandler.cs
- DropSource.cs
- DataGridViewRowCollection.cs
- CatalogPartChrome.cs
- RadioButtonList.cs
- SendParametersContent.cs
- AbstractDataSvcMapFileLoader.cs
- SoapInteropTypes.cs
- Int32RectConverter.cs
- MiniModule.cs
- ContextInformation.cs
- MonthCalendar.cs
- TextEmbeddedObject.cs
- DataRelationPropertyDescriptor.cs
- ColorConverter.cs
- WebPartMovingEventArgs.cs
- Double.cs
- ScrollEventArgs.cs
- ComponentTray.cs
- UrlMappingsSection.cs
- _CookieModule.cs
- PackWebResponse.cs
- BindToObject.cs
- MergeExecutor.cs
- SystemSounds.cs
- SystemResources.cs
- FontFamilyValueSerializer.cs
- CreateUserErrorEventArgs.cs
- DuplexChannel.cs
- NameValueFileSectionHandler.cs
- SemanticTag.cs
- RequiredFieldValidator.cs
- _SslStream.cs
- UnsafeNativeMethods.cs
- TypeToken.cs
- LineBreakRecord.cs
- ExpressionBindingCollection.cs
- CodeIdentifier.cs
- MarginsConverter.cs
- NavigationWindowAutomationPeer.cs
- QilReference.cs
- TypedTableHandler.cs
- RichTextBox.cs
- Selection.cs
- AsyncStreamReader.cs
- BitmapSourceSafeMILHandle.cs
- PermissionSetEnumerator.cs
- Stroke2.cs
- XmlExceptionHelper.cs
- PtsPage.cs
- CqlQuery.cs
- SmtpFailedRecipientsException.cs
- SingleAnimationUsingKeyFrames.cs
- SparseMemoryStream.cs
- PageResolution.cs
- Vector.cs
- AsymmetricKeyExchangeDeformatter.cs
- RightsManagementEncryptedStream.cs
- XmlDeclaration.cs
- XmlComplianceUtil.cs
- WindowInteropHelper.cs
- XmlSignatureProperties.cs
- XamlTypeMapper.cs
- AttributeSetAction.cs
- SiteMapDataSource.cs
- DataGridTextBox.cs
- ExtensionSimplifierMarkupObject.cs
- FullTextState.cs
- OptionalMessageQuery.cs
- ClientSponsor.cs
- BrowserCapabilitiesCompiler.cs
- DefaultHttpHandler.cs
- GroupBox.cs
- VoiceSynthesis.cs
- ObjectDisposedException.cs
- AbsoluteQuery.cs
- MessageDispatch.cs
- ObjectKeyFrameCollection.cs
- RegexGroupCollection.cs
- PieceNameHelper.cs
- EndPoint.cs
- ToolStripItemEventArgs.cs
- dsa.cs
- PieceNameHelper.cs
- RouteParameter.cs
- PointLightBase.cs
- EmptyStringExpandableObjectConverter.cs
- ControlIdConverter.cs
- PrintController.cs
- VariableDesigner.xaml.cs
- DataControlPagerLinkButton.cs
- XmlHierarchyData.cs
- WebHttpSecurity.cs
- WindowsNonControl.cs
- FigureHelper.cs
- DeflateEmulationStream.cs
- DataExchangeServiceBinder.cs