Fetch revealed attributes from input proof and return dict mapping credential definition identifiers
    to dicts, each dict mapping attribute names to (decoded) values, for processing in further creds downstream.

    :param: indy-sdk proof as dict
    :return: dict mapping cred-ids to dicts, each mapping revealed attribute names to (decoded) values

def revealed_attrs(proof: dict) -> dict:
    """
    Fetch revealed attributes from input proof and return dict mapping credential definition identifiers
    to dicts, each dict mapping attribute names to (decoded) values, for processing in further creds downstream.

    :param: indy-sdk proof as dict
    :return: dict mapping cred-ids to dicts, each mapping revealed attribute names to (decoded) values
    """

    rv = {}
    for sub_index in range(len(proof['identifiers'])):
        cd_id = proof['identifiers'][sub_index]['cred_def_id']
        rv[cd_id] = {
            attr: decode(proof['proof']['proofs'][sub_index]['primary_proof']['eq_proof']['revealed_attrs'][attr])
                for attr in proof['proof']['proofs'][sub_index]['primary_proof']['eq_proof']['revealed_attrs']
        }

    return rv