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
- CodeDOMUtility.cs
- Stack.cs
- EdmTypeAttribute.cs
- DataTable.cs
- DataSetUtil.cs
- AssemblyHash.cs
- MDIWindowDialog.cs
- WebContext.cs
- AutoGeneratedField.cs
- DesignerLoader.cs
- SafeWaitHandle.cs
- Rect.cs
- XmlSchemaSimpleTypeList.cs
- WebPartManagerInternals.cs
- TransformPatternIdentifiers.cs
- HwndSource.cs
- DefaultBinder.cs
- DateTimePicker.cs
- XmlAutoDetectWriter.cs
- ObjectDataSourceMethodEventArgs.cs
- JsonReaderWriterFactory.cs
- PointAnimationBase.cs
- SynchronousChannel.cs
- XmlSerializer.cs
- UIElementPropertyUndoUnit.cs
- EventSourceCreationData.cs
- Binding.cs
- SerTrace.cs
- ThicknessKeyFrameCollection.cs
- AsymmetricKeyExchangeDeformatter.cs
- ColorContextHelper.cs
- LocalBuilder.cs
- XmlSchemaSet.cs
- DocComment.cs
- KeyGestureValueSerializer.cs
- MaskedTextBoxTextEditorDropDown.cs
- WorkflowViewStateService.cs
- SecurityCriticalDataForSet.cs
- FragmentQueryProcessor.cs
- CompiledQuery.cs
- Permission.cs
- MtomMessageEncodingBindingElement.cs
- MouseButton.cs
- WebServiceEnumData.cs
- ObjectFactoryCodeDomTreeGenerator.cs
- StringToken.cs
- ParserExtension.cs
- JsonFormatReaderGenerator.cs
- TraversalRequest.cs
- XamlToRtfParser.cs
- SqlDataSourceView.cs
- PageThemeBuildProvider.cs
- OperatingSystem.cs
- EditorPart.cs
- CheckBoxList.cs
- xmlfixedPageInfo.cs
- HtmlTable.cs
- PerformanceCounter.cs
- connectionpool.cs
- UidManager.cs
- ServiceOperationParameter.cs
- DataTemplateKey.cs
- ListViewCancelEventArgs.cs
- UnmanagedMemoryStreamWrapper.cs
- XmlDictionary.cs
- PersonalizationAdministration.cs
- UdpChannelFactory.cs
- AuthenticationManager.cs
- ReferenceEqualityComparer.cs
- PropertyPushdownHelper.cs
- CodePropertyReferenceExpression.cs
- ContainerTracking.cs
- ValidationSummary.cs
- CacheSection.cs
- RoleGroup.cs
- HttpCapabilitiesBase.cs
- GridView.cs
- VScrollBar.cs
- Button.cs
- InheritanceContextChangedEventManager.cs
- AppSettingsSection.cs
- ValidationResult.cs
- smtppermission.cs
- TextEditorCopyPaste.cs
- FileLogRecord.cs
- DbProviderServices.cs
- SharedPersonalizationStateInfo.cs
- XPathAxisIterator.cs
- HtmlTextViewAdapter.cs
- FormCollection.cs
- AmbientProperties.cs
- ValidationErrorEventArgs.cs
- ListControlDataBindingHandler.cs
- TextDecorationLocationValidation.cs
- ReferenceEqualityComparer.cs
- SemanticTag.cs
- LinearKeyFrames.cs
- PrimitiveCodeDomSerializer.cs
- RelatedCurrencyManager.cs
- EditorAttribute.cs