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
- CatalogPartCollection.cs
- WhereQueryOperator.cs
- SettingsBase.cs
- FlowDocumentPage.cs
- BoundsDrawingContextWalker.cs
- ClientTargetSection.cs
- WCFModelStrings.Designer.cs
- VectorAnimation.cs
- PermissionSetEnumerator.cs
- webproxy.cs
- ClientScriptManager.cs
- QueryAccessibilityHelpEvent.cs
- RegisterInfo.cs
- Geometry3D.cs
- LoginView.cs
- Empty.cs
- Win32MouseDevice.cs
- HttpNamespaceReservationInstallComponent.cs
- DataContractSerializerServiceBehavior.cs
- SessionIDManager.cs
- MaskedTextBoxDesigner.cs
- JavaScriptSerializer.cs
- Input.cs
- XsltInput.cs
- EdmProperty.cs
- NonParentingControl.cs
- BindToObject.cs
- PageAdapter.cs
- ItemContainerGenerator.cs
- ValueQuery.cs
- BamlLocalizer.cs
- XmlLoader.cs
- BitmapMetadataBlob.cs
- SerializationAttributes.cs
- CodeDomSerializerException.cs
- WeakEventManager.cs
- GenericXmlSecurityToken.cs
- DataListCommandEventArgs.cs
- XmlLanguage.cs
- HtmlInputPassword.cs
- RelationshipDetailsCollection.cs
- PhysicalAddress.cs
- DocumentApplicationState.cs
- TableStyle.cs
- ExpressionDumper.cs
- BitmapInitialize.cs
- UnsafeNativeMethods.cs
- thaishape.cs
- PagesSection.cs
- GeneralTransform3DTo2DTo3D.cs
- DtdParser.cs
- RepeaterItem.cs
- DataGridCell.cs
- AppLevelCompilationSectionCache.cs
- FormViewRow.cs
- SpecularMaterial.cs
- ConfigurationFileMap.cs
- NamespaceInfo.cs
- XmlAutoDetectWriter.cs
- ThicknessAnimation.cs
- AndCondition.cs
- SoapIgnoreAttribute.cs
- PropertyManager.cs
- FaultCallbackWrapper.cs
- MouseOverProperty.cs
- OracleEncoding.cs
- GPRECT.cs
- DbConnectionHelper.cs
- NotifyCollectionChangedEventArgs.cs
- URLString.cs
- NoClickablePointException.cs
- TransformedBitmap.cs
- ellipse.cs
- PropertyBuilder.cs
- mediaeventargs.cs
- GeometryCombineModeValidation.cs
- TransactionFlowBindingElementImporter.cs
- XmlNamespaceManager.cs
- BezierSegment.cs
- MenuStrip.cs
- SequentialOutput.cs
- DataControlFieldHeaderCell.cs
- RelationshipConverter.cs
- DurableRuntimeValidator.cs
- TrackBarRenderer.cs
- PackageRelationship.cs
- Boolean.cs
- ButtonFieldBase.cs
- CompilerScopeManager.cs
- WindowsScrollBar.cs
- DeferrableContent.cs
- SelectedCellsCollection.cs
- ComUdtElement.cs
- ImageMapEventArgs.cs
- ScrollItemProviderWrapper.cs
- WebPartConnectionCollection.cs
- DataGridViewColumnCollectionDialog.cs
- UnsafeNetInfoNativeMethods.cs
- GridViewPageEventArgs.cs
- ManagedFilter.cs