'Create an association request for the given assoc_type and
session_type.
@param endpoint: The endpoint whose server_url will be
queried. The important bit about the endpoint is whether
it\'s in compatiblity mode (OpenID 1.1)
@param assoc_type: The association type that the request
should ask for.
@type assoc_type: str
@param session_type: The session type that should be used in
the association request. The session_type is used to
create an association session object, and that session
object is asked for any additional fields that it needs to
add to the request.
@type session_type: str
@returns: a pair of the association session object and the
request message that will be sent to the server.
@rtype: (association session type (depends on session_type),
openid.message.Message)'

def _createAssociateRequest(self, endpoint, assoc_type, session_type):

    session_type_class = self.session_types[session_type]
    assoc_session = session_type_class()
    args = {'mode': 'associate', 'assoc_type': assoc_type}
    if (not endpoint.compatibilityMode()):
        args['ns'] = OPENID2_NS
    if ((not endpoint.compatibilityMode()) or (assoc_session.session_type != 'no-encryption')):
        args['session_type'] = assoc_session.session_type
    args.update(assoc_session.getRequest())
    message = Message.fromOpenIDArgs(args)
    return (assoc_session, message)
