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
- ChildrenQuery.cs
- CallSiteHelpers.cs
- EditorAttribute.cs
- SystemTcpStatistics.cs
- ModelFunction.cs
- BitmapEffectDrawingContextState.cs
- CompiledAction.cs
- DeferredRunTextReference.cs
- TextBoxAutomationPeer.cs
- QuaternionConverter.cs
- Brush.cs
- IxmlLineInfo.cs
- SqlNotificationEventArgs.cs
- KeyedHashAlgorithm.cs
- Transform3DGroup.cs
- ToolboxItemWrapper.cs
- TransactionScope.cs
- DesignSurfaceCollection.cs
- Point3DCollectionConverter.cs
- SHA384Managed.cs
- ManagedWndProcTracker.cs
- DiffuseMaterial.cs
- BitArray.cs
- HttpFileCollectionBase.cs
- TableHeaderCell.cs
- RawUIStateInputReport.cs
- JsonReaderDelegator.cs
- CellTreeNode.cs
- formatter.cs
- XmlTypeAttribute.cs
- UncommonField.cs
- UdpDiscoveryEndpointProvider.cs
- Material.cs
- CodeSubDirectory.cs
- ComboBoxRenderer.cs
- TextParagraphCache.cs
- AuthenticationModuleElementCollection.cs
- ToolStripSplitButton.cs
- TTSEngineProxy.cs
- ClonableStack.cs
- AppSecurityManager.cs
- NonPrimarySelectionGlyph.cs
- XmlMapping.cs
- ComboBoxDesigner.cs
- ProviderIncompatibleException.cs
- DefinitionBase.cs
- BinHexDecoder.cs
- WorkflowItemsPresenter.cs
- UshortList2.cs
- HelpExampleGenerator.cs
- SystemWebCachingSectionGroup.cs
- JavaScriptString.cs
- DiscreteKeyFrames.cs
- TagMapCollection.cs
- Binding.cs
- PrinterUnitConvert.cs
- KnownColorTable.cs
- UnsafeNativeMethods.cs
- InkCanvasInnerCanvas.cs
- HiddenFieldPageStatePersister.cs
- WebContext.cs
- XmlNotation.cs
- WindowsPrincipal.cs
- DocumentXPathNavigator.cs
- ResourceAssociationSet.cs
- EventLogInformation.cs
- RootDesignerSerializerAttribute.cs
- DbMetaDataColumnNames.cs
- DoubleConverter.cs
- DataPointer.cs
- Encoding.cs
- OrderedDictionary.cs
- DmlSqlGenerator.cs
- HttpHostedTransportConfiguration.cs
- ImpersonationContext.cs
- DbMetaDataFactory.cs
- Token.cs
- ResourcePermissionBase.cs
- CorrelationValidator.cs
- FileChangesMonitor.cs
- UpdateCommand.cs
- WebPartConnectionsEventArgs.cs
- CanonicalFontFamilyReference.cs
- EntityDataSourceConfigureObjectContextPanel.cs
- ProcessModelSection.cs
- CodeDomConfigurationHandler.cs
- processwaithandle.cs
- Utilities.cs
- SerializationException.cs
- TransformDescriptor.cs
- MessageBuilder.cs
- IdentifierCreationService.cs
- FileNotFoundException.cs
- RegionInfo.cs
- BooleanFacetDescriptionElement.cs
- OperationCanceledException.cs
- DataObjectPastingEventArgs.cs
- LocalsItemDescription.cs
- CommandExpr.cs
- FormViewDeletedEventArgs.cs