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
- AuthenticationService.cs
- RegexEditorDialog.cs
- ContentValidator.cs
- LayoutEngine.cs
- NameTable.cs
- KeyboardEventArgs.cs
- SqlTopReducer.cs
- ParagraphResult.cs
- Math.cs
- PlatformNotSupportedException.cs
- TypeConverterHelper.cs
- ControlCollection.cs
- Oid.cs
- ReversePositionQuery.cs
- FileChangesMonitor.cs
- GestureRecognitionResult.cs
- SHA1CryptoServiceProvider.cs
- ApplicationId.cs
- StandardOleMarshalObject.cs
- PointF.cs
- SudsCommon.cs
- AdPostCacheSubstitution.cs
- SecurityElement.cs
- DecimalStorage.cs
- WindowsRebar.cs
- ContentDisposition.cs
- ScrollViewerAutomationPeer.cs
- ReaderOutput.cs
- WebSysDescriptionAttribute.cs
- TouchDevice.cs
- SystemIPGlobalStatistics.cs
- JsonClassDataContract.cs
- ImageCodecInfo.cs
- XPathScanner.cs
- ScriptResourceHandler.cs
- Stacktrace.cs
- ProfileService.cs
- PersonalizationEntry.cs
- BamlTreeMap.cs
- ActivityValidationServices.cs
- TextParagraph.cs
- HebrewCalendar.cs
- OrderedEnumerableRowCollection.cs
- WindowPattern.cs
- CodeFieldReferenceExpression.cs
- XhtmlTextWriter.cs
- WhitespaceRule.cs
- ProxyWebPart.cs
- EventDescriptorCollection.cs
- TextChangedEventArgs.cs
- EventMappingSettings.cs
- log.cs
- ConvertEvent.cs
- Soap12ProtocolImporter.cs
- C14NUtil.cs
- DefaultBinder.cs
- ThrowHelper.cs
- SoapSchemaMember.cs
- ChildrenQuery.cs
- KoreanCalendar.cs
- FlowLayout.cs
- SpellerError.cs
- XhtmlTextWriter.cs
- DataTemplate.cs
- DynamicDataRouteHandler.cs
- DataServiceHostFactory.cs
- Rfc4050KeyFormatter.cs
- CalloutQueueItem.cs
- CodePageEncoding.cs
- BezierSegment.cs
- ApplicationServiceHelper.cs
- RefreshPropertiesAttribute.cs
- LinqDataSourceHelper.cs
- Calendar.cs
- TlsSspiNegotiation.cs
- ProvidePropertyAttribute.cs
- StylusPointPropertyInfo.cs
- DetailsViewDeleteEventArgs.cs
- FileDialogCustomPlace.cs
- MasterPageBuildProvider.cs
- baseaxisquery.cs
- InlineObject.cs
- IndexerReference.cs
- OleDbConnection.cs
- HostnameComparisonMode.cs
- TextBoxLine.cs
- ReflectEventDescriptor.cs
- DelimitedListTraceListener.cs
- CurrentChangingEventArgs.cs
- AggregateNode.cs
- ClientScriptManager.cs
- OpenTypeLayout.cs
- DefaultAsyncDataDispatcher.cs
- CodeMethodReturnStatement.cs
- OperationAbortedException.cs
- CheckBox.cs
- Byte.cs
- BooleanFunctions.cs
- AnnotationHelper.cs
- WizardPanelChangingEventArgs.cs