Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / WCF / IdentityModel / System / IdentityModel / Tokens / X509IssuerSerialKeyIdentifierClause.cs / 1305376 / X509IssuerSerialKeyIdentifierClause.cs
//------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------- namespace System.IdentityModel.Tokens { using System.Diagnostics; using System.Globalization; using System.Security.Cryptography; using System.Security.Cryptography.X509Certificates; public class X509IssuerSerialKeyIdentifierClause : SecurityKeyIdentifierClause { readonly string issuerName; readonly string issuerSerialNumber; public X509IssuerSerialKeyIdentifierClause(string issuerName, string issuerSerialNumber) : base(null) { if (String.IsNullOrEmpty(issuerName)) throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("issuerName"); if (String.IsNullOrEmpty(issuerSerialNumber)) throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("issuerSerialNumber"); this.issuerName = issuerName; this.issuerSerialNumber = issuerSerialNumber; } public X509IssuerSerialKeyIdentifierClause(X509Certificate2 certificate) : base(null) { if (certificate == null) throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("certificate"); this.issuerName = certificate.Issuer; this.issuerSerialNumber = Asn1IntegerConverter.Asn1IntegerToDecimalString(certificate.GetSerialNumber()); } public string IssuerName { get { return this.issuerName; } } public string IssuerSerialNumber { get { return this.issuerSerialNumber; } } public override bool Matches(SecurityKeyIdentifierClause keyIdentifierClause) { X509IssuerSerialKeyIdentifierClause that = keyIdentifierClause as X509IssuerSerialKeyIdentifierClause; // PreSharp Bug: Parameter 'that' to this public method must be validated: A null-dereference can occur here. #pragma warning suppress 56506 return ReferenceEquals(this, that) || (that != null && that.Matches(this.issuerName, this.issuerSerialNumber)); } public bool Matches(X509Certificate2 certificate) { if (certificate == null) return false; return Matches(certificate.Issuer, Asn1IntegerConverter.Asn1IntegerToDecimalString(certificate.GetSerialNumber())); } public bool Matches(string issuerName, string issuerSerialNumber) { if (issuerName == null) { return false; } // If serial numbers dont match, we can avoid the potentially expensive issuer name comparison if (this.issuerSerialNumber != issuerSerialNumber) { return false; } // Serial numbers match. Do a string comparison of issuer names if (this.issuerName == issuerName) { return true; } // String equality comparison for issuer names failed // Do a byte-level comparison of the X500 distinguished names corresponding to the issuer names. // X500DistinguishedName constructor can throw for malformed inputs bool x500IssuerNameMatch = false; try { if (CryptoHelper.IsEqual(new X500DistinguishedName(this.issuerName).RawData, new X500DistinguishedName(issuerName).RawData)) { x500IssuerNameMatch = true; } } catch (CryptographicException e) { // Absorb and log exception. Fallthrough and return false from method. if (DiagnosticUtility.ShouldTraceWarning) { DiagnosticUtility.ExceptionUtility.TraceHandledException(e, TraceEventType.Warning); } } return x500IssuerNameMatch; } public override string ToString() { return string.Format(CultureInfo.InvariantCulture, "X509IssuerSerialKeyIdentifierClause(Issuer = '{0}', Serial = '{1}')", this.IssuerName, this.IssuerSerialNumber); } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- messageonlyhwndwrapper.cs
- Membership.cs
- TouchDevice.cs
- Mapping.cs
- VisualStyleInformation.cs
- GeneralTransform3DCollection.cs
- xmlglyphRunInfo.cs
- SchemaConstraints.cs
- XmlParserContext.cs
- Glyph.cs
- TargetParameterCountException.cs
- OdbcErrorCollection.cs
- DispatcherProcessingDisabled.cs
- DataBindingExpressionBuilder.cs
- GetPolicyDetailsRequest.cs
- SizeAnimationClockResource.cs
- DeflateStream.cs
- EdgeProfileValidation.cs
- PerformanceCounterCategory.cs
- Metadata.cs
- ColumnHeader.cs
- EncodingNLS.cs
- X509CertificateClaimSet.cs
- ResXResourceReader.cs
- ConnectionPool.cs
- ClassDataContract.cs
- BitHelper.cs
- TimeSpanParse.cs
- ViewStateException.cs
- TopClause.cs
- DataGridViewCellValidatingEventArgs.cs
- ComponentResourceManager.cs
- CornerRadiusConverter.cs
- ToolStripArrowRenderEventArgs.cs
- ReflectionTypeLoadException.cs
- Int32.cs
- RangeValueProviderWrapper.cs
- SQLSingleStorage.cs
- GridToolTip.cs
- __Error.cs
- PropertyItemInternal.cs
- DiscoveryEndpointElement.cs
- MenuDesigner.cs
- DataGridTable.cs
- MgmtResManager.cs
- NamespaceList.cs
- ResourcePool.cs
- BinaryFormatter.cs
- CDSsyncETWBCLProvider.cs
- Serializer.cs
- MouseEventArgs.cs
- ReflectionUtil.cs
- JsonEncodingStreamWrapper.cs
- DbConnectionPoolOptions.cs
- ContentOnlyMessage.cs
- ScrollableControl.cs
- SystemWebSectionGroup.cs
- updatecommandorderer.cs
- PrimitiveSchema.cs
- SettingsPropertyCollection.cs
- StyleConverter.cs
- CodeComment.cs
- ProviderConnectionPointCollection.cs
- DynamicMethod.cs
- InkCanvasInnerCanvas.cs
- ThousandthOfEmRealDoubles.cs
- SchemaTypeEmitter.cs
- WebDescriptionAttribute.cs
- ToolStripLocationCancelEventArgs.cs
- QilTernary.cs
- XmlSchemaIdentityConstraint.cs
- DecodeHelper.cs
- TickBar.cs
- Knowncolors.cs
- PageBuildProvider.cs
- MetadataItem_Static.cs
- UIElement3DAutomationPeer.cs
- StorageEntitySetMapping.cs
- RecordManager.cs
- ActivityDelegate.cs
- ContentElementCollection.cs
- WebPartsSection.cs
- FileDataSourceCache.cs
- LoginViewDesigner.cs
- Vector3DIndependentAnimationStorage.cs
- CompensableActivity.cs
- X509CertificateRecipientClientCredential.cs
- SocketAddress.cs
- EntryWrittenEventArgs.cs
- OdbcError.cs
- UInt16Converter.cs
- XmlSignatureProperties.cs
- Control.cs
- StringUtil.cs
- DefaultValueAttribute.cs
- Transactions.cs
- GregorianCalendarHelper.cs
- UnauthorizedAccessException.cs
- SimpleExpression.cs
- ClientBuildManagerTypeDescriptionProviderBridge.cs