SmtpDigestAuthenticationModule.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / whidbey / netfxsp / ndp / fx / src / Net / System / Net / Mail / SmtpDigestAuthenticationModule.cs / 5 / SmtpDigestAuthenticationModule.cs

                            //------------------------------------------------------------------------------ 
// 
//     Copyright (c) Microsoft Corporation.  All rights reserved.
// 
//----------------------------------------------------------------------------- 

namespace System.Net.Mail 
{ 
    using System;
    using System.Collections; 
    using System.IO;
    using System.Net;
    using System.Security.Permissions;
 
    //
 
#if MAKE_MAILCLIENT_PUBLIC 
    internal
#else 
    internal
#endif
        class SmtpDigestAuthenticationModule : ISmtpAuthenticationModule
    { 
        Hashtable sessions = new Hashtable();
 
        internal SmtpDigestAuthenticationModule() 
        {
        } 

        #region ISmtpAuthenticationModule Members

        // Security this method will access NetworkCredential properties that demand UnmanagedCode and Environment Permission 
        [EnvironmentPermission(SecurityAction.Assert, Unrestricted=true)]
        [SecurityPermission(SecurityAction.Assert, Flags=SecurityPermissionFlag.UnmanagedCode)] 
        public Authorization Authenticate(string challenge, NetworkCredential credential, object sessionCookie) 
        {
 
            lock (this.sessions)
            {
                NTAuthentication clientContext = this.sessions[sessionCookie] as NTAuthentication;
                if (clientContext == null) 
                {
                    if(credential == null){ 
                        return null; 
                    }
                    // 

                    this.sessions[sessionCookie] = clientContext = new NTAuthentication(false,"WDigest",credential,null, ContextFlags.Connection);
                }
 
                string resp = (challenge != null ? clientContext.GetOutgoingBlob(challenge) : clientContext.GetOutgoingBlob(null));
 
                if (!clientContext.IsCompleted) 
                {
                    return new Authorization(resp, false); 
                }
                else
                {
                    this.sessions.Remove(sessionCookie); 
                    return new Authorization(resp, true);
                } 
            } 
        }
 
        public string AuthenticationType
        {
            get
            { 
                return "WDigest";
            } 
        } 

        public void CloseContext(object sessionCookie) { 
            // This is a no-op since the context is not
            // kept open by this module beyond auth completion.
        }
 
        #endregion
    } 
} 

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

namespace System.Net.Mail 
{ 
    using System;
    using System.Collections; 
    using System.IO;
    using System.Net;
    using System.Security.Permissions;
 
    //
 
#if MAKE_MAILCLIENT_PUBLIC 
    internal
#else 
    internal
#endif
        class SmtpDigestAuthenticationModule : ISmtpAuthenticationModule
    { 
        Hashtable sessions = new Hashtable();
 
        internal SmtpDigestAuthenticationModule() 
        {
        } 

        #region ISmtpAuthenticationModule Members

        // Security this method will access NetworkCredential properties that demand UnmanagedCode and Environment Permission 
        [EnvironmentPermission(SecurityAction.Assert, Unrestricted=true)]
        [SecurityPermission(SecurityAction.Assert, Flags=SecurityPermissionFlag.UnmanagedCode)] 
        public Authorization Authenticate(string challenge, NetworkCredential credential, object sessionCookie) 
        {
 
            lock (this.sessions)
            {
                NTAuthentication clientContext = this.sessions[sessionCookie] as NTAuthentication;
                if (clientContext == null) 
                {
                    if(credential == null){ 
                        return null; 
                    }
                    // 

                    this.sessions[sessionCookie] = clientContext = new NTAuthentication(false,"WDigest",credential,null, ContextFlags.Connection);
                }
 
                string resp = (challenge != null ? clientContext.GetOutgoingBlob(challenge) : clientContext.GetOutgoingBlob(null));
 
                if (!clientContext.IsCompleted) 
                {
                    return new Authorization(resp, false); 
                }
                else
                {
                    this.sessions.Remove(sessionCookie); 
                    return new Authorization(resp, true);
                } 
            } 
        }
 
        public string AuthenticationType
        {
            get
            { 
                return "WDigest";
            } 
        } 

        public void CloseContext(object sessionCookie) { 
            // This is a no-op since the context is not
            // kept open by this module beyond auth completion.
        }
 
        #endregion
    } 
} 

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
                        

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