code: def verify_file(self, file, sig_file=None):
          
  
          result = self._result_map['verify'](self)
  
          if sig_file is None:
              log.debug("verify_file(): Handling embedded signature")
              args = ["--verify"]
              proc = self._open_subprocess(args)
              writer = _util._threaded_copy_data(file, proc.stdin)
              self._collect_output(proc, result, writer, stdin=proc.stdin)
          else:
              if not _util._is_file(sig_file):
                  log.debug("verify_file(): '%r' is not a file" % sig_file)
                  return result
              log.debug('verify_file(): Handling detached verification')
              sig_fh = None
              try:
                  sig_fh = open(sig_file, 'rb')
                  args = ["--verify %s -" % sig_fh.name]
                  proc = self._open_subprocess(args)
                  writer = _util._threaded_copy_data(file, proc.stdin)
                  self._collect_output(proc, result, writer, stdin=proc.stdin)
              finally:
                  if sig_fh and not sig_fh.closed:
                      sig_fh.close()
          return result
docs: Verify the signature on the contents of a file or file-like
          object. Can handle embedded signatures as well as detached
          signatures. If using detached signatures, the file containing the
          detached signature should be specified as the ``sig_file``.
  
          :param file file: A file descriptor object.
  
          :param str sig_file: A file containing the GPG signature data for
              ``file``. If given, ``file`` is verified via this detached
              signature. Its type will be checked with :func:`_util._is_file`.