<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def verify_detached(message, signature):
 """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 """

    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())