<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 async def prover_get_credential(wallet_handle: int, cred_id: str) -> str: """ Gets human readable credential by the given id. :param wallet_handle: wallet handler (created by open_wallet). :param cred_id: Identifier by which requested credential is stored in the wallet :return: credential json { "referent": string, // cred_id in the wallet "attrs": {"key1":"raw_value1", "key2":"raw_value2"}, "schema_id": string, "cred_def_id": string, "rev_reg_id": Optional<string>, "cred_rev_id": Optional<string> } """


    logger = logging.getLogger(__name__)
    logger.debug("prover_get_credential: >>> wallet_handle: %r, cred_id: %r",
                 wallet_handle,
                 cred_id)

    if not hasattr(prover_get_credential, "cb"):
        logger.debug("prover_get_credential: Creating callback")
        prover_get_credential.cb = create_cb(CFUNCTYPE(None, c_int32, c_int32, c_char_p))

    c_wallet_handle = c_int32(wallet_handle)
    c_cred_id = c_char_p(cred_id.encode('utf-8'))

    credentials_json = await do_call('indy_prover_get_credential',
                                     c_wallet_handle,
                                     c_cred_id,
                                     prover_get_credential.cb)

    res = credentials_json.decode()
    logger.debug("prover_get_credential: <<< res: %r", res)
    return res