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
- SessionIDManager.cs
- EncryptedXml.cs
- DynamicUpdateCommand.cs
- CounterNameConverter.cs
- KeyBinding.cs
- AssemblyInfo.cs
- EnumValAlphaComparer.cs
- GenericEnumConverter.cs
- TypeConverterAttribute.cs
- DataSysAttribute.cs
- Bind.cs
- XmlEncodedRawTextWriter.cs
- QilPatternFactory.cs
- ConfigurationHelpers.cs
- BaseCollection.cs
- ReadOnlyObservableCollection.cs
- CurrentTimeZone.cs
- OLEDB_Util.cs
- PerformanceCounterCategory.cs
- SizeAnimationClockResource.cs
- ObjectComplexPropertyMapping.cs
- ChannelCacheDefaults.cs
- IDReferencePropertyAttribute.cs
- ConnectionPoolManager.cs
- HitTestParameters3D.cs
- SizeKeyFrameCollection.cs
- ApplicationServicesHostFactory.cs
- OpenFileDialog.cs
- ObjectSecurity.cs
- ItemDragEvent.cs
- CollectionType.cs
- OutputCacheModule.cs
- Brush.cs
- XmlReader.cs
- TransformerTypeCollection.cs
- SQLInt32Storage.cs
- TrackingMemoryStreamFactory.cs
- FieldMetadata.cs
- SpellerError.cs
- Propagator.JoinPropagator.JoinPredicateVisitor.cs
- OutOfMemoryException.cs
- ByteStreamMessageUtility.cs
- TextWriterTraceListener.cs
- WebBrowserNavigatingEventHandler.cs
- StrokeCollectionConverter.cs
- EntityDesignPluralizationHandler.cs
- xmlNames.cs
- mediaeventshelper.cs
- TypeUnloadedException.cs
- HMACSHA256.cs
- IntAverageAggregationOperator.cs
- TextTrailingCharacterEllipsis.cs
- IdentifierCollection.cs
- IImplicitResourceProvider.cs
- WebBrowserHelper.cs
- InvalidTimeZoneException.cs
- ProfileBuildProvider.cs
- PackageFilter.cs
- Base64Decoder.cs
- Label.cs
- DbDeleteCommandTree.cs
- TypeUnloadedException.cs
- InputQueue.cs
- PixelShader.cs
- HostingEnvironment.cs
- PaintValueEventArgs.cs
- CellConstant.cs
- ListBoxAutomationPeer.cs
- BufferModesCollection.cs
- ITreeGenerator.cs
- AnnotationHelper.cs
- UdpDiscoveryMessageFilter.cs
- MonitorWrapper.cs
- SharedRuntimeState.cs
- ByteStream.cs
- StyleCollectionEditor.cs
- LambdaExpression.cs
- IntAverageAggregationOperator.cs
- _CookieModule.cs
- ScriptMethodAttribute.cs
- CompilerLocalReference.cs
- PersonalizableAttribute.cs
- ProtocolsConfigurationHandler.cs
- GridItemPattern.cs
- ContractMapping.cs
- SiteMapNodeCollection.cs
- LambdaCompiler.Lambda.cs
- CustomCategoryAttribute.cs
- DataGrid.cs
- CompiledELinqQueryState.cs
- DefaultSection.cs
- ColorConvertedBitmapExtension.cs
- TextServicesLoader.cs
- CustomLineCap.cs
- RuntimeIdentifierPropertyAttribute.cs
- HierarchicalDataBoundControlAdapter.cs
- Maps.cs
- DbConnectionClosed.cs
- CheckBoxList.cs
- CodeGeneratorOptions.cs