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
- DataServiceProviderMethods.cs
- ConnectionConsumerAttribute.cs
- ProxyElement.cs
- ContentControl.cs
- SpellerStatusTable.cs
- SqlProviderManifest.cs
- AddInIpcChannel.cs
- HuffCodec.cs
- NamespaceInfo.cs
- AsymmetricKeyExchangeDeformatter.cs
- RawUIStateInputReport.cs
- BuildManager.cs
- DrawingCollection.cs
- PropagatorResult.cs
- SerializationInfoEnumerator.cs
- SeverityFilter.cs
- EntityContainer.cs
- SQLRoleProvider.cs
- ConfigurationErrorsException.cs
- CodeSubDirectory.cs
- XmlSchemaElement.cs
- CodeLabeledStatement.cs
- CodePropertyReferenceExpression.cs
- BulletedList.cs
- XmlLanguageConverter.cs
- TitleStyle.cs
- EffectiveValueEntry.cs
- RightsManagementPermission.cs
- PasswordBox.cs
- TemplateInstanceAttribute.cs
- EdgeProfileValidation.cs
- CustomLineCap.cs
- OleDbCommand.cs
- UIPermission.cs
- CmsUtils.cs
- BroadcastEventHelper.cs
- Int64Converter.cs
- EastAsianLunisolarCalendar.cs
- xmlsaver.cs
- FileRegion.cs
- SoapEnumAttribute.cs
- BlobPersonalizationState.cs
- MeasureItemEvent.cs
- RuntimeDelegateArgument.cs
- InterleavedZipPartStream.cs
- XslCompiledTransform.cs
- SignatureHelper.cs
- WebPartEditVerb.cs
- WebPartMovingEventArgs.cs
- WsdlInspector.cs
- ProtocolsConfiguration.cs
- EncryptedKey.cs
- InputBinder.cs
- CapabilitiesSection.cs
- PublishLicense.cs
- OdbcDataAdapter.cs
- SBCSCodePageEncoding.cs
- IPGlobalProperties.cs
- DBBindings.cs
- LineServicesRun.cs
- CellNormalizer.cs
- DrawingCollection.cs
- MenuAdapter.cs
- DiffuseMaterial.cs
- Span.cs
- DbConnectionClosed.cs
- HyperLinkStyle.cs
- SubMenuStyleCollection.cs
- GraphicsPathIterator.cs
- MachineKeySection.cs
- RecognizerInfo.cs
- EncodingNLS.cs
- CharacterString.cs
- ScaleTransform.cs
- DataGridColumn.cs
- XPathAncestorIterator.cs
- OdbcDataAdapter.cs
- Assert.cs
- ToolStripPanel.cs
- DiscoveryMessageSequenceGenerator.cs
- FontFamily.cs
- CornerRadiusConverter.cs
- QilPatternVisitor.cs
- XmlWriterDelegator.cs
- VectorAnimationUsingKeyFrames.cs
- MatrixKeyFrameCollection.cs
- CmsInterop.cs
- ThemeDirectoryCompiler.cs
- UnsafeNativeMethods.cs
- ChameleonKey.cs
- WinFormsSecurity.cs
- Itemizer.cs
- OneToOneMappingSerializer.cs
- ImageField.cs
- SQLDecimal.cs
- DataGridViewSelectedRowCollection.cs
- PageFunction.cs
- DbConnectionStringCommon.cs
- TablePattern.cs
- DriveInfo.cs