Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / WCF / IdentityModel / System / IdentityModel / Tokens / RsaKeyIdentifierClause.cs / 1305376 / RsaKeyIdentifierClause.cs
//------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------- namespace System.IdentityModel.Tokens { using System.Globalization; using System.Security.Cryptography; using System.Xml; public class RsaKeyIdentifierClause : SecurityKeyIdentifierClause { static string clauseType = XmlSignatureStrings.Namespace + XmlSignatureStrings.RsaKeyValue; readonly RSA rsa; readonly RSAParameters rsaParameters; RsaSecurityKey rsaSecurityKey; public RsaKeyIdentifierClause(RSA rsa) : base(clauseType) { if (rsa == null) throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("rsa"); this.rsa = rsa; this.rsaParameters = rsa.ExportParameters(false); } public override bool CanCreateKey { get { return true; } } public RSA Rsa { get { return this.rsa; } } public override SecurityKey CreateKey() { if (this.rsaSecurityKey == null) { this.rsaSecurityKey = new RsaSecurityKey(this.rsa); } return this.rsaSecurityKey; } public byte[] GetExponent() { return SecurityUtils.CloneBuffer(this.rsaParameters.Exponent); } public byte[] GetModulus() { return SecurityUtils.CloneBuffer(this.rsaParameters.Modulus); } public override bool Matches(SecurityKeyIdentifierClause keyIdentifierClause) { RsaKeyIdentifierClause that = keyIdentifierClause as RsaKeyIdentifierClause; // 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.rsa)); } public bool Matches(RSA rsa) { if (rsa == null) return false; RSAParameters rsaParameters = rsa.ExportParameters(false); return SecurityUtils.MatchesBuffer(this.rsaParameters.Modulus, rsaParameters.Modulus) && SecurityUtils.MatchesBuffer(this.rsaParameters.Exponent, rsaParameters.Exponent); } public override string ToString() { return string.Format(CultureInfo.InvariantCulture, "RsaKeyIdentifierClause(Modulus = {0}, Exponent = {1})", Convert.ToBase64String(this.rsaParameters.Modulus), Convert.ToBase64String(this.rsaParameters.Exponent)); } public void WriteExponentAsBase64(XmlWriter writer) { if (writer == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("writer"); } writer.WriteBase64(this.rsaParameters.Exponent, 0, this.rsaParameters.Exponent.Length); } public void WriteModulusAsBase64(XmlWriter writer) { if (writer == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("writer"); } writer.WriteBase64(this.rsaParameters.Modulus, 0, this.rsaParameters.Modulus.Length); } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------- namespace System.IdentityModel.Tokens { using System.Globalization; using System.Security.Cryptography; using System.Xml; public class RsaKeyIdentifierClause : SecurityKeyIdentifierClause { static string clauseType = XmlSignatureStrings.Namespace + XmlSignatureStrings.RsaKeyValue; readonly RSA rsa; readonly RSAParameters rsaParameters; RsaSecurityKey rsaSecurityKey; public RsaKeyIdentifierClause(RSA rsa) : base(clauseType) { if (rsa == null) throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("rsa"); this.rsa = rsa; this.rsaParameters = rsa.ExportParameters(false); } public override bool CanCreateKey { get { return true; } } public RSA Rsa { get { return this.rsa; } } public override SecurityKey CreateKey() { if (this.rsaSecurityKey == null) { this.rsaSecurityKey = new RsaSecurityKey(this.rsa); } return this.rsaSecurityKey; } public byte[] GetExponent() { return SecurityUtils.CloneBuffer(this.rsaParameters.Exponent); } public byte[] GetModulus() { return SecurityUtils.CloneBuffer(this.rsaParameters.Modulus); } public override bool Matches(SecurityKeyIdentifierClause keyIdentifierClause) { RsaKeyIdentifierClause that = keyIdentifierClause as RsaKeyIdentifierClause; // 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.rsa)); } public bool Matches(RSA rsa) { if (rsa == null) return false; RSAParameters rsaParameters = rsa.ExportParameters(false); return SecurityUtils.MatchesBuffer(this.rsaParameters.Modulus, rsaParameters.Modulus) && SecurityUtils.MatchesBuffer(this.rsaParameters.Exponent, rsaParameters.Exponent); } public override string ToString() { return string.Format(CultureInfo.InvariantCulture, "RsaKeyIdentifierClause(Modulus = {0}, Exponent = {1})", Convert.ToBase64String(this.rsaParameters.Modulus), Convert.ToBase64String(this.rsaParameters.Exponent)); } public void WriteExponentAsBase64(XmlWriter writer) { if (writer == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("writer"); } writer.WriteBase64(this.rsaParameters.Exponent, 0, this.rsaParameters.Exponent.Length); } public void WriteModulusAsBase64(XmlWriter writer) { if (writer == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("writer"); } writer.WriteBase64(this.rsaParameters.Modulus, 0, this.rsaParameters.Modulus.Length); } } } // 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
- WebPartConnectVerb.cs
- XmlSchemaAttributeGroupRef.cs
- XmlDocument.cs
- COM2ExtendedUITypeEditor.cs
- InstanceNameConverter.cs
- entitydatasourceentitysetnameconverter.cs
- InstanceNotReadyException.cs
- EncoderBestFitFallback.cs
- ScrollProviderWrapper.cs
- AssemblyUtil.cs
- assertwrapper.cs
- XhtmlBasicLinkAdapter.cs
- DataObjectFieldAttribute.cs
- LoadedOrUnloadedOperation.cs
- VirtualPathUtility.cs
- TaskFileService.cs
- TextServicesProperty.cs
- Formatter.cs
- UnsafeNativeMethods.cs
- _SslSessionsCache.cs
- UInt64Converter.cs
- DefaultDiscoveryService.cs
- TimeSpanConverter.cs
- TransactionFilter.cs
- TemplateXamlParser.cs
- QualificationDataItem.cs
- ItemCollection.cs
- CalendarModeChangedEventArgs.cs
- RuleSettings.cs
- SerializationAttributes.cs
- InputScopeConverter.cs
- TheQuery.cs
- JpegBitmapEncoder.cs
- XPathNavigator.cs
- ValueTypeFixupInfo.cs
- LinkConverter.cs
- TextDpi.cs
- LogFlushAsyncResult.cs
- ActivityExecutorDelegateInfo.cs
- DecoderBestFitFallback.cs
- StylusEventArgs.cs
- DataMemberFieldEditor.cs
- Misc.cs
- SafeMILHandle.cs
- Msmq4PoisonHandler.cs
- RuleInfoComparer.cs
- OledbConnectionStringbuilder.cs
- OLEDB_Util.cs
- SoapElementAttribute.cs
- lengthconverter.cs
- BindingValueChangedEventArgs.cs
- HwndSourceKeyboardInputSite.cs
- OverflowException.cs
- ProviderConnectionPointCollection.cs
- PowerStatus.cs
- LoadGrammarCompletedEventArgs.cs
- ColumnCollection.cs
- CollectionBase.cs
- Compress.cs
- SafeReversePInvokeHandle.cs
- DebugView.cs
- StdRegProviderWrapper.cs
- AnnotationAuthorChangedEventArgs.cs
- XmlUtf8RawTextWriter.cs
- ProcessModuleCollection.cs
- NameValueSectionHandler.cs
- SapiInterop.cs
- IfElseDesigner.xaml.cs
- ByteArrayHelperWithString.cs
- SessionIDManager.cs
- ContainerControl.cs
- AnnotationService.cs
- TableCellCollection.cs
- SqlCommandAsyncResult.cs
- DataObjectAttribute.cs
- FormViewDeleteEventArgs.cs
- VirtualPathProvider.cs
- HttpHostedTransportConfiguration.cs
- AttributeConverter.cs
- DataViewManager.cs
- PackageRelationshipSelector.cs
- ToggleButton.cs
- VisualTransition.cs
- OleDbCommand.cs
- ProjectionCamera.cs
- FormatConvertedBitmap.cs
- ToolStripDropDownItemDesigner.cs
- DebugController.cs
- SoapReflector.cs
- HttpRequest.cs
- XmlDataProvider.cs
- UserControlCodeDomTreeGenerator.cs
- TextDocumentView.cs
- PopOutPanel.cs
- SortQuery.cs
- CatalogPartCollection.cs
- RightsDocument.cs
- TimerElapsedEvenArgs.cs
- CryptoConfig.cs
- SystemIPInterfaceProperties.cs