25 #include "dbus-auth.h"
26 #include "dbus-string.h"
27 #include "dbus-list.h"
28 #include "dbus-internals.h"
29 #include "dbus-keyring.h"
31 #include "dbus-protocol.h"
32 #include "dbus-credentials.h"
120 DBUS_AUTH_COMMAND_AUTH,
121 DBUS_AUTH_COMMAND_CANCEL,
122 DBUS_AUTH_COMMAND_DATA,
123 DBUS_AUTH_COMMAND_BEGIN,
124 DBUS_AUTH_COMMAND_REJECTED,
125 DBUS_AUTH_COMMAND_OK,
126 DBUS_AUTH_COMMAND_ERROR,
127 DBUS_AUTH_COMMAND_UNKNOWN,
128 DBUS_AUTH_COMMAND_NEGOTIATE_UNIX_FD,
129 DBUS_AUTH_COMMAND_AGREE_UNIX_FD
223 static void goto_state (
DBusAuth *auth,
231 const char *message);
253 "WaitingForAuth", handle_server_state_waiting_for_auth
256 "WaitingForData", handle_server_state_waiting_for_data
259 "WaitingForBegin", handle_server_state_waiting_for_begin
283 "WaitingForData", handle_client_state_waiting_for_data
289 "WaitingForOK", handle_client_state_waiting_for_ok
292 "WaitingForReject", handle_client_state_waiting_for_reject
295 "WaitingForAgreeUnixFD", handle_client_state_waiting_for_agree_unix_fd
303 "Authenticated",
NULL
307 "NeedDisconnect",
NULL
310 static const char auth_side_client[] =
"client";
311 static const char auth_side_server[] =
"server";
316 #define DBUS_AUTH_IS_SERVER(auth) ((auth)->side == auth_side_server)
321 #define DBUS_AUTH_IS_CLIENT(auth) ((auth)->side == auth_side_client)
326 #define DBUS_AUTH_CLIENT(auth) ((DBusAuthClient*)(auth))
331 #define DBUS_AUTH_SERVER(auth) ((DBusAuthServer*)(auth))
338 #define DBUS_AUTH_NAME(auth) ((auth)->side)
341 _dbus_auth_new (
int size)
432 _dbus_verbose (
"%s: Shutting down mechanism %s\n",
474 if (_dbus_string_get_length (&cookie) == 0)
484 &to_hash, _dbus_string_get_length (&to_hash)))
491 &to_hash, _dbus_string_get_length (&to_hash)))
498 &to_hash, _dbus_string_get_length (&to_hash)))
519 #define N_CHALLENGE_BYTES (128/8)
522 sha1_handle_first_client_response (
DBusAuth *auth,
536 if (_dbus_string_get_length (data) > 0)
538 if (_dbus_string_get_length (&auth->
identity) > 0)
541 _dbus_verbose (
"%s: client tried to send auth identity, but we already have one\n",
543 return send_rejected (auth);
555 _dbus_verbose (
"%s: Did not get a valid username from client\n",
557 return send_rejected (auth);
589 _dbus_verbose (
"%s: client tried to authenticate as \"%s\", "
590 "but that doesn't match this process",
592 _dbus_string_get_const_data (data));
593 retval = send_rejected (auth);
625 _DBUS_ASSERT_ERROR_IS_SET (&error);
626 _dbus_verbose (
"%s: Error loading keyring: %s\n",
628 if (send_rejected (auth))
645 _DBUS_ASSERT_ERROR_IS_SET (&error);
646 _dbus_verbose (
"%s: Could not get a cookie ID to send to client: %s\n",
648 if (send_rejected (auth))
659 &tmp2, _dbus_string_get_length (&tmp2)))
680 _DBUS_ASSERT_ERROR_IS_SET (&error);
681 _dbus_verbose (
"%s: Error generating challenge: %s\n",
683 if (send_rejected (auth))
696 _dbus_string_get_length (&tmp2)))
699 if (!send_data (auth, &tmp2))
702 goto_state (auth, &server_state_waiting_for_data);
718 sha1_handle_second_client_response (
DBusAuth *auth,
736 _dbus_verbose (
"%s: no space separator in client response\n",
738 return send_rejected (auth);
754 _dbus_string_get_length (data) - i,
759 if (_dbus_string_get_length (&client_challenge) == 0 ||
760 _dbus_string_get_length (&client_hash) == 0)
762 _dbus_verbose (
"%s: zero-length client challenge or hash\n",
764 if (send_rejected (auth))
772 if (!sha1_compute_hash (auth, auth->
cookie_id,
779 if (_dbus_string_get_length (&correct_hash) == 0)
781 if (send_rejected (auth))
788 if (send_rejected (auth))
800 DBUS_CREDENTIAL_UNIX_PROCESS_ID,
807 _dbus_verbose (
"%s: authenticated client using DBUS_COOKIE_SHA1\n",
825 handle_server_data_cookie_sha1_mech (
DBusAuth *auth,
829 return sha1_handle_first_client_response (auth, data);
831 return sha1_handle_second_client_response (auth, data);
835 handle_server_shutdown_cookie_sha1_mech (
DBusAuth *auth)
842 handle_client_initial_response_cookie_sha1_mech (
DBusAuth *auth,
858 _dbus_string_get_length (response)))
870 handle_client_data_cookie_sha1_mech (
DBusAuth *auth,
890 if (send_error (auth,
891 "Server did not send context/ID/challenge properly"))
906 if (send_error (auth,
907 "Server did not send context/ID/challenge properly"))
924 j = _dbus_string_get_length (data);
927 &server_challenge, 0))
932 if (send_error (auth,
"Server sent invalid cookie context"))
939 if (send_error (auth,
"Could not parse cookie ID as an integer"))
944 if (_dbus_string_get_length (&server_challenge) == 0)
946 if (send_error (auth,
"Empty server challenge string"))
967 _DBUS_ASSERT_ERROR_IS_SET (&error);
969 _dbus_verbose (
"%s: Error loading keyring: %s\n",
972 if (send_error (auth,
"Could not load cookie file"))
999 _DBUS_ASSERT_ERROR_IS_SET (&error);
1001 _dbus_verbose (
"%s: Failed to generate challenge: %s\n",
1004 if (send_error (auth,
"Failed to generate challenge"))
1021 if (!sha1_compute_hash (auth, val,
1027 if (_dbus_string_get_length (&correct_hash) == 0)
1030 if (send_error (auth,
"Don't have the requested cookie ID"))
1038 _dbus_string_get_length (&tmp)))
1045 _dbus_string_get_length (&tmp)))
1048 if (!send_data (auth, &tmp))
1072 handle_client_shutdown_cookie_sha1_mech (
DBusAuth *auth)
1083 handle_server_data_external_mech (
DBusAuth *auth,
1088 _dbus_verbose (
"%s: no credentials, mechanism EXTERNAL can't authenticate\n",
1090 return send_rejected (auth);
1093 if (_dbus_string_get_length (data) > 0)
1095 if (_dbus_string_get_length (&auth->
identity) > 0)
1098 _dbus_verbose (
"%s: client tried to send auth identity, but we already have one\n",
1100 return send_rejected (auth);
1111 if (_dbus_string_get_length (&auth->
identity) == 0 &&
1114 if (send_data (auth,
NULL))
1116 _dbus_verbose (
"%s: sending empty challenge asking client for auth identity\n",
1119 goto_state (auth, &server_state_waiting_for_data);
1133 if (_dbus_string_get_length (&auth->
identity) == 0)
1146 _dbus_verbose (
"%s: could not get credentials from uid string\n",
1148 return send_rejected (auth);
1154 _dbus_verbose (
"%s: desired user %s is no good\n",
1156 _dbus_string_get_const_data (&auth->
identity));
1157 return send_rejected (auth);
1171 DBUS_CREDENTIAL_UNIX_PROCESS_ID,
1175 #ifdef HAVE_PDPLINUX
1176 _dbus_verbose(
"***** add DBUS_CREDENTIAL_UNIX_PARSEC\n");
1178 DBUS_CREDENTIAL_UNIX_PARSEC,
1180 _dbus_verbose(
"_dbus_credentials_add_credential FAILED \n");
1184 _dbus_verbose(
"_dbus_credentials_add_credential OK \n");
1189 DBUS_CREDENTIAL_ADT_AUDIT_DATA_ID,
1194 DBUS_CREDENTIAL_LINUX_SECURITY_LABEL,
1198 if (!send_ok (auth))
1201 _dbus_verbose (
"%s: authenticated client based on socket credentials\n",
1208 _dbus_verbose (
"%s: desired identity not found in socket credentials\n",
1210 return send_rejected (auth);
1215 handle_server_shutdown_external_mech (
DBusAuth *auth)
1221 handle_client_initial_response_external_mech (
DBusAuth *auth,
1239 _dbus_string_get_length (response)))
1252 handle_client_data_external_mech (
DBusAuth *auth,
1260 handle_client_shutdown_external_mech (
DBusAuth *auth)
1270 handle_server_data_anonymous_mech (
DBusAuth *auth,
1273 if (_dbus_string_get_length (data) > 0)
1282 _dbus_verbose (
"%s: Received invalid UTF-8 trace data from ANONYMOUS client\n",
1284 return send_rejected (auth);
1287 _dbus_verbose (
"%s: ANONYMOUS client sent trace string: '%s'\n",
1289 _dbus_string_get_const_data (data));
1298 DBUS_CREDENTIAL_UNIX_PROCESS_ID,
1303 if (!send_ok (auth))
1306 _dbus_verbose (
"%s: authenticated client as anonymous\n",
1313 handle_server_shutdown_anonymous_mech (
DBusAuth *auth)
1319 handle_client_initial_response_anonymous_mech (
DBusAuth *auth,
1334 "libdbus " DBUS_VERSION_STRING))
1339 _dbus_string_get_length (response)))
1352 handle_client_data_anonymous_mech (
DBusAuth *auth,
1360 handle_client_shutdown_anonymous_mech (
DBusAuth *auth)
1377 all_mechanisms[] = {
1379 handle_server_data_external_mech,
1381 handle_server_shutdown_external_mech,
1382 handle_client_initial_response_external_mech,
1383 handle_client_data_external_mech,
1385 handle_client_shutdown_external_mech },
1386 {
"DBUS_COOKIE_SHA1",
1387 handle_server_data_cookie_sha1_mech,
1389 handle_server_shutdown_cookie_sha1_mech,
1390 handle_client_initial_response_cookie_sha1_mech,
1391 handle_client_data_cookie_sha1_mech,
1393 handle_client_shutdown_cookie_sha1_mech },
1395 handle_server_data_anonymous_mech,
1397 handle_server_shutdown_anonymous_mech,
1398 handle_client_initial_response_anonymous_mech,
1399 handle_client_data_anonymous_mech,
1401 handle_client_shutdown_anonymous_mech },
1407 char **allowed_mechs)
1411 if (allowed_mechs !=
NULL &&
1413 _dbus_string_get_const_data (name)))
1417 while (all_mechanisms[i].mechanism !=
NULL)
1420 all_mechanisms[i].mechanism))
1422 return &all_mechanisms[i];
1476 _dbus_string_get_length (&auth->
outgoing)))
1483 shutdown_mech (auth);
1485 goto_state (auth, &client_state_waiting_for_data);
1495 if (data ==
NULL || _dbus_string_get_length (data) == 0)
1499 old_len = _dbus_string_get_length (&auth->
outgoing);
1504 _dbus_string_get_length (&auth->
outgoing)))
1538 all_mechanisms[i].mechanism))
1546 all_mechanisms[i].mechanism))
1554 _dbus_string_get_length (&auth->
outgoing)))
1557 shutdown_mech (auth);
1564 goto_state (auth, &common_state_need_disconnect);
1566 goto_state (auth, &server_state_waiting_for_auth);
1578 send_error (
DBusAuth *auth,
const char *message)
1581 "ERROR \"%s\"\r\n", message);
1589 orig_len = _dbus_string_get_length (&auth->
outgoing);
1595 _dbus_string_get_length (&auth->
outgoing)) &&
1598 goto_state (auth, &server_state_waiting_for_begin);
1616 goto_state (auth, &common_state_authenticated);
1639 if (end_of_hex != _dbus_string_get_length (args_from_ok) ||
1642 _dbus_verbose (
"Bad GUID from server, parsed %d bytes and had %d bytes from server\n",
1643 end_of_hex, _dbus_string_get_length (args_from_ok));
1644 goto_state (auth, &common_state_need_disconnect);
1653 _dbus_verbose (
"Got GUID '%s' from the server\n",
1654 _dbus_string_get_const_data (&
DBUS_AUTH_CLIENT (auth)->guid_from_server));
1657 return send_negotiate_unix_fd(auth);
1659 _dbus_verbose(
"Not negotiating unix fd passing, since not possible\n");
1660 return send_begin (auth);
1668 goto_state (auth, &client_state_waiting_for_reject);
1692 if (_dbus_string_get_length (args) != end)
1695 if (!send_error (auth,
"Invalid hex encoding"))
1701 #ifdef DBUS_ENABLE_VERBOSE_MODE
1703 _dbus_string_get_length (&decoded)))
1704 _dbus_verbose (
"%s: data: '%s'\n",
1706 _dbus_string_get_const_data (&decoded));
1709 if (!(* data_func) (auth, &decoded))
1720 send_negotiate_unix_fd (
DBusAuth *auth)
1723 "NEGOTIATE_UNIX_FD\r\n"))
1726 goto_state (auth, &client_state_waiting_for_agree_unix_fd);
1731 send_agree_unix_fd (
DBusAuth *auth)
1736 _dbus_verbose(
"Agreed to UNIX FD passing\n");
1739 "AGREE_UNIX_FD\r\n"))
1742 goto_state (auth, &server_state_waiting_for_begin);
1749 if (_dbus_string_get_length (args) == 0)
1752 if (!send_rejected (auth))
1784 _dbus_verbose (
"%s: Trying mechanism %s\n",
1788 if (!process_data (auth, &hex_response,
1795 _dbus_verbose (
"%s: Unsupported mechanism %s\n",
1797 _dbus_string_get_const_data (&mech));
1799 if (!send_rejected (auth))
1817 handle_server_state_waiting_for_auth (
DBusAuth *auth,
1823 case DBUS_AUTH_COMMAND_AUTH:
1824 return handle_auth (auth, args);
1826 case DBUS_AUTH_COMMAND_CANCEL:
1827 case DBUS_AUTH_COMMAND_DATA:
1828 return send_error (auth,
"Not currently in an auth conversation");
1830 case DBUS_AUTH_COMMAND_BEGIN:
1831 goto_state (auth, &common_state_need_disconnect);
1834 case DBUS_AUTH_COMMAND_ERROR:
1835 return send_rejected (auth);
1837 case DBUS_AUTH_COMMAND_NEGOTIATE_UNIX_FD:
1838 return send_error (auth,
"Need to authenticate first");
1840 case DBUS_AUTH_COMMAND_REJECTED:
1841 case DBUS_AUTH_COMMAND_OK:
1842 case DBUS_AUTH_COMMAND_UNKNOWN:
1843 case DBUS_AUTH_COMMAND_AGREE_UNIX_FD:
1845 return send_error (auth,
"Unknown command");
1850 handle_server_state_waiting_for_data (
DBusAuth *auth,
1856 case DBUS_AUTH_COMMAND_AUTH:
1857 return send_error (auth,
"Sent AUTH while another AUTH in progress");
1859 case DBUS_AUTH_COMMAND_CANCEL:
1860 case DBUS_AUTH_COMMAND_ERROR:
1861 return send_rejected (auth);
1863 case DBUS_AUTH_COMMAND_DATA:
1866 case DBUS_AUTH_COMMAND_BEGIN:
1867 goto_state (auth, &common_state_need_disconnect);
1870 case DBUS_AUTH_COMMAND_NEGOTIATE_UNIX_FD:
1871 return send_error (auth,
"Need to authenticate first");
1873 case DBUS_AUTH_COMMAND_REJECTED:
1874 case DBUS_AUTH_COMMAND_OK:
1875 case DBUS_AUTH_COMMAND_UNKNOWN:
1876 case DBUS_AUTH_COMMAND_AGREE_UNIX_FD:
1878 return send_error (auth,
"Unknown command");
1883 handle_server_state_waiting_for_begin (
DBusAuth *auth,
1889 case DBUS_AUTH_COMMAND_AUTH:
1890 return send_error (auth,
"Sent AUTH while expecting BEGIN");
1892 case DBUS_AUTH_COMMAND_DATA:
1893 return send_error (auth,
"Sent DATA while expecting BEGIN");
1895 case DBUS_AUTH_COMMAND_BEGIN:
1896 goto_state (auth, &common_state_authenticated);
1899 case DBUS_AUTH_COMMAND_NEGOTIATE_UNIX_FD:
1901 return send_agree_unix_fd(auth);
1903 return send_error(auth,
"Unix FD passing not supported, not authenticated or otherwise not possible");
1905 case DBUS_AUTH_COMMAND_REJECTED:
1906 case DBUS_AUTH_COMMAND_OK:
1907 case DBUS_AUTH_COMMAND_UNKNOWN:
1908 case DBUS_AUTH_COMMAND_AGREE_UNIX_FD:
1910 return send_error (auth,
"Unknown command");
1912 case DBUS_AUTH_COMMAND_CANCEL:
1913 case DBUS_AUTH_COMMAND_ERROR:
1914 return send_rejected (auth);
1950 len = _dbus_string_get_length (args);
1961 if (!get_word (args, &next, &m))
1980 if (mech != &all_mechanisms[0])
1982 _dbus_verbose (
"%s: Adding mechanism %s to list we will try\n",
1994 _dbus_verbose (
"%s: Already tried mechanism %s; not adding to list we will try\n",
2000 _dbus_verbose (
"%s: Server offered mechanism \"%s\" that we don't know how to use\n",
2002 _dbus_string_get_const_data (&m));
2028 if (!record_mechanisms (auth, args))
2036 if (!send_auth (auth, mech))
2041 _dbus_verbose (
"%s: Trying mechanism %s\n",
2048 _dbus_verbose (
"%s: Disconnecting because we are out of mechanisms to try using\n",
2050 goto_state (auth, &common_state_need_disconnect);
2058 handle_client_state_waiting_for_data (
DBusAuth *auth,
2066 case DBUS_AUTH_COMMAND_DATA:
2069 case DBUS_AUTH_COMMAND_REJECTED:
2070 return process_rejected (auth, args);
2072 case DBUS_AUTH_COMMAND_OK:
2073 return process_ok(auth, args);
2075 case DBUS_AUTH_COMMAND_ERROR:
2076 return send_cancel (auth);
2078 case DBUS_AUTH_COMMAND_AUTH:
2079 case DBUS_AUTH_COMMAND_CANCEL:
2080 case DBUS_AUTH_COMMAND_BEGIN:
2081 case DBUS_AUTH_COMMAND_UNKNOWN:
2082 case DBUS_AUTH_COMMAND_NEGOTIATE_UNIX_FD:
2083 case DBUS_AUTH_COMMAND_AGREE_UNIX_FD:
2085 return send_error (auth,
"Unknown command");
2090 handle_client_state_waiting_for_ok (
DBusAuth *auth,
2096 case DBUS_AUTH_COMMAND_REJECTED:
2097 return process_rejected (auth, args);
2099 case DBUS_AUTH_COMMAND_OK:
2100 return process_ok(auth, args);
2102 case DBUS_AUTH_COMMAND_DATA:
2103 case DBUS_AUTH_COMMAND_ERROR:
2104 return send_cancel (auth);
2106 case DBUS_AUTH_COMMAND_AUTH:
2107 case DBUS_AUTH_COMMAND_CANCEL:
2108 case DBUS_AUTH_COMMAND_BEGIN:
2109 case DBUS_AUTH_COMMAND_UNKNOWN:
2110 case DBUS_AUTH_COMMAND_NEGOTIATE_UNIX_FD:
2111 case DBUS_AUTH_COMMAND_AGREE_UNIX_FD:
2113 return send_error (auth,
"Unknown command");
2118 handle_client_state_waiting_for_reject (
DBusAuth *auth,
2124 case DBUS_AUTH_COMMAND_REJECTED:
2125 return process_rejected (auth, args);
2127 case DBUS_AUTH_COMMAND_AUTH:
2128 case DBUS_AUTH_COMMAND_CANCEL:
2129 case DBUS_AUTH_COMMAND_DATA:
2130 case DBUS_AUTH_COMMAND_BEGIN:
2131 case DBUS_AUTH_COMMAND_OK:
2132 case DBUS_AUTH_COMMAND_ERROR:
2133 case DBUS_AUTH_COMMAND_UNKNOWN:
2134 case DBUS_AUTH_COMMAND_NEGOTIATE_UNIX_FD:
2135 case DBUS_AUTH_COMMAND_AGREE_UNIX_FD:
2137 goto_state (auth, &common_state_need_disconnect);
2143 handle_client_state_waiting_for_agree_unix_fd(
DBusAuth *auth,
2149 case DBUS_AUTH_COMMAND_AGREE_UNIX_FD:
2152 _dbus_verbose(
"Successfully negotiated UNIX FD passing\n");
2153 return send_begin (auth);
2155 case DBUS_AUTH_COMMAND_ERROR:
2158 _dbus_verbose(
"Failed to negotiate UNIX FD passing\n");
2159 return send_begin (auth);
2161 case DBUS_AUTH_COMMAND_OK:
2162 case DBUS_AUTH_COMMAND_DATA:
2163 case DBUS_AUTH_COMMAND_REJECTED:
2164 case DBUS_AUTH_COMMAND_AUTH:
2165 case DBUS_AUTH_COMMAND_CANCEL:
2166 case DBUS_AUTH_COMMAND_BEGIN:
2167 case DBUS_AUTH_COMMAND_UNKNOWN:
2168 case DBUS_AUTH_COMMAND_NEGOTIATE_UNIX_FD:
2170 return send_error (auth,
"Unknown command");
2183 {
"AUTH", DBUS_AUTH_COMMAND_AUTH },
2184 {
"CANCEL", DBUS_AUTH_COMMAND_CANCEL },
2185 {
"DATA", DBUS_AUTH_COMMAND_DATA },
2186 {
"BEGIN", DBUS_AUTH_COMMAND_BEGIN },
2187 {
"REJECTED", DBUS_AUTH_COMMAND_REJECTED },
2188 {
"OK", DBUS_AUTH_COMMAND_OK },
2189 {
"ERROR", DBUS_AUTH_COMMAND_ERROR },
2190 {
"NEGOTIATE_UNIX_FD", DBUS_AUTH_COMMAND_NEGOTIATE_UNIX_FD },
2191 {
"AGREE_UNIX_FD", DBUS_AUTH_COMMAND_AGREE_UNIX_FD }
2195 lookup_command_from_name (
DBusString *command)
2202 auth_command_names[i].name))
2203 return auth_command_names[i].command;
2206 return DBUS_AUTH_COMMAND_UNKNOWN;
2213 _dbus_verbose (
"%s: going from state %s to state %s\n",
2218 auth->
state = state;
2257 _dbus_string_get_length (&line)))
2259 _dbus_verbose (
"%s: Command contained non-ASCII chars or embedded nul\n",
2261 if (!send_error (auth,
"Command contained non-ASCII"))
2267 _dbus_verbose (
"%s: got command \"%s\"\n",
2269 _dbus_string_get_const_data (&line));
2284 command = lookup_command_from_name (&line);
2351 auth->
side = auth_side_server;
2352 auth->
state = &server_state_waiting_for_auth;
2356 server_auth->
guid = guid_copy;
2392 auth->
side = auth_side_client;
2393 auth->
state = &client_state_need_send_auth;
2397 if (!send_auth (auth, &all_mechanisms[0]))
2436 shutdown_mech (auth);
2479 const char **mechanisms)
2483 if (mechanisms !=
NULL)
2503 #define DBUS_AUTH_IN_END_STATE(auth) ((auth)->state->handler == NULL)
2518 #define MAX_BUFFER (16 * _DBUS_ONE_KILOBYTE)
2525 if (_dbus_string_get_length (&auth->
incoming) > MAX_BUFFER ||
2526 _dbus_string_get_length (&auth->
outgoing) > MAX_BUFFER)
2528 goto_state (auth, &common_state_need_disconnect);
2529 _dbus_verbose (
"%s: Disconnecting due to excessive data buffered in auth phase\n",
2534 while (process_command (auth));
2537 return DBUS_AUTH_STATE_WAITING_FOR_MEMORY;
2538 else if (_dbus_string_get_length (&auth->
outgoing) > 0)
2539 return DBUS_AUTH_STATE_HAVE_BYTES_TO_SEND;
2540 else if (auth->
state == &common_state_need_disconnect)
2541 return DBUS_AUTH_STATE_NEED_DISCONNECT;
2542 else if (auth->
state == &common_state_authenticated)
2543 return DBUS_AUTH_STATE_AUTHENTICATED;
2544 else return DBUS_AUTH_STATE_WAITING_FOR_INPUT;
2565 if (_dbus_string_get_length (&auth->
outgoing) == 0)
2585 _dbus_verbose (
"%s: Sent %d bytes of: %s\n",
2588 _dbus_string_get_const_data (&auth->
outgoing));
2675 if (auth->
state != &common_state_authenticated)
2706 if (auth->
state != &common_state_authenticated)
2719 _dbus_string_get_length (encoded));
2734 if (auth->
state != &common_state_authenticated)
2769 if (auth->
state != &common_state_authenticated)
2782 _dbus_string_get_length (plaintext));
2815 if (auth->
state == &common_state_authenticated)
2841 if (auth->
state == &common_state_authenticated)
2842 return _dbus_string_get_const_data (&
DBUS_AUTH_CLIENT (auth)->guid_from_server);
2860 &auth->
context, 0, _dbus_string_get_length (context));
2899 return find_mech (name,
NULL) !=
NULL;