void IClientChannelSink.ProcessMessage(IMessage msg, ITransportHeaders requestHeaders, System.IO.Stream requestStream, out ITransportHeaders responseHeaders, out System.IO.Stream responseStream)
        {
            lock (authHelper)
            {
                if (!authHelper.HaveNonce)
                {
                    System.Runtime.Remoting.Channels.TransportHeaders authHeaders = new TransportHeaders();
                    System.IO.MemoryStream authStream = new System.IO.MemoryStream();
                    authHelper.SetRequest(authHeaders);

                    ITransportHeaders authedHeaders;
                    System.IO.Stream  authedStream;
                    nextSink.ProcessMessage(msg, authHeaders, authStream, out authedHeaders, out authedStream);

                    //System.IO.MemoryStream memStream = BaseHelper.ToMemoryStream(authedStream);
                    //char[] chars = new System.Text.UTF8Encoding().GetChars(memStream.ToArray(), 0, (int)memStream.Length);


                    authHelper.SetNonce(authedHeaders);
                }
            }
            authHelper.Authenticate(requestHeaders, ref requestStream);

            nextSink.ProcessMessage(msg, requestHeaders, requestStream, out responseHeaders, out responseStream);
        }