code: def verify_detached(message, signature):
      
      ctx = gpg.core.Context()
      try:
          verify_results = ctx.verify(message, signature)[1]
          return verify_results.signatures
      except gpg.errors.BadSignatures as e:
          raise GPGProblem(bad_signatures_to_str(e), code=GPGCode.BAD_SIGNATURE)
      except gpg.errors.GPGMEError as e:
          raise GPGProblem(str(e), code=e.getcode())
docs: Verifies whether the message is authentic by checking the signature.
  
      :param bytes message: The message to be verified, in canonical form.
      :param bytes signature: the OpenPGP signature to verify
      :returns: a list of signatures
      :rtype: list[gpg.results.Signature]
      :raises alot.errors.GPGProblem: if the verification fails