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

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

    //
    // Summary 
    // Processes a request to find the list of managed cards that use a specific
    // self issued card for authentication to the IP 
    // 

    // 
    // Specify valid parent requests.
    //
    class ListDependantCardsRequest :UIAgentRequest
    { 
        Uri m_selfIssuedCardId;       // Specifies the card identifier.
 
        List m_allCards = new List(); 

 
        public ListDependantCardsRequest(
            IntPtr rpcHandle, Stream inArgs, Stream outArgs, ClientUIRequest parent )
            : base( rpcHandle, inArgs, outArgs, parent )
        { 
        }
 
        // 
        // Summary
        // Marshals input arguments for the request. The arguments are read from a stream in binary. 
        //
        protected override void OnMarshalInArgs()
        {
            BinaryReader reader = new InfoCardBinaryReader( InArgs, Encoding.Unicode ); 

            m_selfIssuedCardId = new Uri( Utility.DeserializeString( reader ) ); 
        } 

        // 
        // Summary
        // Processes the request.
        //
        protected override void OnProcess() 
        {
            StoreConnection connection = StoreConnection.GetConnection(); 
            try 
            {
                // 
                // Retrieve all the managed cards that use self issued cards for authentication
                //
                //
                // Get the full list of all infocards. 
                //
                IList rows =  (IList)connection.Query( 
                                QueryDetails.FullRow, 
                                connection.LocalDataSource,
                                new QueryParameter( 
                                  SecondaryIndexDefinition.SupportedAuthIndex,
                                  (Int32)TokenFactoryCredentialType.SelfIssuedCredential ) );

                if( null != rows && 0 != rows.Count ) 
                {
                    for( int i = 0; i < rows.Count; i++ ) 
                    { 
                        byte[ ] rawForm = rows[ i ].GetDataField();
                        try 
                        {
                            using( MemoryStream stream = new MemoryStream( rawForm ) )
                            {
                                InfoCard card = new InfoCard( stream ); 
                                foreach( TokenCreationParameter param in card.CreationParameters )
                                { 
                                    if( param.CredentialType == TokenFactoryCredentialType.SelfIssuedCredential ) 
                                    {
                                        string ppid = param.CredentialSelectors[ CredentialSelectorType.SelfIssuedCardIdSelector ].GetStringWithoutNullTerminator(); 

                                        if(  Utility.CompareByteArrays(
                                                    Convert.FromBase64String( ppid ),
                                                    Utility.CreateHash( 
                                                        card.IssuerIdentifierAsBytes,
                                                        m_selfIssuedCardId ) ) ) 
                                        { 
                                            m_allCards.Add( card );
                                        } 
                                    }
                                }
                            }
                        } 
                        finally
                        { 
                            Array.Clear( rawForm, 0, rawForm.Length ); 
                        }
                    } 

                }

            } 
            finally
            { 
                connection.Close(); 
            }
 
        }

        //
        // Summary 
        // Marshals output arguments for the request. The arguments are written to a stream in binary.
        // 
        protected override void OnMarshalOutArgs() 
        {
            Stream stream = OutArgs; 
            BinaryWriter writer = new BinaryWriter( stream, System.Text.Encoding.Unicode );
            if( null != m_allCards )
            {
                writer.Write( (Int32)m_allCards.Count); 
                foreach( InfoCard card in m_allCards )
                { 
                    Utility.SerializeUri( writer, card.Id ); 
                }
            } 
            else
            {
                writer.Write( (Int32)0 );
            } 
        }
 
 
    }
 
}

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