Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / IdentityModel / System / IdentityModel / Tokens / RsaKeyIdentifierClause.cs / 1 / 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.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- HtmlTextArea.cs
- TrackingMemoryStreamFactory.cs
- Evaluator.cs
- IIS7WorkerRequest.cs
- OracleCommand.cs
- CodeSnippetCompileUnit.cs
- NonClientArea.cs
- UpDownBase.cs
- WebRequest.cs
- HostedElements.cs
- FileDialog.cs
- HttpServerChannel.cs
- UdpDiscoveryEndpoint.cs
- SettingsAttributeDictionary.cs
- ColumnHeaderCollectionEditor.cs
- PropertyMapper.cs
- ObjectStateFormatter.cs
- UnaryNode.cs
- RedistVersionInfo.cs
- LocalBuilder.cs
- SmiContextFactory.cs
- WebResourceUtil.cs
- DelegateTypeInfo.cs
- CellPartitioner.cs
- ToolStripLocationCancelEventArgs.cs
- ValidatingReaderNodeData.cs
- DrawingContext.cs
- DetailsViewInsertEventArgs.cs
- LabelDesigner.cs
- HtmlString.cs
- NullReferenceException.cs
- IODescriptionAttribute.cs
- MediaTimeline.cs
- CategoryGridEntry.cs
- PropertyInformationCollection.cs
- WindowsAuthenticationEventArgs.cs
- FusionWrap.cs
- ZoneMembershipCondition.cs
- AvtEvent.cs
- XmlSchemaInferenceException.cs
- UIElementHelper.cs
- XmlCompatibilityReader.cs
- LocationSectionRecord.cs
- TableFieldsEditor.cs
- ExecutedRoutedEventArgs.cs
- IconHelper.cs
- ServiceNameCollection.cs
- SemanticBasicElement.cs
- DecimalConstantAttribute.cs
- FaultDescription.cs
- EnumerableRowCollection.cs
- StyleSelector.cs
- DescriptionAttribute.cs
- GridViewAutomationPeer.cs
- ButtonFieldBase.cs
- WindowsGraphicsWrapper.cs
- ResourcePool.cs
- RpcCryptoRequest.cs
- CompressionTransform.cs
- QueryGenerator.cs
- NumberEdit.cs
- Matrix3D.cs
- Padding.cs
- _SSPISessionCache.cs
- XmlCodeExporter.cs
- XmlSchemaRedefine.cs
- TreeNode.cs
- Popup.cs
- DispatchChannelSink.cs
- XmlTextEncoder.cs
- EventLogQuery.cs
- ArithmeticException.cs
- ExpressionWriter.cs
- SmtpTransport.cs
- DoubleAnimation.cs
- wmiprovider.cs
- PkcsUtils.cs
- Interlocked.cs
- UnsafeNativeMethods.cs
- CodeCatchClause.cs
- RelationshipFixer.cs
- ChildrenQuery.cs
- TypeName.cs
- Pen.cs
- ActivityValidator.cs
- StreamSecurityUpgradeInitiatorAsyncResult.cs
- DependencyObject.cs
- SortFieldComparer.cs
- UpWmlPageAdapter.cs
- RecordConverter.cs
- ToolStripOverflow.cs
- Listbox.cs
- ShaderEffect.cs
- Geometry.cs
- Math.cs
- Token.cs
- ExceptionUtil.cs
- SmtpCommands.cs
- BamlBinaryReader.cs
- XmlComment.cs