Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / ServiceModel / System / ServiceModel / Security / X509ServiceCertificateAuthentication.cs / 1 / X509ServiceCertificateAuthentication.cs
//------------------------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------------------------- namespace System.ServiceModel.Security { using System.IdentityModel.Selectors; using System.ServiceModel; using System.Security.Cryptography.X509Certificates; public class X509ServiceCertificateAuthentication { internal const X509CertificateValidationMode DefaultCertificateValidationMode = X509CertificateValidationMode.ChainTrust; internal const X509RevocationMode DefaultRevocationMode = X509RevocationMode.Online; internal const StoreLocation DefaultTrustedStoreLocation = StoreLocation.CurrentUser; static X509CertificateValidator defaultCertificateValidator; X509CertificateValidationMode certificateValidationMode = DefaultCertificateValidationMode; X509RevocationMode revocationMode = DefaultRevocationMode; StoreLocation trustedStoreLocation = DefaultTrustedStoreLocation; X509CertificateValidator customCertificateValidator = null; bool isReadOnly; internal X509ServiceCertificateAuthentication() { } internal X509ServiceCertificateAuthentication(X509ServiceCertificateAuthentication other) { this.certificateValidationMode = other.certificateValidationMode; this.customCertificateValidator = other.customCertificateValidator; this.revocationMode = other.revocationMode; this.trustedStoreLocation = other.trustedStoreLocation; this.isReadOnly = other.isReadOnly; } internal static X509CertificateValidator DefaultCertificateValidator { get { if (defaultCertificateValidator == null) { bool useMachineContext = DefaultTrustedStoreLocation == StoreLocation.LocalMachine; X509ChainPolicy chainPolicy = new X509ChainPolicy(); chainPolicy.RevocationMode = DefaultRevocationMode; defaultCertificateValidator = X509CertificateValidator.CreateChainTrustValidator(useMachineContext, chainPolicy); } return defaultCertificateValidator; } } public X509CertificateValidationMode CertificateValidationMode { get { return this.certificateValidationMode; } set { X509CertificateValidationModeHelper.Validate(value); ThrowIfImmutable(); this.certificateValidationMode = value; } } public X509RevocationMode RevocationMode { get { return this.revocationMode; } set { ThrowIfImmutable(); this.revocationMode = value; } } public StoreLocation TrustedStoreLocation { get { return this.trustedStoreLocation; } set { ThrowIfImmutable(); this.trustedStoreLocation = value; } } public X509CertificateValidator CustomCertificateValidator { get { return this.customCertificateValidator; } set { ThrowIfImmutable(); this.customCertificateValidator = value; } } internal bool TryGetCertificateValidator(out X509CertificateValidator validator) { validator = null; if (this.certificateValidationMode == X509CertificateValidationMode.None) { validator = X509CertificateValidator.None; } else if (this.certificateValidationMode == X509CertificateValidationMode.PeerTrust) { validator = X509CertificateValidator.PeerTrust; } else if (this.certificateValidationMode == X509CertificateValidationMode.Custom) { validator = this.customCertificateValidator; } else { bool useMachineContext = this.trustedStoreLocation == StoreLocation.LocalMachine; X509ChainPolicy chainPolicy = new X509ChainPolicy(); chainPolicy.RevocationMode = this.revocationMode; if (this.certificateValidationMode == X509CertificateValidationMode.ChainTrust) { validator = X509CertificateValidator.CreateChainTrustValidator(useMachineContext, chainPolicy); } else { validator = X509CertificateValidator.CreatePeerOrChainTrustValidator(useMachineContext, chainPolicy); } } return (validator != null); } internal X509CertificateValidator GetCertificateValidator() { X509CertificateValidator result; if (!TryGetCertificateValidator(out result)) { DiagnosticUtility.DebugAssert(this.customCertificateValidator == null, ""); throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException(SR.GetString(SR.MissingCustomCertificateValidator))); } return result; } internal void MakeReadOnly() { this.isReadOnly = true; } void ThrowIfImmutable() { if (this.isReadOnly) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException(SR.GetString(SR.ObjectIsReadOnly))); } } } } // 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
- CodeArrayCreateExpression.cs
- XmlNodeComparer.cs
- WindowsScrollBar.cs
- SettingsProviderCollection.cs
- MailMessageEventArgs.cs
- ImageSourceValueSerializer.cs
- StrongNameSignatureInformation.cs
- SignHashRequest.cs
- MediaContext.cs
- BaseTypeViewSchema.cs
- MD5.cs
- DrawingVisualDrawingContext.cs
- ListCollectionView.cs
- QueryTask.cs
- InputBuffer.cs
- Perspective.cs
- ConfigurationSectionCollection.cs
- Tracking.cs
- Int64.cs
- ConfigErrorGlyph.cs
- SatelliteContractVersionAttribute.cs
- ToolStripSeparator.cs
- ConfigurationStrings.cs
- ListViewDesigner.cs
- ThreadStateException.cs
- ValidationErrorEventArgs.cs
- PerfService.cs
- FlowDocument.cs
- EndpointAddressMessageFilterTable.cs
- JumpList.cs
- SemanticBasicElement.cs
- SocketConnection.cs
- TextServicesCompartmentEventSink.cs
- ProviderCollection.cs
- SqlMethodTransformer.cs
- ProviderBase.cs
- MutexSecurity.cs
- GenericAuthenticationEventArgs.cs
- ValueSerializerAttribute.cs
- Message.cs
- StateDesigner.Helpers.cs
- ConstructorBuilder.cs
- CollectionViewGroup.cs
- ClockGroup.cs
- safex509handles.cs
- ExtensionSurface.cs
- Logging.cs
- Pair.cs
- ConfigurationConverterBase.cs
- AutomationProperties.cs
- ScrollBarAutomationPeer.cs
- ScrollItemPattern.cs
- ThousandthOfEmRealDoubles.cs
- ConfigurationValue.cs
- EventPropertyMap.cs
- InputLangChangeRequestEvent.cs
- Pointer.cs
- SchemaTypeEmitter.cs
- GradientStop.cs
- Byte.cs
- DataFormats.cs
- BitmapEffectGroup.cs
- BuildProviderAppliesToAttribute.cs
- WizardSideBarListControlItem.cs
- TerminateDesigner.cs
- LostFocusEventManager.cs
- IdentifierService.cs
- CompiledRegexRunnerFactory.cs
- MonthChangedEventArgs.cs
- RoleManagerSection.cs
- PassportAuthenticationEventArgs.cs
- _DigestClient.cs
- ArraySubsetEnumerator.cs
- DataGridCellsPanel.cs
- KerberosRequestorSecurityToken.cs
- DataGrid.cs
- DocumentXmlWriter.cs
- SoapSchemaMember.cs
- MsmqIntegrationChannelListener.cs
- ImageSource.cs
- DebugController.cs
- Point.cs
- MissingMemberException.cs
- XmlSchemaComplexContentExtension.cs
- DbProviderConfigurationHandler.cs
- TextPenaltyModule.cs
- InkCanvasInnerCanvas.cs
- ScriptReference.cs
- ClientTargetCollection.cs
- UIElementParaClient.cs
- Registry.cs
- FixedHighlight.cs
- TextServicesManager.cs
- Symbol.cs
- InstancePersistenceException.cs
- IgnorePropertiesAttribute.cs
- dbdatarecord.cs
- CaseDesigner.xaml.cs
- Number.cs
- ProcessInputEventArgs.cs