GenerateDerivedKeyRequest.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 / GenerateDerivedKeyRequest.cs / 1 / GenerateDerivedKeyRequest.cs

                            //------------------------------------------------------------------------------ 
// Copyright (c) Microsoft Corporation.  All rights reserved.
//-----------------------------------------------------------------------------
namespace Microsoft.InfoCards
{ 
    using System;
    using System.Collections; 
    using System.Diagnostics; 
    using System.Security.Principal;
    using System.Runtime.InteropServices; 
    using System.Text;
    using System.IO;

 
    internal class GenerateDerivedKeyRequest : ClientRequest
    { 
        // 
        // in
        // 
        int m_sessionId;
        byte[] m_label;
        byte[] m_nonce;
        int    m_derivedKeyLength; 
        int    m_offset;
        string m_derivationAlgUri; 
 
        //
        // out 
        //
        byte[ ] m_key;

        // 
        // Summary
        //  Constructs GenerateDerivedKeyRequest class 
        // 
        // Arguments:
        //  callingProcess          - The process in which the caller originated. 
        //  callingIdentity         - The WindowsIdentity of the caller
        //  rpcHandle               - The handle of the native RPC request
        //  inArgs                  - The stream to read input data from
        //  outArgs                 - The stream to write output data to 
        //
        public GenerateDerivedKeyRequest( Process callingProcess, WindowsIdentity callingIdentity, IntPtr rpcHandle, Stream inArgs, Stream outArgs ) 
            : base( callingProcess, callingIdentity, rpcHandle, inArgs, outArgs ) 
        {
            m_key = null; 
        }

        protected override void OnMarshalInArgs()
        { 
            BinaryReader breader = new InfoCardBinaryReader( InArgs, Encoding.Unicode );
            m_sessionId = breader.ReadInt32(); 
 
            int length = breader.ReadInt32();
            m_label = breader.ReadBytes( length ); 

            length = breader.ReadInt32();
            m_nonce = breader.ReadBytes( length );
 
            m_derivedKeyLength = breader.ReadInt32();
            m_offset = breader.ReadInt32(); 
 
            m_derivationAlgUri = Utility.DeserializeString( breader );
 
        }

        protected override void OnProcess()
        { 

            SymmetricCryptoSession session 
                = ( SymmetricCryptoSession )CryptoSession.Find( 
                        m_sessionId,
                        ( uint ) CallerPid, 
                        RequestorIdentity.User );


            m_key = session.GenerateDerivedKey( m_derivationAlgUri, m_label, m_nonce, m_derivedKeyLength, m_offset ); 

        } 
 
        protected override void OnMarshalOutArgs()
        { 

            BinaryWriter bwriter = new BinaryWriter( OutArgs, Encoding.Unicode );
            bwriter.Write( m_key.Length );
            bwriter.Write( m_key ); 
        }
 
    } 
}

// 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