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
- SurrogateEncoder.cs
- FactoryMaker.cs
- PaperSize.cs
- TraceLevelStore.cs
- CallbackHandler.cs
- ClientConfigurationSystem.cs
- ListSourceHelper.cs
- HandlerBase.cs
- ProbeMatchesCD1.cs
- SplayTreeNode.cs
- WebPartDisplayModeEventArgs.cs
- DataContract.cs
- GridViewColumnHeaderAutomationPeer.cs
- TextEffectCollection.cs
- GridViewEditEventArgs.cs
- QueryOutputWriter.cs
- DocumentViewerHelper.cs
- MemberDescriptor.cs
- MSHTMLHostUtil.cs
- FillErrorEventArgs.cs
- DefaultObjectMappingItemCollection.cs
- IPAddress.cs
- SecurityTokenSerializer.cs
- AncestorChangedEventArgs.cs
- AppLevelCompilationSectionCache.cs
- BinaryReader.cs
- TextFormatterImp.cs
- QilLiteral.cs
- SqlExpressionNullability.cs
- Int16AnimationUsingKeyFrames.cs
- Viewport3DAutomationPeer.cs
- FrameSecurityDescriptor.cs
- TabControl.cs
- TimestampInformation.cs
- TypedReference.cs
- ConfigurationSectionGroup.cs
- CaretElement.cs
- IgnoreSectionHandler.cs
- CounterNameConverter.cs
- DBConnection.cs
- TextServicesPropertyRanges.cs
- XmlQualifiedName.cs
- PixelShader.cs
- DataBoundLiteralControl.cs
- RtfFormatStack.cs
- ComplexTypeEmitter.cs
- ExternalDataExchangeClient.cs
- Converter.cs
- InputProcessorProfilesLoader.cs
- SqlConnection.cs
- TimelineGroup.cs
- SortedList.cs
- HeaderCollection.cs
- SafeBitVector32.cs
- XmlDocumentType.cs
- SqlMultiplexer.cs
- CharKeyFrameCollection.cs
- DataContractSet.cs
- GraphicsContainer.cs
- SqlRowUpdatedEvent.cs
- PrimitiveCodeDomSerializer.cs
- DropDownButton.cs
- IdleTimeoutMonitor.cs
- SessionStateModule.cs
- IndexObject.cs
- NamespaceCollection.cs
- XPathEmptyIterator.cs
- WizardForm.cs
- WebWorkflowRole.cs
- EventLogInformation.cs
- activationcontext.cs
- CompilerGlobalScopeAttribute.cs
- GridViewSelectEventArgs.cs
- DbConnectionStringCommon.cs
- RegistrySecurity.cs
- ServiceEndpointCollection.cs
- HashMembershipCondition.cs
- ListViewDeletedEventArgs.cs
- MenuRendererStandards.cs
- TemplateManager.cs
- ListParagraph.cs
- TextFormatter.cs
- DataColumnMappingCollection.cs
- SerializationFieldInfo.cs
- MimeImporter.cs
- RectValueSerializer.cs
- Win32KeyboardDevice.cs
- ButtonFlatAdapter.cs
- MetadataArtifactLoaderCompositeFile.cs
- XmlCountingReader.cs
- StatusBarPanel.cs
- RoleBoolean.cs
- XmlSchemaSimpleTypeList.cs
- EditCommandColumn.cs
- RegexCaptureCollection.cs
- CheckedListBox.cs
- ObjectSecurityT.cs
- RowParagraph.cs
- MasterPageCodeDomTreeGenerator.cs
- ListenDesigner.cs