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

                            //------------------------------------------------------------------------------ 
// Copyright (c) Microsoft Corporation.  All rights reserved.
//-----------------------------------------------------------------------------
namespace Microsoft.InfoCards
{ 
   using System;
   using System.IO; 
   using System.Diagnostics; 
   using System.Security.Principal;
   using IDT = Microsoft.InfoCards.Diagnostics.InfoCardTrace; 

   //
   // Summary:
   // Manages a hash request from the client against a specified cryptosession. 
   //
   class HashFinalRequest : ClientRequest 
   { 
       //
       // The cryptosession id we are attaching to. 
       //
       int m_cryptoSession;

       // 
       // The cleartext data we wish to transfrom
       // 
       byte[] m_inBlock; 

       // 
       // The transformed data.
       //
       byte[] m_outBlock;
 
        //
        // Sumamry: 
        // Construct an HashFinalRequest object 
        //
        // 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 HashFinalRequest( Process callingProcess, WindowsIdentity callingIdentity, IntPtr rpcHandle, Stream inArgs, Stream outArgs ) 
           : base( callingProcess, callingIdentity, rpcHandle, inArgs, outArgs )
       { 
           IDT.TraceDebug( "Intiating an Encrypt request" );
       }

 
       protected override void OnMarshalInArgs()
       { 
           IDT.DebugAssert( null != InArgs, "null inargs" ); 
           BinaryReader reader = new InfoCardBinaryReader( InArgs );
 
           m_cryptoSession   = reader.ReadInt32();
           int count         = reader.ReadInt32();
           m_inBlock         = reader.ReadBytes( count );
 
           IDT.ThrowInvalidArgumentConditional( 0 == m_cryptoSession, "cryptoSession" );
       } 
 
       //
       // Summary: 
       // Attach to the appropriate cryptosession and hash the data.
       //
       protected override void OnProcess()
       { 
           try
           { 
               HashCryptoSession session = 
                   (HashCryptoSession) CryptoSession.Find( m_cryptoSession, CallerPid, RequestorIdentity.User );
 
               m_outBlock = session.HashFinal( m_inBlock );
           }
           finally
           { 
               Array.Clear( m_inBlock, 0, m_inBlock.Length );
           } 
       } 

 
       protected override void OnMarshalOutArgs()
       {
           IDT.DebugAssert( null != OutArgs, "Null out args" );
           IDT.DebugAssert( null != m_outBlock, "null outBlock buffer" ); 

           BinaryWriter writer = new BinaryWriter( OutArgs ); 
 
           Utility.SerializeBytes( writer, m_outBlock );
       } 

   }

} 

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