Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / infocard / Service / managed / Microsoft / InfoCards / SelfIssuedAuthProofToken.cs / 1 / SelfIssuedAuthProofToken.cs
//------------------------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------------------------- namespace Microsoft.InfoCards { using System; using System.IdentityModel.Selectors; using System.IdentityModel.Tokens; using System.ServiceModel; using System.ServiceModel.Security; using System.ServiceModel.Security.Tokens; using System.Runtime.InteropServices; using System.Security.Cryptography; using System.IdentityModel; using System.Security.Cryptography.Xml; using IDT = Microsoft.InfoCards.Diagnostics.InfoCardTrace; using System.Collections.ObjectModel; using System.Collections.Generic; // // Summary: // This class implements a proof token that we can hand to indigo // for purposes of signing (instead of passing for example the raw unencrypted // Saml token) // internal class SelfIssuedAuthProofToken : SecurityToken, IDisposable { string m_id; DateTime m_expiration; ReadOnlyCollectionm_securityKeys; SecurityKey m_securityKey; bool m_isSymmetric; RSACryptoServiceProvider m_publicKey; public SelfIssuedAuthProofToken( RSACryptoServiceProvider rsa, DateTime expiration ) : this( expiration ) { m_publicKey = new RSACryptoServiceProvider(); // // Get the public key from the passed in public/private key pair. This is used strictly for // creating an RsaKeyIdentifierClause // m_publicKey.ImportCspBlob( rsa.ExportCspBlob( false ) ); InitCrypto( new SelfIssuedAuthAsymmetricKey( rsa ) ); } public SelfIssuedAuthProofToken( InMemorySymmetricSecurityKey symKey, DateTime expiration ) : this( expiration ) { m_isSymmetric = true; InitCrypto( symKey ); } private SelfIssuedAuthProofToken( DateTime expiration ) : base() { m_id = Guid.NewGuid().ToString(); m_expiration = expiration.ToUniversalTime(); } public override string Id { get { return m_id; } } public override ReadOnlyCollection SecurityKeys { get { return m_securityKeys; } } public override DateTime ValidTo { get { return m_expiration; } } public override DateTime ValidFrom { get { return DateTime.UtcNow; } } private void InitCrypto( SecurityKey securityKey ) { m_securityKey = securityKey; List securityKeys = new List ( 1 ); securityKeys.Add( securityKey ); m_securityKeys = securityKeys.AsReadOnly(); } public override bool CanCreateKeyIdentifierClause () { return typeof(T) == typeof(RsaKeyIdentifierClause); } public override T CreateKeyIdentifierClause () { if ( typeof( T ) == typeof( RsaKeyIdentifierClause ) ) { return (T)( (object)new RsaKeyIdentifierClause( m_publicKey ) ); } return base.CreateKeyIdentifierClause (); } public override bool MatchesKeyIdentifierClause( SecurityKeyIdentifierClause keyIdentifierClause ) { RsaKeyIdentifierClause rsaKeyIdentifierClause = keyIdentifierClause as RsaKeyIdentifierClause; if (rsaKeyIdentifierClause != null) return rsaKeyIdentifierClause.Matches( m_publicKey ); return false; } public void Dispose() { // // SymmetricKey is NOT IDisposable but RSACryptoServiceProvider is // if ( null != m_securityKey && !m_isSymmetric ) { ( ( IDisposable )m_securityKey ).Dispose(); m_securityKey = null; m_securityKeys = null; } if( null != m_publicKey ) { ( ( IDisposable )m_publicKey ).Dispose(); m_publicKey = null; } } } } // 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
- ObjectDataProvider.cs
- InstallerTypeAttribute.cs
- MachineKeySection.cs
- ArrangedElement.cs
- _FtpControlStream.cs
- DesignerWebPartChrome.cs
- Variant.cs
- ContextMenuService.cs
- XslNumber.cs
- ObjectIDGenerator.cs
- UnsafeNativeMethods.cs
- StoreItemCollection.cs
- MsmqProcessProtocolHandler.cs
- RightsManagementInformation.cs
- NetworkInformationException.cs
- GcSettings.cs
- OleDbRowUpdatingEvent.cs
- Line.cs
- PeerCollaboration.cs
- InternalBase.cs
- SmtpReplyReader.cs
- FtpCachePolicyElement.cs
- XmlCharCheckingReader.cs
- CodeObject.cs
- CreateUserWizard.cs
- ExceptionUtility.cs
- ObjectListComponentEditor.cs
- IPCCacheManager.cs
- EndpointConfigContainer.cs
- HMACRIPEMD160.cs
- DataBoundControl.cs
- MaskPropertyEditor.cs
- CustomTypeDescriptor.cs
- TemplatePartAttribute.cs
- ArrayElementGridEntry.cs
- WebPartDisplayModeCancelEventArgs.cs
- AnimatedTypeHelpers.cs
- XPathSelfQuery.cs
- SHA512.cs
- AppSecurityManager.cs
- SqlProviderManifest.cs
- PrimitiveXmlSerializers.cs
- SiteMapPath.cs
- MouseEvent.cs
- WinFormsUtils.cs
- DecodeHelper.cs
- UTF8Encoding.cs
- FunctionDefinition.cs
- ShapeTypeface.cs
- FlowDocumentFormatter.cs
- _ChunkParse.cs
- XmlUnspecifiedAttribute.cs
- ConstraintStruct.cs
- Exceptions.cs
- DataStorage.cs
- ItemList.cs
- RelationshipEntry.cs
- ResourceIDHelper.cs
- ToolBarButtonClickEvent.cs
- RijndaelManagedTransform.cs
- Timer.cs
- Separator.cs
- OutKeywords.cs
- EventPrivateKey.cs
- TcpChannelFactory.cs
- CommandLibraryHelper.cs
- LocalizableAttribute.cs
- StylusButtonCollection.cs
- _PooledStream.cs
- TextElementCollection.cs
- ShaperBuffers.cs
- AssociatedControlConverter.cs
- SystemResourceKey.cs
- SHA1CryptoServiceProvider.cs
- Header.cs
- LineProperties.cs
- RadioButtonFlatAdapter.cs
- SecurityKeyType.cs
- HtmlWindowCollection.cs
- EarlyBoundInfo.cs
- SQLBytesStorage.cs
- Literal.cs
- WebPartDescription.cs
- WindowsScroll.cs
- CollectionTypeElement.cs
- CodeLinePragma.cs
- CompilerTypeWithParams.cs
- ProvidersHelper.cs
- webclient.cs
- EntityChangedParams.cs
- OdbcCommandBuilder.cs
- ImageListUtils.cs
- TextPenaltyModule.cs
- BinHexDecoder.cs
- PointCollection.cs
- PagedDataSource.cs
- RichTextBox.cs
- CompModSwitches.cs
- OleDbFactory.cs
- SolidColorBrush.cs