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
- XmlAtomErrorReader.cs
- SQLGuid.cs
- WorkflowViewService.cs
- UnsafeNativeMethods.cs
- WindowsIPAddress.cs
- TypeLoadException.cs
- GridView.cs
- HttpListenerRequestUriBuilder.cs
- PersonalizationState.cs
- EnglishPluralizationService.cs
- GroupItem.cs
- ImageDesigner.cs
- LassoSelectionBehavior.cs
- EventlogProvider.cs
- SchemaExporter.cs
- FlowNode.cs
- DataTableReader.cs
- WinInet.cs
- ErrorEventArgs.cs
- DragEventArgs.cs
- IsolatedStorage.cs
- XmlCDATASection.cs
- CfgParser.cs
- DoubleLinkListEnumerator.cs
- DecoderNLS.cs
- RegistryConfigurationProvider.cs
- BrowserCapabilitiesFactoryBase.cs
- GroupBox.cs
- ConfigurationValues.cs
- SynthesizerStateChangedEventArgs.cs
- OwnerDrawPropertyBag.cs
- SqlStream.cs
- ScriptingProfileServiceSection.cs
- Formatter.cs
- SrgsRuleRef.cs
- MaskInputRejectedEventArgs.cs
- KeyboardDevice.cs
- SerializationFieldInfo.cs
- SingleTagSectionHandler.cs
- ExpressionLink.cs
- ProtocolImporter.cs
- SignedInfo.cs
- BitmapEffect.cs
- IPAddress.cs
- MatrixAnimationUsingPath.cs
- AcceleratedTokenAuthenticator.cs
- AssemblyCollection.cs
- DiagnosticEventProvider.cs
- BamlResourceDeserializer.cs
- FragmentQueryProcessor.cs
- XslTransform.cs
- DeleteStoreRequest.cs
- ConnectionManagementElement.cs
- PrefixHandle.cs
- RegisteredDisposeScript.cs
- _KerberosClient.cs
- TreeSet.cs
- Soap.cs
- Mappings.cs
- FixUpCollection.cs
- Attribute.cs
- PasswordRecoveryAutoFormat.cs
- XmlTextReaderImpl.cs
- BrushProxy.cs
- AutoGeneratedFieldProperties.cs
- DbMetaDataCollectionNames.cs
- PrintingPermissionAttribute.cs
- AliasGenerator.cs
- _ListenerRequestStream.cs
- ComponentChangedEvent.cs
- ClientSettingsProvider.cs
- CommonRemoteMemoryBlock.cs
- ContentDisposition.cs
- ControlPaint.cs
- DynamicRenderer.cs
- SoapAttributeAttribute.cs
- SessionState.cs
- FilteredReadOnlyMetadataCollection.cs
- EventRouteFactory.cs
- ResourcePool.cs
- ProcessModuleCollection.cs
- AttributedMetaModel.cs
- WizardPanel.cs
- WebPartConnectionsEventArgs.cs
- ErrorHandler.cs
- Binding.cs
- _ReceiveMessageOverlappedAsyncResult.cs
- SpecularMaterial.cs
- WSIdentityFaultException.cs
- HtmlControlPersistable.cs
- XmlRootAttribute.cs
- oledbconnectionstring.cs
- SimplePropertyEntry.cs
- Literal.cs
- SoapInteropTypes.cs
- ControlAdapter.cs
- RSACryptoServiceProvider.cs
- XmlSchema.cs
- DbConnectionPool.cs
- Pkcs7Signer.cs