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
- TextEffectCollection.cs
- ConnectionStringsSection.cs
- ColorDialog.cs
- SystemParameters.cs
- CompilerCollection.cs
- ListItemParagraph.cs
- FixUp.cs
- OdbcPermission.cs
- ContextInformation.cs
- GlyphRunDrawing.cs
- CellPartitioner.cs
- SessionIDManager.cs
- AttachedPropertyBrowsableWhenAttributePresentAttribute.cs
- UnionQueryOperator.cs
- WsdlBuildProvider.cs
- XmlDataLoader.cs
- JsonUriDataContract.cs
- Stackframe.cs
- SystemWebCachingSectionGroup.cs
- TraceUtils.cs
- UIInitializationException.cs
- DeobfuscatingStream.cs
- SQLByte.cs
- CheckBoxBaseAdapter.cs
- Processor.cs
- SignatureGenerator.cs
- PathFigureCollection.cs
- Nullable.cs
- BamlLocalizer.cs
- URLString.cs
- TextParagraphView.cs
- ObjectStateFormatter.cs
- ReturnValue.cs
- ToolStripDropTargetManager.cs
- GenericIdentity.cs
- ProfileSection.cs
- PropertyCollection.cs
- WmpBitmapEncoder.cs
- CodeDomComponentSerializationService.cs
- SqlProcedureAttribute.cs
- XAMLParseException.cs
- HandledEventArgs.cs
- VideoDrawing.cs
- DictionaryManager.cs
- Merger.cs
- ColorBlend.cs
- EventLogPermissionAttribute.cs
- MobileUserControlDesigner.cs
- TransformProviderWrapper.cs
- Point3DCollectionValueSerializer.cs
- XmlSerializerSection.cs
- UriTemplateMatch.cs
- WebServiceEnumData.cs
- X509Certificate2.cs
- ListViewInsertionMark.cs
- EnumMemberAttribute.cs
- ToolStripPanel.cs
- DataRowView.cs
- ParentUndoUnit.cs
- FixedBufferAttribute.cs
- SaveCardRequest.cs
- NumericPagerField.cs
- UInt16Converter.cs
- TableCellCollection.cs
- CommandEventArgs.cs
- MLangCodePageEncoding.cs
- FloaterParagraph.cs
- SecurityNegotiationException.cs
- Sequence.cs
- Shape.cs
- OutputCacheProfile.cs
- XmlNullResolver.cs
- Button.cs
- TreeNodeStyle.cs
- GridErrorDlg.cs
- CheckBox.cs
- WindowsIPAddress.cs
- odbcmetadatafactory.cs
- EntityReference.cs
- XmlUrlResolver.cs
- EventProviderTraceListener.cs
- ContextMenuService.cs
- NumericPagerField.cs
- FixedSOMTableRow.cs
- DataTableTypeConverter.cs
- PathNode.cs
- ThousandthOfEmRealDoubles.cs
- Transform.cs
- TableLayoutRowStyleCollection.cs
- ApplicationActivator.cs
- SqlConnection.cs
- CodeConditionStatement.cs
- InlineObject.cs
- Stack.cs
- UInt64Converter.cs
- TransactionContextManager.cs
- XPathBinder.cs
- VersionUtil.cs
- CallbackValidatorAttribute.cs
- DynamicControlParameter.cs