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
- OrderedDictionaryStateHelper.cs
- PropVariant.cs
- WinInet.cs
- HyperLinkColumn.cs
- Location.cs
- WebBrowserEvent.cs
- OpCodes.cs
- BitVec.cs
- PropertyGeneratedEventArgs.cs
- AnnouncementDispatcherAsyncResult.cs
- HtmlControl.cs
- _LocalDataStore.cs
- ShaderEffect.cs
- PageFunction.cs
- TextTreeTextBlock.cs
- WindowsRichEditRange.cs
- TextSelection.cs
- TransactionProtocol.cs
- TiffBitmapDecoder.cs
- wgx_sdk_version.cs
- FileSystemWatcher.cs
- UserControlParser.cs
- HttpChannelHelpers.cs
- SafeHandle.cs
- DetailsViewDeleteEventArgs.cs
- XPathScanner.cs
- XmlDictionaryReader.cs
- BindToObject.cs
- XmlDomTextWriter.cs
- EnvelopedPkcs7.cs
- _LocalDataStore.cs
- ScalarConstant.cs
- SoapIncludeAttribute.cs
- SystemIPInterfaceStatistics.cs
- RelatedPropertyManager.cs
- X509CertificateEndpointIdentity.cs
- ProcessManager.cs
- ToolStripScrollButton.cs
- CompilationUtil.cs
- DependencyProperty.cs
- ReadOnlyHierarchicalDataSourceView.cs
- ImageClickEventArgs.cs
- OperationCanceledException.cs
- EndOfStreamException.cs
- DesignerLinkAdapter.cs
- ActionFrame.cs
- RadialGradientBrush.cs
- VirtualStackFrame.cs
- DataGridViewImageCell.cs
- ServiceOperationParameter.cs
- TreeNode.cs
- Point3DAnimation.cs
- WebBaseEventKeyComparer.cs
- DockAndAnchorLayout.cs
- OdbcInfoMessageEvent.cs
- FixedFlowMap.cs
- DisableDpiAwarenessAttribute.cs
- FilteredAttributeCollection.cs
- ImageSourceValueSerializer.cs
- ControlUtil.cs
- RectIndependentAnimationStorage.cs
- DataGridColumnCollection.cs
- Int64AnimationUsingKeyFrames.cs
- HttpCookie.cs
- OutputCacheSection.cs
- ExpandCollapsePattern.cs
- ByteStreamMessage.cs
- transactioncontext.cs
- PatternMatcher.cs
- ZipIOZip64EndOfCentralDirectoryBlock.cs
- lengthconverter.cs
- PerformanceCounter.cs
- DataGridViewDesigner.cs
- TextDecorationLocationValidation.cs
- RegistryKey.cs
- RoutedEventConverter.cs
- PersianCalendar.cs
- XmlUtilWriter.cs
- Helper.cs
- PathParser.cs
- OciHandle.cs
- ToolStripPanelCell.cs
- SafeNativeMethodsMilCoreApi.cs
- XamlHostingSectionGroup.cs
- safex509handles.cs
- SqlFunctionAttribute.cs
- MenuItemAutomationPeer.cs
- PrimitiveXmlSerializers.cs
- SourceInterpreter.cs
- SrgsGrammar.cs
- CalloutQueueItem.cs
- StreamSecurityUpgradeInitiatorAsyncResult.cs
- WeakReference.cs
- SerialStream.cs
- LambdaExpression.cs
- InfocardChannelParameter.cs
- RequestCacheValidator.cs
- ProcessModuleCollection.cs
- NewItemsContextMenuStrip.cs
- SqlParameterCollection.cs