'Get all the identity information that has been received and
are still valid about the subject.
:param name_id: The subject identifier, a NameID instance
:param entities: The identifiers of the entities whoes assertions are
interesting. If the list is empty all entities are interesting.
:return: A 2-tuple consisting of the identity information (a
dictionary of attributes and values) and the list of entities
whoes information has timed out.'

def get_identity(self, name_id, entities=None, check_not_on_or_after=True):

    if (not entities):
        try:
            cni = code(name_id)
            entities = self._db[cni].keys()
        except KeyError:
            return ({}, [])
    res = {}
    oldees = []
    for entity_id in entities:
        try:
            info = self.get(name_id, entity_id, check_not_on_or_after)
        except ToOld:
            oldees.append(entity_id)
            continue
        if (not info):
            oldees.append(entity_id)
            continue
        for (key, vals) in info['ava'].items():
            try:
                tmp = set(res[key]).union(set(vals))
                res[key] = list(tmp)
            except KeyError:
                res[key] = vals
    return (res, oldees)
