RemoteCryptoTokenProvider.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / infocard / Service / managed / Microsoft / InfoCards / RemoteCryptoTokenProvider.cs / 1 / RemoteCryptoTokenProvider.cs

                            //------------------------------------------------------------------------------ 
// Copyright (c) Microsoft Corporation.  All rights reserved.
//-----------------------------------------------------------------------------
namespace Microsoft.InfoCards
{ 
    using System;
    using System.Security.Cryptography.X509Certificates; 
    using System.IdentityModel.Tokens; 
    using System.IdentityModel.Selectors;
    using System.ServiceModel; 
    using System.ServiceModel.Security;
    using System.ServiceModel.Security.Tokens;

    using IDT=Microsoft.InfoCards.Diagnostics.InfoCardTrace; 

    // 
    // Summary: 
    //  Creates a token with remotely hosted keys.
    // 
    sealed class RemoteCryptoTokenProvider : SecurityTokenProvider, IDisposable
    {
        RemoteX509Token     m_token;
        X509Certificate2    m_certificate; 
        object              m_sync;
 
        public RemoteCryptoTokenProvider( X509Certificate2 cert ) 
        {
            m_sync = new object(); 
            m_certificate = cert;
        }

        public void Dispose() 
        {
            // 
            // We must dispose this handle explicitly. 
            //
            IDisposable disposable = m_token as IDisposable; 
            if( null != disposable )
            {
                disposable.Dispose();
                m_token = null; 
            }
        } 
 
        //
        // Summary: 
        //  Returns the SecurityToken generated.
        //
        // Arguments:
        //  timeout:    the timeout remaing 
        //
        protected override SecurityToken GetTokenCore(TimeSpan timeout) 
        { 
            return InnerGetToken();
        } 

        //
        // Summary:
        //  Syncronized get the current token 
        //
        X509SecurityToken InnerGetToken() 
        { 
            if( null == m_token )
            { 
                lock( m_sync )
                {
                    if( null == m_token )
                    { 
                        m_token = new RemoteX509Token( m_certificate );
                    } 
                } 
            }
            return m_token; 
        }
    }
}

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
                        

Link Menu

Network programming in C#, Network Programming in VB.NET, Network Programming in .NET
This book is available now!
Buy at Amazon US or
Buy at Amazon UK