Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / ServiceModel / System / ServiceModel / Security / X509PeerCertificateAuthentication.cs / 1 / X509PeerCertificateAuthentication.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 X509PeerCertificateAuthentication { internal const X509CertificateValidationMode DefaultCertificateValidationMode = X509CertificateValidationMode.PeerOrChainTrust; 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 X509PeerCertificateAuthentication() { } internal X509PeerCertificateAuthentication(X509PeerCertificateAuthentication 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.CreatePeerOrChainTrustValidator(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
- DataGridTextColumn.cs
- StateInitialization.cs
- PeerApplicationLaunchInfo.cs
- Or.cs
- _NegoState.cs
- TransportConfigurationTypeElement.cs
- ProcessModelSection.cs
- HttpHandlerAction.cs
- StandardMenuStripVerb.cs
- ViewPort3D.cs
- PersonalizationStateInfoCollection.cs
- OletxEnlistment.cs
- VersionedStream.cs
- BigInt.cs
- XmlNodeReader.cs
- CodeCommentStatementCollection.cs
- FullTextLine.cs
- regiisutil.cs
- SqlException.cs
- FormatterServices.cs
- KeyTimeConverter.cs
- SqlCommandSet.cs
- ArgumentsParser.cs
- XmlDataImplementation.cs
- ConfigurationSectionGroup.cs
- DialogResultConverter.cs
- DocumentPropertiesDialog.cs
- XD.cs
- RoleGroupCollectionEditor.cs
- ProjectionQueryOptionExpression.cs
- TextDecoration.cs
- RequestQueue.cs
- __ConsoleStream.cs
- SlipBehavior.cs
- ellipse.cs
- cookieexception.cs
- InlineUIContainer.cs
- LeafCellTreeNode.cs
- IDReferencePropertyAttribute.cs
- SchemaCollectionCompiler.cs
- BitmapEffectDrawing.cs
- webeventbuffer.cs
- PathParser.cs
- WebPartDisplayModeCollection.cs
- GlyphElement.cs
- FlowLayoutPanel.cs
- Mutex.cs
- BindingOperations.cs
- StylusDevice.cs
- DispatcherExceptionEventArgs.cs
- WsdlServiceChannelBuilder.cs
- XmlSchemaComplexType.cs
- WmlValidatorAdapter.cs
- PageTheme.cs
- SerialReceived.cs
- EntityTypeEmitter.cs
- Label.cs
- httpapplicationstate.cs
- PackageDocument.cs
- ToolboxItemLoader.cs
- WebServiceParameterData.cs
- FolderNameEditor.cs
- TypeCodeDomSerializer.cs
- AssemblyBuilder.cs
- ObjectParameter.cs
- CapabilitiesUse.cs
- CodeExporter.cs
- FolderNameEditor.cs
- IsolatedStorageFileStream.cs
- DropTarget.cs
- InternalConfigEventArgs.cs
- IntSecurity.cs
- serverconfig.cs
- XmlDocumentFragment.cs
- DebugTrace.cs
- Transform3DGroup.cs
- PrimitiveXmlSerializers.cs
- EntityDataSourceSelectingEventArgs.cs
- ObjectStateEntryBaseUpdatableDataRecord.cs
- XmlILAnnotation.cs
- NumericUpDownAcceleration.cs
- WebBrowserNavigatingEventHandler.cs
- SqlDataSource.cs
- CodeTypeReferenceCollection.cs
- StrongNameSignatureInformation.cs
- Object.cs
- MDIClient.cs
- UmAlQuraCalendar.cs
- RedBlackList.cs
- LoginCancelEventArgs.cs
- ZipIOFileItemStream.cs
- UpdateEventArgs.cs
- _HeaderInfo.cs
- ISessionStateStore.cs
- CalendarDataBindingHandler.cs
- SubMenuStyle.cs
- NullableConverter.cs
- webproxy.cs
- RNGCryptoServiceProvider.cs
- TimeSpan.cs