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
- ListViewTableCell.cs
- SrgsDocumentParser.cs
- SQLRoleProvider.cs
- DocumentViewerAutomationPeer.cs
- DirectoryInfo.cs
- PropertyOverridesDialog.cs
- Rect.cs
- FontDialog.cs
- DataObjectFieldAttribute.cs
- DataRowCollection.cs
- RuntimeUtils.cs
- DodSequenceMerge.cs
- XmlSchemaGroup.cs
- SHA512Managed.cs
- CodeCompileUnit.cs
- ReverseQueryOperator.cs
- DefaultTypeArgumentAttribute.cs
- Ref.cs
- Scheduler.cs
- KnownTypesHelper.cs
- CompositeDispatchFormatter.cs
- AsyncStreamReader.cs
- PathData.cs
- CompiledELinqQueryState.cs
- GridViewActionList.cs
- CreateUserErrorEventArgs.cs
- CatalogZoneBase.cs
- DialogResultConverter.cs
- UdpSocket.cs
- XmlQualifiedNameTest.cs
- WebPartDescriptionCollection.cs
- SmiContext.cs
- CatalogPartDesigner.cs
- SafeNativeMethods.cs
- FileClassifier.cs
- ContextDataSource.cs
- ClientConfigPaths.cs
- _FtpControlStream.cs
- ACL.cs
- ExpressionBuilder.cs
- PropertyDescriptorGridEntry.cs
- PropertyItem.cs
- XmlComplianceUtil.cs
- DynamicAttribute.cs
- EventLogSession.cs
- X509ChainPolicy.cs
- MoveSizeWinEventHandler.cs
- MultiPageTextView.cs
- WebMessageEncodingElement.cs
- DataGridViewCellParsingEventArgs.cs
- ConnectionsZoneAutoFormat.cs
- GlobalEventManager.cs
- RecordManager.cs
- X509CertificateCollection.cs
- QueueProcessor.cs
- ResolvedKeyFrameEntry.cs
- CacheModeValueSerializer.cs
- BeginEvent.cs
- CallbackValidatorAttribute.cs
- WindowsFormsSynchronizationContext.cs
- PropertyDescriptorCollection.cs
- WebPartUtil.cs
- RoutedEventHandlerInfo.cs
- DbProviderFactories.cs
- SerializationObjectManager.cs
- WorkflowCommandExtensionItem.cs
- UIElementCollection.cs
- ScriptMethodAttribute.cs
- ArithmeticException.cs
- WebBrowserBase.cs
- QueueProcessor.cs
- BlockCollection.cs
- CodeMemberMethod.cs
- RtfToken.cs
- PtsCache.cs
- IntegerValidatorAttribute.cs
- EntitySqlQueryState.cs
- followingsibling.cs
- Column.cs
- PerfCounters.cs
- DataReceivedEventArgs.cs
- RichTextBoxAutomationPeer.cs
- ValidationResult.cs
- HitTestWithPointDrawingContextWalker.cs
- StylusPoint.cs
- GridSplitter.cs
- CleanUpVirtualizedItemEventArgs.cs
- DataGridParentRows.cs
- StrongNameKeyPair.cs
- HiddenFieldPageStatePersister.cs
- DataGridAutoFormatDialog.cs
- ReadOnlyCollection.cs
- RightsManagementPermission.cs
- WebPartDeleteVerb.cs
- LinearGradientBrush.cs
- LocatorGroup.cs
- Properties.cs
- RenderData.cs
- SqlFlattener.cs
- XmlDictionaryString.cs