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
- ToolStripItemImageRenderEventArgs.cs
- SmtpReplyReaderFactory.cs
- Drawing.cs
- Utils.cs
- BorderSidesEditor.cs
- DefaultEvaluationContext.cs
- FastEncoder.cs
- EllipseGeometry.cs
- View.cs
- COM2ExtendedTypeConverter.cs
- RecordsAffectedEventArgs.cs
- ZipIOExtraFieldZip64Element.cs
- SaveFileDialogDesigner.cs
- SqlCommand.cs
- DependencyPropertyDescriptor.cs
- DateTimeStorage.cs
- ToolStripControlHost.cs
- AssociationTypeEmitter.cs
- AddingNewEventArgs.cs
- CodeDirectionExpression.cs
- HelpKeywordAttribute.cs
- ConfigurationManager.cs
- DataGridViewRowPrePaintEventArgs.cs
- TemplateBindingExtensionConverter.cs
- ContainerControl.cs
- PageAdapter.cs
- SecurityException.cs
- SourceLocationProvider.cs
- Transform.cs
- AnnotationAdorner.cs
- WriteStateInfoBase.cs
- TimeSpanMinutesConverter.cs
- ExcCanonicalXml.cs
- DuplicateWaitObjectException.cs
- FixedSOMImage.cs
- ToolZoneDesigner.cs
- NameTable.cs
- MemberInfoSerializationHolder.cs
- LinearKeyFrames.cs
- TextServicesDisplayAttribute.cs
- NumericUpDownAccelerationCollection.cs
- SoapSchemaImporter.cs
- StrokeNodeData.cs
- DbConnectionPoolOptions.cs
- DiagnosticsConfiguration.cs
- Visitor.cs
- SignatureDescription.cs
- EdmProperty.cs
- TargetException.cs
- FacetValueContainer.cs
- LocatorBase.cs
- OneOfElement.cs
- WorkflowValidationFailedException.cs
- WindowsListViewItemCheckBox.cs
- ToolStripCustomTypeDescriptor.cs
- FlowPosition.cs
- StringPropertyBuilder.cs
- XmlName.cs
- XmlObjectSerializerReadContext.cs
- InternalBufferOverflowException.cs
- EntityViewGenerationAttribute.cs
- DelegateSerializationHolder.cs
- AncestorChangedEventArgs.cs
- CharStorage.cs
- ProfileSettingsCollection.cs
- StandardToolWindows.cs
- EntityTypeBase.cs
- RichTextBoxAutomationPeer.cs
- ReadOnlyHierarchicalDataSource.cs
- HostedImpersonationContext.cs
- FileSystemEventArgs.cs
- DataGrid.cs
- ToolStripItemImageRenderEventArgs.cs
- GeneratedView.cs
- DetailsViewRow.cs
- ViewgenGatekeeper.cs
- PanningMessageFilter.cs
- MetadataItemEmitter.cs
- PolicyManager.cs
- StringUtil.cs
- Intellisense.cs
- RowSpanVector.cs
- SqlSupersetValidator.cs
- QuadraticBezierSegment.cs
- SpotLight.cs
- ProgressPage.cs
- GlyphRunDrawing.cs
- TaskDesigner.cs
- MetadataItemEmitter.cs
- EditorPartCollection.cs
- _CookieModule.cs
- PackageRelationship.cs
- SparseMemoryStream.cs
- Descriptor.cs
- Control.cs
- HealthMonitoringSection.cs
- PropertySourceInfo.cs
- MemoryRecordBuffer.cs
- InternalConfigEventArgs.cs
- XamlTreeBuilderBamlRecordWriter.cs