Code:
/ 4.0 / 4.0 / untmp / 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.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- contentDescriptor.cs
- MouseGestureConverter.cs
- Component.cs
- HyperLinkStyle.cs
- ReadOnlyMetadataCollection.cs
- XmlSchemaComplexContentExtension.cs
- ImageSource.cs
- _ProxyRegBlob.cs
- ImageFormat.cs
- OnOperation.cs
- ObjectCloneHelper.cs
- GeometryGroup.cs
- GraphicsPathIterator.cs
- BindingExpressionUncommonField.cs
- DmlSqlGenerator.cs
- ConfigXmlText.cs
- Evaluator.cs
- HttpPostedFile.cs
- ValuePatternIdentifiers.cs
- SqlProfileProvider.cs
- LongValidatorAttribute.cs
- Pointer.cs
- HiddenFieldPageStatePersister.cs
- AutomationPeer.cs
- PasswordValidationException.cs
- WebBrowserNavigatingEventHandler.cs
- UIPropertyMetadata.cs
- Token.cs
- QilChoice.cs
- ColumnTypeConverter.cs
- RuntimeResourceSet.cs
- TextContainerChangeEventArgs.cs
- Style.cs
- SBCSCodePageEncoding.cs
- SqlFacetAttribute.cs
- InheritablePropertyChangeInfo.cs
- HtmlInputText.cs
- InputBinder.cs
- TextEditorMouse.cs
- DesignerVerbToolStripMenuItem.cs
- TextTreeObjectNode.cs
- StrokeNodeData.cs
- SecurityException.cs
- BamlTreeNode.cs
- DescendantQuery.cs
- IdentityReference.cs
- ExternalDataExchangeService.cs
- CaseInsensitiveHashCodeProvider.cs
- ResolveCriteriaCD1.cs
- Operand.cs
- SafeSecurityHelper.cs
- ConfigurationSection.cs
- AvtEvent.cs
- Column.cs
- X509Certificate2.cs
- InputBuffer.cs
- ProfileService.cs
- ActivityDesignerAccessibleObject.cs
- HttpClientCertificate.cs
- IgnoreSectionHandler.cs
- XmlWrappingReader.cs
- WebPartDisplayModeCancelEventArgs.cs
- OutKeywords.cs
- SoapTypeAttribute.cs
- NTAccount.cs
- XsltLibrary.cs
- TypeInfo.cs
- StorageAssociationSetMapping.cs
- FontDriver.cs
- NewItemsContextMenuStrip.cs
- FontStretch.cs
- XmlSiteMapProvider.cs
- DataGridViewAccessibleObject.cs
- QueryableDataSourceEditData.cs
- SQLBytesStorage.cs
- PriorityQueue.cs
- InkCanvasAutomationPeer.cs
- HitTestParameters3D.cs
- SemanticResolver.cs
- SerializationFieldInfo.cs
- SizeLimitedCache.cs
- XmlReflectionMember.cs
- Icon.cs
- BasicExpressionVisitor.cs
- DataTableNewRowEvent.cs
- IPAddressCollection.cs
- ContentControl.cs
- StreamWriter.cs
- KeyBinding.cs
- RoleGroupCollection.cs
- LineGeometry.cs
- IsolatedStorageFilePermission.cs
- Registry.cs
- ListCollectionView.cs
- ScaleTransform.cs
- CheckBoxList.cs
- ValueTable.cs
- ToolStripDropDownClosedEventArgs.cs
- ClosableStream.cs
- GridViewColumnCollectionChangedEventArgs.cs