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
- SelfIssuedAuthRSAPKCS1SignatureFormatter.cs
- ProcessThread.cs
- IPPacketInformation.cs
- PropertyDescriptor.cs
- CompilerTypeWithParams.cs
- COM2EnumConverter.cs
- _ConnectOverlappedAsyncResult.cs
- DecimalConverter.cs
- XmlHierarchicalEnumerable.cs
- TemplatePropertyEntry.cs
- Int64Storage.cs
- ScriptControl.cs
- DocobjHost.cs
- XPathNodeList.cs
- XMLDiffLoader.cs
- SizeAnimationBase.cs
- DelegateArgument.cs
- CodeDirectoryCompiler.cs
- DataGridViewImageColumn.cs
- X509Certificate2Collection.cs
- ControlDesignerState.cs
- TextDocumentView.cs
- SqlDataSourceSelectingEventArgs.cs
- EncoderBestFitFallback.cs
- RtfControls.cs
- BamlLocalizableResource.cs
- EventMappingSettings.cs
- XslCompiledTransform.cs
- recordstatefactory.cs
- ExternalException.cs
- UserPreferenceChangedEventArgs.cs
- ServerIdentity.cs
- TemplateBuilder.cs
- basevalidator.cs
- RuntimeIdentifierPropertyAttribute.cs
- BinaryFormatter.cs
- IntSecurity.cs
- TriState.cs
- ToolStripMenuItem.cs
- sqlinternaltransaction.cs
- SourceLocationProvider.cs
- SqlConnection.cs
- CodeCommentStatementCollection.cs
- HttpRequestMessageProperty.cs
- CompilationLock.cs
- CompoundFileIOPermission.cs
- DrawingImage.cs
- ActivityExecutor.cs
- Blend.cs
- SessionEndingCancelEventArgs.cs
- PropertyGrid.cs
- ActiveXHost.cs
- SmiMetaData.cs
- EmptyEnumerator.cs
- GatewayDefinition.cs
- WCFBuildProvider.cs
- HandleCollector.cs
- LogAppendAsyncResult.cs
- EdmTypeAttribute.cs
- QueryRewriter.cs
- XmlQueryTypeFactory.cs
- XmlProcessingInstruction.cs
- WebPartDisplayModeCollection.cs
- MSAAEventDispatcher.cs
- PipeStream.cs
- TransportDefaults.cs
- FontWeightConverter.cs
- Evidence.cs
- HttpProcessUtility.cs
- HostingPreferredMapPath.cs
- TextPattern.cs
- QilTargetType.cs
- ManipulationStartingEventArgs.cs
- SqlDependencyUtils.cs
- MediaTimeline.cs
- CachedRequestParams.cs
- _HeaderInfoTable.cs
- NavigatorOutput.cs
- SqlProcedureAttribute.cs
- Canvas.cs
- Set.cs
- DoubleAnimationBase.cs
- TypeKeyValue.cs
- NotifyParentPropertyAttribute.cs
- FacetChecker.cs
- MetadataStore.cs
- ObjectFactoryCodeDomTreeGenerator.cs
- PolicyException.cs
- UpDownEvent.cs
- util.cs
- AppDomainProtocolHandler.cs
- ArrayWithOffset.cs
- DatePicker.cs
- CodeTypeReference.cs
- XmlEncodedRawTextWriter.cs
- SByteConverter.cs
- ScriptControl.cs
- ComUdtElement.cs
- CSharpCodeProvider.cs
- ConvertEvent.cs