Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / IdentityModel / System / IdentityModel / Tokens / X509IssuerSerialKeyIdentifierClause.cs / 1 / 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 (issuerName == null) throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("issuerName"); if (issuerSerialNumber == null) 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. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ExceptionNotification.cs
- SchemaSetCompiler.cs
- RequestedSignatureDialog.cs
- Image.cs
- HashLookup.cs
- NameValuePair.cs
- InvokeBinder.cs
- ObjectToIdCache.cs
- XmlAttribute.cs
- FileDataSourceCache.cs
- RuleElement.cs
- DefaultObjectMappingItemCollection.cs
- ThreadInterruptedException.cs
- Int64Converter.cs
- EventLogTraceListener.cs
- UpDownBase.cs
- DBNull.cs
- Vector3DAnimation.cs
- CodeCommentStatementCollection.cs
- XPathParser.cs
- Point3DCollection.cs
- EntitySqlQueryState.cs
- Underline.cs
- XamlInt32CollectionSerializer.cs
- ReadOnlyDataSourceView.cs
- ImageAutomationPeer.cs
- CommandEventArgs.cs
- HtmlUtf8RawTextWriter.cs
- SchemaElementDecl.cs
- JournalEntryStack.cs
- ImagingCache.cs
- NullableDoubleAverageAggregationOperator.cs
- NetNamedPipeSecurityElement.cs
- UrlAuthorizationModule.cs
- ResolveCriteriaApril2005.cs
- TemplateColumn.cs
- ConfigurationFileMap.cs
- TextServicesCompartment.cs
- CollectionViewGroupInternal.cs
- IDQuery.cs
- DeclaredTypeElementCollection.cs
- DataSourceSerializationException.cs
- OleDbConnection.cs
- X509ScopedServiceCertificateElementCollection.cs
- Cursors.cs
- XPathNodeInfoAtom.cs
- DrawingContextWalker.cs
- ObjectItemLoadingSessionData.cs
- CompilerWrapper.cs
- DataComponentGenerator.cs
- ReachIDocumentPaginatorSerializerAsync.cs
- HostAdapter.cs
- VectorConverter.cs
- ComplusTypeValidator.cs
- RunInstallerAttribute.cs
- SoapAttributeOverrides.cs
- VScrollBar.cs
- FormCollection.cs
- DataFieldEditor.cs
- NameValueConfigurationCollection.cs
- SettingsPropertyValueCollection.cs
- ExtensionDataObject.cs
- DataGridHyperlinkColumn.cs
- SelectionGlyphBase.cs
- DataServiceEntityAttribute.cs
- LabelAutomationPeer.cs
- TextWriterTraceListener.cs
- HttpProfileGroupBase.cs
- TextPattern.cs
- DataGridViewCellCancelEventArgs.cs
- MessageFilter.cs
- MenuScrollingVisibilityConverter.cs
- DataSourceControl.cs
- NavigationProperty.cs
- ToolStripGripRenderEventArgs.cs
- CodeSnippetCompileUnit.cs
- ValidationHelpers.cs
- PointAnimationClockResource.cs
- CodeExpressionRuleDeclaration.cs
- DictionaryKeyPropertyAttribute.cs
- UnsafeNativeMethodsTablet.cs
- MethodBody.cs
- StoragePropertyMapping.cs
- ClientBuildManagerCallback.cs
- DateTime.cs
- ConfigurationSectionHelper.cs
- HtmlInputImage.cs
- RichTextBoxConstants.cs
- MouseCaptureWithinProperty.cs
- XPathPatternParser.cs
- ValidationPropertyAttribute.cs
- METAHEADER.cs
- SafeFileHandle.cs
- MenuItemBinding.cs
- SqlConnectionManager.cs
- MenuDesigner.cs
- JsonClassDataContract.cs
- CheckedPointers.cs
- HttpModulesSection.cs
- SmtpReplyReader.cs