public ResponseAuthHandleInfoCore(TPMBlob blob, long startIndex)
 {
     blob.Seek(startIndex, SeekOrigin.Begin);
     _nonceEven = blob.ReadBytes(20);
     _continueAuthSession = blob.ReadBool();
     _tpmAuthData = blob.ReadBytes(20);
 }
        protected override TPMBlob TransmitMe(TPMBlob requestBlob)
        {
            using(_commandAuthHelper.AcquireLock())
            {
                try
                {
                    TPMBlob responseBlob;
                    //Make sure that all Authorization handles are loaded
                    _commandAuthHelper.LoadAuthorizationHandles(_currentAuthorizationInfos);

                    requestBlob.Seek(0, SeekOrigin.End);
                    foreach(AuthorizationInfo authInfo in _currentAuthorizationInfos)
                        WriteAuthorizationInfo (requestBlob, authInfo);

                    lock(_tpmProvider)
                    {

                        try
                        {
                            _log.DebugFormat("Processing {0}", this);
                            _log.DebugFormat("AuthHandles: ");
                            foreach(AuthorizationInfo authInfo in _currentAuthorizationInfos)
                                _log.DebugFormat(authInfo.Handle.ToString());
                            _log.DebugFormat("Before execution: {0}", GetCommandInternalsBeforeExecute());

                            responseBlob = _tpmProvider.TransmitAndCheck(requestBlob);
                        }
                        catch(Exception)
                        {
                            _log.DebugFormat("{0} FAILED", this);
                            throw;
                        }
                        finally
                        {
                            _log.DebugFormat("Processed {0}", this);
                        }
                    }
                    ReleaseAuthHandles(false, responseBlob);
               					return responseBlob;
                }
                catch(Exception)
                {
                    ReleaseAuthHandles(true, null);
                    throw;
                }
            }
        }