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
- FixedSOMLineRanges.cs
- Size3DValueSerializer.cs
- VectorKeyFrameCollection.cs
- Int16Animation.cs
- DataGridViewAutoSizeModeEventArgs.cs
- RootBuilder.cs
- XmlFormatReaderGenerator.cs
- Stackframe.cs
- EncoderNLS.cs
- CreateParams.cs
- WebResponse.cs
- ProcessModelInfo.cs
- NavigationProgressEventArgs.cs
- CompressionTransform.cs
- HttpCookie.cs
- ModelItem.cs
- CoreSwitches.cs
- RenamedEventArgs.cs
- ProjectionPathBuilder.cs
- ClientSideProviderDescription.cs
- BufferedWebEventProvider.cs
- TableChangeProcessor.cs
- Literal.cs
- Mapping.cs
- EntityViewGenerationAttribute.cs
- XslNumber.cs
- CompilationSection.cs
- DesignerLabelAdapter.cs
- ColorBlend.cs
- KerberosReceiverSecurityToken.cs
- StorageMappingFragment.cs
- diagnosticsswitches.cs
- ClientType.cs
- __Error.cs
- CustomAttributeFormatException.cs
- XmlResolver.cs
- HttpCacheParams.cs
- KnownTypeDataContractResolver.cs
- GroupBoxAutomationPeer.cs
- SafeNativeMethods.cs
- StickyNoteAnnotations.cs
- PassportAuthenticationEventArgs.cs
- HtmlInputButton.cs
- PointValueSerializer.cs
- StsCommunicationException.cs
- RelationalExpressions.cs
- DataGridViewCellStyleEditor.cs
- AnimatedTypeHelpers.cs
- RtfControls.cs
- XmlSignatureManifest.cs
- HasCopySemanticsAttribute.cs
- QuaternionAnimationUsingKeyFrames.cs
- WinEventQueueItem.cs
- Quaternion.cs
- ExpressionList.cs
- BuildManagerHost.cs
- XmlChildNodes.cs
- TypedServiceChannelBuilder.cs
- ConstructorBuilder.cs
- StatusBar.cs
- WeakReferenceList.cs
- TextServicesManager.cs
- RadioButton.cs
- ClientRuntimeConfig.cs
- SecurityContextSecurityTokenAuthenticator.cs
- InputLangChangeRequestEvent.cs
- SQLBinaryStorage.cs
- CompModSwitches.cs
- FixedSOMFixedBlock.cs
- RangeBase.cs
- FixedStringLookup.cs
- LocatorBase.cs
- RequiredAttributeAttribute.cs
- Clause.cs
- MetadataPropertyAttribute.cs
- WebPartManager.cs
- VectorAnimationUsingKeyFrames.cs
- NullableConverter.cs
- ContainerVisual.cs
- OneOfConst.cs
- HiddenField.cs
- Region.cs
- NamespaceQuery.cs
- MailMessage.cs
- TransformGroup.cs
- DocumentSequence.cs
- ArrayList.cs
- Slider.cs
- RemotingConfigParser.cs
- ComponentChangingEvent.cs
- ContainerParagraph.cs
- COM2PictureConverter.cs
- StaticResourceExtension.cs
- Renderer.cs
- NetTcpSecurity.cs
- EntityFrameworkVersions.cs
- NavigationWindowAutomationPeer.cs
- TransformerTypeCollection.cs
- XmlNullResolver.cs
- InvalidOleVariantTypeException.cs