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
- ItemCheckedEvent.cs
- TypeInformation.cs
- Boolean.cs
- TreeViewImageIndexConverter.cs
- DBSqlParserColumn.cs
- MessageAction.cs
- ScrollChrome.cs
- HttpListener.cs
- LabelDesigner.cs
- HtmlShim.cs
- OperationCanceledException.cs
- TreeBuilder.cs
- AlgoModule.cs
- nulltextnavigator.cs
- ReferenceEqualityComparer.cs
- DataGridViewButtonCell.cs
- ContextStaticAttribute.cs
- StylusPointProperties.cs
- SecureStringHasher.cs
- PageOutputColor.cs
- XPathMultyIterator.cs
- RbTree.cs
- GenerateScriptTypeAttribute.cs
- TreeNodeStyle.cs
- SmtpLoginAuthenticationModule.cs
- CryptoConfig.cs
- UserControl.cs
- WebPartZoneBase.cs
- HttpListenerPrefixCollection.cs
- ScrollEventArgs.cs
- Win32KeyboardDevice.cs
- Timeline.cs
- PathSegment.cs
- GenericWebPart.cs
- ContextActivityUtils.cs
- RegexTree.cs
- AttributeCollection.cs
- LayoutExceptionEventArgs.cs
- WebContext.cs
- XmlUnspecifiedAttribute.cs
- TransformValueSerializer.cs
- TrustManager.cs
- ObjectPersistData.cs
- RsaSecurityKey.cs
- LinkArea.cs
- ParsedAttributeCollection.cs
- CachingHintValidation.cs
- MetadataElement.cs
- ImageMapEventArgs.cs
- Emitter.cs
- HttpCacheVary.cs
- XmlUTF8TextReader.cs
- InkCanvasInnerCanvas.cs
- TextBoxAutomationPeer.cs
- Guid.cs
- StringConverter.cs
- AdapterUtil.cs
- BrowserCapabilitiesCompiler.cs
- ListViewUpdatedEventArgs.cs
- LocalizableAttribute.cs
- ModuleElement.cs
- TableColumnCollection.cs
- bindurihelper.cs
- CustomValidator.cs
- HttpDebugHandler.cs
- SqlDataSourceSelectingEventArgs.cs
- WindowsListViewGroupHelper.cs
- ReferenceEqualityComparer.cs
- XmlSchemaSimpleContentExtension.cs
- UnsafeNativeMethods.cs
- ElementProxy.cs
- ConnectionPoint.cs
- UnsafeNativeMethodsCLR.cs
- WinFormsSpinner.cs
- OperationInvokerBehavior.cs
- CounterCreationDataCollection.cs
- ValueProviderWrapper.cs
- X509Utils.cs
- SimpleType.cs
- MarkupWriter.cs
- OrElse.cs
- HtmlShim.cs
- SectionVisual.cs
- DbConnectionClosed.cs
- DataGridViewTextBoxColumn.cs
- Oid.cs
- DataBinder.cs
- Form.cs
- PeerNameRegistration.cs
- FormatSettings.cs
- SchemaTypeEmitter.cs
- ExpressionVisitor.cs
- QilXmlReader.cs
- AxisAngleRotation3D.cs
- HandlerWithFactory.cs
- PluralizationServiceUtil.cs
- NeutralResourcesLanguageAttribute.cs
- ConsumerConnectionPoint.cs
- LinqToSqlWrapper.cs
- IdleTimeoutMonitor.cs