Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / infocard / Service / managed / Microsoft / InfoCards / RemoteX509AsymmetricSecurityKey.cs / 1 / RemoteX509AsymmetricSecurityKey.cs
//------------------------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------------------------- namespace Microsoft.InfoCards { using System; using System.Security.Cryptography; using System.Security.Cryptography.X509Certificates; using System.Security.Cryptography.Xml; using System.IdentityModel.Tokens; using System.ServiceModel; using System.ServiceModel.Security; using System.ServiceModel.Security.Tokens; using IDT=Microsoft.InfoCards.Diagnostics.InfoCardTrace; // // Summary: // Remotes all PrivateKey operations to the RPC service running in the agent. // Any public key operations are performed with the local public key // class RemoteX509AsymmetricSecurityKey : X509AsymmetricSecurityKey, IDisposable { X509Certificate2 m_cert; object m_sync; bool m_disposed; public RemoteX509AsymmetricSecurityKey(X509Certificate2 cert) : base( cert ) { m_cert = cert; // // If the key is not our special remote key, we shouldn't be using // this object. // if( !( m_cert.PrivateKey is RemoteCryptoRsaServiceProvider) ) { throw IDT.ThrowHelperError( new NotSupportedException() ); } m_sync = new object(); } // // Summary: // Return a specified key set. // // Arguments: // algorithmUri: the name of the algorithm // privateKey: indicates if the private key (remote key) is returned. // public override AsymmetricAlgorithm GetAsymmetricAlgorithm(string algorithmUri, bool privateKey) { if( !IsSupportedAlgorithm( algorithmUri ) ) { throw IDT.ThrowHelperError( new NotSupportedException() ); } return base.GetAsymmetricAlgorithm( algorithmUri, privateKey ); } // // Summary: // Returns the Signature verifier // public override AsymmetricSignatureDeformatter GetSignatureDeformatter(string algorithmUri) { if( !IsSupportedAlgorithm( algorithmUri ) ) { throw IDT.ThrowHelperError( new NotSupportedException() ); } // // This will use the public key, which we don't need to wrap. // return base.GetSignatureDeformatter( algorithmUri ); } // // Summary: // Returns the Signature creator // public override AsymmetricSignatureFormatter GetSignatureFormatter(string algorithmUri) { if( !IsSupportedAlgorithm( algorithmUri ) ) { throw IDT.ThrowHelperError( new NotSupportedException() ); } // // The private key object must be our special private key. // RemoteAsymmetricSignatureFormatter formatter = new RemoteAsymmetricSignatureFormatter(); formatter.SetKey( m_cert.PrivateKey ); return formatter; } // // Summary: // Tests if a specific algorithm is supported. // public override bool IsSupportedAlgorithm(string algorithmUri) { switch (algorithmUri) { case SignedXml.XmlDsigRSASHA1Url: case EncryptedXml.XmlEncRSA15Url: case EncryptedXml.XmlEncRSAOAEPUrl: return base.IsSupportedAlgorithm( algorithmUri ); case SignedXml.XmlDsigDSAUrl: default: return false; } } void IDisposable.Dispose() { if ( m_disposed ) { return; } lock( m_sync ) { if( m_disposed ) { return; } m_disposed = true; IDisposable disposable = m_cert.PrivateKey as IDisposable; if( null != disposable ) { disposable.Dispose(); } disposable = m_cert.PublicKey.Key as IDisposable; if( null != disposable ) { disposable.Dispose(); } } } } } // 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
- TypedTableGenerator.cs
- PreviewPageInfo.cs
- XmlDataSourceNodeDescriptor.cs
- View.cs
- RemoteWebConfigurationHostStream.cs
- FileLogRecordHeader.cs
- OdbcConnectionOpen.cs
- ArglessEventHandlerProxy.cs
- EventLogQuery.cs
- LinearKeyFrames.cs
- ChangeTracker.cs
- ListView.cs
- MatrixAnimationBase.cs
- MultiViewDesigner.cs
- XmlSchemaGroupRef.cs
- DirectoryLocalQuery.cs
- MsmqAppDomainProtocolHandler.cs
- WrappedKeySecurityTokenParameters.cs
- RectAnimationUsingKeyFrames.cs
- Sequence.cs
- DuplicateWaitObjectException.cs
- ToolboxControl.cs
- ConnectAlgorithms.cs
- NetworkInformationException.cs
- GridPatternIdentifiers.cs
- Base64Stream.cs
- SqlCommandSet.cs
- PixelFormat.cs
- QilChoice.cs
- TrackingMemoryStream.cs
- IgnoreFileBuildProvider.cs
- ListViewPagedDataSource.cs
- DisableDpiAwarenessAttribute.cs
- SignedXmlDebugLog.cs
- DBCommandBuilder.cs
- RequiredFieldValidator.cs
- XsltInput.cs
- DataGridRelationshipRow.cs
- InternalTypeHelper.cs
- FixedSOMTableCell.cs
- Constraint.cs
- DecoderReplacementFallback.cs
- Errors.cs
- SymbolTable.cs
- Configuration.cs
- _ShellExpression.cs
- dataprotectionpermissionattribute.cs
- XmlSiteMapProvider.cs
- ExpressionBindingsDialog.cs
- CompositeActivityValidator.cs
- IdleTimeoutMonitor.cs
- KeyboardEventArgs.cs
- MultiPropertyDescriptorGridEntry.cs
- SpeechEvent.cs
- OdbcConnection.cs
- ResourceWriter.cs
- CharEnumerator.cs
- LookupTables.cs
- OdbcUtils.cs
- MenuItem.cs
- WebPartEditorCancelVerb.cs
- TableLayoutColumnStyleCollection.cs
- RotateTransform.cs
- SelectorAutomationPeer.cs
- DataContext.cs
- URI.cs
- ISFTagAndGuidCache.cs
- SmtpFailedRecipientsException.cs
- UserValidatedEventArgs.cs
- ImageFormat.cs
- BinHexDecoder.cs
- SchemaAttDef.cs
- ComplexPropertyEntry.cs
- HttpContext.cs
- ViewLoader.cs
- TextParagraphCache.cs
- ThreadAbortException.cs
- XmlException.cs
- Clock.cs
- PageCatalogPart.cs
- xmlglyphRunInfo.cs
- SqlConnectionPoolProviderInfo.cs
- InheritanceAttribute.cs
- WebPartTransformerAttribute.cs
- DisableDpiAwarenessAttribute.cs
- DataListItemEventArgs.cs
- ConfigurationSectionGroupCollection.cs
- ListViewCommandEventArgs.cs
- GridItemCollection.cs
- ActivityValidationServices.cs
- IndependentlyAnimatedPropertyMetadata.cs
- CustomTypeDescriptor.cs
- LocalizationParserHooks.cs
- FreezableDefaultValueFactory.cs
- LogEntrySerializer.cs
- Helpers.cs
- CollectionViewGroup.cs
- XmlLinkedNode.cs
- ErrorHandler.cs
- InheritanceContextHelper.cs