'Create an attribute assertion response.
:param identity: A dictionary with attributes and values that are
expected to be the bases for the assertion in the response.
:param in_response_to: The session identifier of the request
:param destination: The URL which should receive the response
:param sp_entity_id: The entity identifier of the SP
:param userid: A identifier of the user
:param name_id: The identifier of the subject
:param status: The status of the response
:param issuer: The issuer of the response
:param sign_assertion: Whether the assertion should be signed or not
:param sign_response: Whether the whole response should be signed
:param attributes:
:param kwargs: To catch extra keyword arguments
:return: A response instance'

def create_attribute_response(self, identity, in_response_to, destination, sp_entity_id, userid='', name_id=None, status=None, issuer=None, sign_assertion=False, sign_response=False, attributes=None, **kwargs):

    policy = self.config.getattr('policy', 'aa')
    if ((not name_id) and userid):
        try:
            name_id = self.ident.construct_nameid(userid, policy, sp_entity_id)
            logger.warning('Unspecified    NameID    format')
        except Exception:
            pass
    to_sign = []
    args = {}
    if identity:
        _issuer = self._issuer(issuer)
        ast = Assertion(identity)
        if policy:
            ast.apply_policy(sp_entity_id, policy, self.metadata)
        else:
            policy = Policy()
        if attributes:
            restr = restriction_from_attribute_spec(attributes)
            ast = filter_attribute_value_assertions(ast)
        assertion = ast.construct(sp_entity_id, in_response_to, destination, name_id, self.config.attribute_converters, policy, issuer=_issuer)
        if sign_assertion:
            assertion.signature = pre_signature_part(assertion.id, self.sec.my_cert, 1)
            to_sign = [(class_name(assertion), assertion.id)]
        args['assertion'] = assertion
    return self._response(in_response_to, destination, status, issuer, sign_response, to_sign, **args)
