function Auth_OpenID_associate($qs, $assoc_secret, $assoc_handle) { $query_data = Auth_OpenID_parse($qs); assert($query_data['openid.mode'] == 'associate'); assert($query_data['openid.assoc_type'] == 'HMAC-SHA1'); $reply_dict = array('assoc_type' => 'HMAC-SHA1', 'assoc_handle' => $assoc_handle, 'expires_in' => '600'); if (defined('Auth_OpenID_NO_MATH_SUPPORT')) { assert(count($query_data) == 2); $message = Auth_OpenID_Message::fromPostArgs($query_data); $session = Auth_OpenID_PlainTextServerSession::fromMessage($message); } else { assert(count($query_data) == 6 || count($query_data) == 4); assert($query_data['openid.mode'] == 'associate'); assert($query_data['openid.session_type'] == 'DH-SHA1'); $message = Auth_OpenID_Message::fromPostArgs($query_data); $session = Auth_OpenID_DiffieHellmanSHA1ServerSession::fromMessage($message); $reply_dict['session_type'] = 'DH-SHA1'; } $reply_dict = array_merge($reply_dict, $session->answer($assoc_secret)); return Auth_OpenID_KVForm::fromArray($reply_dict); }