Defines | ||||
#define | DBUS_AUTH_IN_END_STATE(auth) ((auth)->state->handler == NULL) | |||
| ||||
Functions | ||||
DBusAuth * | _dbus_auth_server_new (const DBusString *guid) | |||
Creates a new auth conversation object for the server side. | ||||
DBusAuth * | _dbus_auth_client_new (void) | |||
Creates a new auth conversation object for the client side. | ||||
DBusAuth * | _dbus_auth_ref (DBusAuth *auth) | |||
Increments the refcount of an auth object. | ||||
void | _dbus_auth_unref (DBusAuth *auth) | |||
Decrements the refcount of an auth object. | ||||
dbus_bool_t | _dbus_auth_set_mechanisms (DBusAuth *auth, const char **mechanisms) | |||
Sets an array of authentication mechanism names that we are willing to use. | ||||
DBusAuthState | _dbus_auth_do_work (DBusAuth *auth) | |||
Analyzes buffered input and moves the auth conversation forward, returning the new state of the auth conversation. | ||||
dbus_bool_t | _dbus_auth_get_bytes_to_send (DBusAuth *auth, const DBusString **str) | |||
Gets bytes that need to be sent to the peer we're conversing with. | ||||
void | _dbus_auth_bytes_sent (DBusAuth *auth, int bytes_sent) | |||
Notifies the auth conversation object that the given number of bytes of the outgoing buffer have been written out. | ||||
void | _dbus_auth_get_buffer (DBusAuth *auth, DBusString **buffer) | |||
Get a buffer to be used for reading bytes from the peer we're conversing with. | ||||
void | _dbus_auth_return_buffer (DBusAuth *auth, DBusString *buffer, int bytes_read) | |||
Returns a buffer with new data read into it. | ||||
void | _dbus_auth_get_unused_bytes (DBusAuth *auth, const DBusString **str) | |||
Returns leftover bytes that were not used as part of the auth conversation. | ||||
void | _dbus_auth_delete_unused_bytes (DBusAuth *auth) | |||
Gets rid of unused bytes returned by _dbus_auth_get_unused_bytes() after we've gotten them and successfully moved them elsewhere. | ||||
dbus_bool_t | _dbus_auth_needs_encoding (DBusAuth *auth) | |||
Called post-authentication, indicates whether we need to encode the message stream with _dbus_auth_encode_data() prior to sending it to the peer. | ||||
dbus_bool_t | _dbus_auth_encode_data (DBusAuth *auth, const DBusString *plaintext, DBusString *encoded) | |||
Called post-authentication, encodes a block of bytes for sending to the peer. | ||||
dbus_bool_t | _dbus_auth_needs_decoding (DBusAuth *auth) | |||
Called post-authentication, indicates whether we need to decode the message stream with _dbus_auth_decode_data() after receiving it from the peer. | ||||
dbus_bool_t | _dbus_auth_decode_data (DBusAuth *auth, const DBusString *encoded, DBusString *plaintext) | |||
Called post-authentication, decodes a block of bytes received from the peer. | ||||
dbus_bool_t | _dbus_auth_set_credentials (DBusAuth *auth, DBusCredentials *credentials) | |||
Sets credentials received via reliable means from the operating system. | ||||
DBusCredentials * | _dbus_auth_get_identity (DBusAuth *auth) | |||
Gets the identity we authorized the client as. | ||||
const char * | _dbus_auth_get_guid_from_server (DBusAuth *auth) | |||
Gets the GUID from the server if we've authenticated; gets NULL otherwise. | ||||
dbus_bool_t | _dbus_auth_set_context (DBusAuth *auth, const DBusString *context) | |||
Sets the "authentication context" which scopes cookies with the DBUS_COOKIE_SHA1 auth mechanism for example. |
DBusAuth manages the authentication negotiation when a connection is first established, and also manage any encryption used over a connection.
#define DBUS_AUTH_IN_END_STATE | ( | auth | ) | ((auth)->state->handler == NULL) |
auth | the auth conversation object |
Definition at line 2326 of file dbus-auth.c.
Referenced by _dbus_auth_delete_unused_bytes(), _dbus_auth_do_work(), and _dbus_auth_get_unused_bytes().
void _dbus_auth_bytes_sent | ( | DBusAuth * | auth, | |
int | bytes_sent | |||
) |
Notifies the auth conversation object that the given number of bytes of the outgoing buffer have been written out.
auth | the auth conversation | |
bytes_sent | number of bytes written out |
Definition at line 2405 of file dbus-auth.c.
References _dbus_string_delete(), and DBUS_AUTH_NAME.
DBusAuth* _dbus_auth_client_new | ( | void | ) |
Creates a new auth conversation object for the client side.
See doc/dbus-sasl-profile.txt for full details on what this object does.
Definition at line 2198 of file dbus-auth.c.
References _dbus_auth_unref(), _dbus_string_free(), _dbus_string_init(), DBUS_AUTH_CLIENT, side, and state.
Referenced by _dbus_transport_init_base().
dbus_bool_t _dbus_auth_decode_data | ( | DBusAuth * | auth, | |
const DBusString * | encoded, | |||
DBusString * | plaintext | |||
) |
Called post-authentication, decodes a block of bytes received from the peer.
If no encoding was negotiated, just copies the bytes (you can avoid this by checking _dbus_auth_needs_decoding()).
auth | the auth conversation | |
encoded | the encoded data | |
plaintext | initialized string where decoded data is appended |
Definition at line 2588 of file dbus-auth.c.
References _dbus_assert, _dbus_auth_needs_decoding(), _dbus_string_copy(), DBUS_AUTH_IS_CLIENT, FALSE, and state.
void _dbus_auth_delete_unused_bytes | ( | DBusAuth * | auth | ) |
Gets rid of unused bytes returned by _dbus_auth_get_unused_bytes() after we've gotten them and successfully moved them elsewhere.
auth | the auth conversation |
Definition at line 2481 of file dbus-auth.c.
References _dbus_string_set_length(), and DBUS_AUTH_IN_END_STATE.
DBusAuthState _dbus_auth_do_work | ( | DBusAuth * | auth | ) |
Analyzes buffered input and moves the auth conversation forward, returning the new state of the auth conversation.
auth | the auth conversation |
Definition at line 2336 of file dbus-auth.c.
References DBUS_AUTH_IN_END_STATE, DBUS_AUTH_NAME, FALSE, and needed_memory.
Referenced by _dbus_transport_get_dispatch_status(), and _dbus_transport_get_is_authenticated().
dbus_bool_t _dbus_auth_encode_data | ( | DBusAuth * | auth, | |
const DBusString * | plaintext, | |||
DBusString * | encoded | |||
) |
Called post-authentication, encodes a block of bytes for sending to the peer.
If no encoding was negotiated, just copies the bytes (you can avoid this by checking _dbus_auth_needs_encoding()).
auth | the auth conversation | |
plaintext | the plain text data | |
encoded | initialized string to where encoded data is appended |
Definition at line 2525 of file dbus-auth.c.
References _dbus_assert, _dbus_auth_needs_encoding(), _dbus_string_copy(), DBUS_AUTH_IS_CLIENT, FALSE, and state.
void _dbus_auth_get_buffer | ( | DBusAuth * | auth, | |
DBusString ** | buffer | |||
) |
Get a buffer to be used for reading bytes from the peer we're conversing with.
Bytes should be appended to this buffer.
auth | the auth conversation | |
buffer | return location for buffer to append bytes to |
Definition at line 2425 of file dbus-auth.c.
References _dbus_assert, buffer_outstanding, incoming, and TRUE.
dbus_bool_t _dbus_auth_get_bytes_to_send | ( | DBusAuth * | auth, | |
const DBusString ** | str | |||
) |
Gets bytes that need to be sent to the peer we're conversing with.
After writing some bytes, _dbus_auth_bytes_sent() must be called to notify the auth object that they were written.
auth | the auth conversation | |
str | return location for a ref to the buffer to send |
Definition at line 2380 of file dbus-auth.c.
References _dbus_assert, FALSE, outgoing, and TRUE.
const char* _dbus_auth_get_guid_from_server | ( | DBusAuth * | auth | ) |
Gets the GUID from the server if we've authenticated; gets NULL otherwise.
auth | the auth object |
Definition at line 2662 of file dbus-auth.c.
References _dbus_assert, DBUS_AUTH_CLIENT, and DBUS_AUTH_IS_CLIENT.
Referenced by _dbus_transport_get_is_authenticated().
DBusCredentials* _dbus_auth_get_identity | ( | DBusAuth * | auth | ) |
Gets the identity we authorized the client as.
Apps may have different policies as to what identities they allow.
Returned credentials are not a copy and should not be modified
auth | the auth conversation |
Definition at line 2638 of file dbus-auth.c.
References _dbus_assert, _dbus_credentials_are_empty(), authorized_identity, and state.
Referenced by _dbus_transport_get_adt_audit_session_data(), _dbus_transport_get_is_anonymous(), _dbus_transport_get_is_authenticated(), _dbus_transport_get_unix_process_id(), _dbus_transport_get_unix_user(), and _dbus_transport_get_windows_user().
void _dbus_auth_get_unused_bytes | ( | DBusAuth * | auth, | |
const DBusString ** | str | |||
) |
Returns leftover bytes that were not used as part of the auth conversation.
These bytes will be part of the message stream instead. This function may not be called until authentication has succeeded.
auth | the auth conversation | |
str | return location for pointer to string of unused bytes |
Definition at line 2464 of file dbus-auth.c.
References DBUS_AUTH_IN_END_STATE.
dbus_bool_t _dbus_auth_needs_decoding | ( | DBusAuth * | auth | ) |
Called post-authentication, indicates whether we need to decode the message stream with _dbus_auth_decode_data() after receiving it from the peer.
auth | the auth conversation |
Definition at line 2557 of file dbus-auth.c.
References DBUS_AUTH_IS_CLIENT, FALSE, mech, and state.
Referenced by _dbus_auth_decode_data().
dbus_bool_t _dbus_auth_needs_encoding | ( | DBusAuth * | auth | ) |
Called post-authentication, indicates whether we need to encode the message stream with _dbus_auth_encode_data() prior to sending it to the peer.
auth | the auth conversation |
Definition at line 2498 of file dbus-auth.c.
References DBUS_AUTH_IS_CLIENT, FALSE, mech, and state.
Referenced by _dbus_auth_encode_data().
Increments the refcount of an auth object.
auth | the auth conversation |
Definition at line 2236 of file dbus-auth.c.
References _dbus_assert, and refcount.
void _dbus_auth_return_buffer | ( | DBusAuth * | auth, | |
DBusString * | buffer, | |||
int | bytes_read | |||
) |
Returns a buffer with new data read into it.
auth | the auth conversation | |
buffer | the buffer being returned | |
bytes_read | number of new bytes added |
Definition at line 2444 of file dbus-auth.c.
References _dbus_assert, buffer_outstanding, FALSE, and incoming.
DBusAuth* _dbus_auth_server_new | ( | const DBusString * | guid | ) |
Creates a new auth conversation object for the server side.
See doc/dbus-sasl-profile.txt for full details on what this object does.
Definition at line 2152 of file dbus-auth.c.
References _dbus_string_copy(), _dbus_string_free(), _dbus_string_init(), DBUS_AUTH_SERVER, DBusAuthServer::failures, DBusAuthServer::guid, DBusAuthServer::max_failures, side, and state.
Referenced by _dbus_transport_init_base().
dbus_bool_t _dbus_auth_set_context | ( | DBusAuth * | auth, | |
const DBusString * | context | |||
) |
Sets the "authentication context" which scopes cookies with the DBUS_COOKIE_SHA1 auth mechanism for example.
auth | the auth conversation | |
context | the context |
Definition at line 2681 of file dbus-auth.c.
References _dbus_string_replace_len(), and context.
dbus_bool_t _dbus_auth_set_credentials | ( | DBusAuth * | auth, | |
DBusCredentials * | credentials | |||
) |
Sets credentials received via reliable means from the operating system.
auth | the auth conversation | |
credentials | the credentials received |
Definition at line 2620 of file dbus-auth.c.
References _dbus_credentials_add_credentials(), _dbus_credentials_clear(), and credentials.
dbus_bool_t _dbus_auth_set_mechanisms | ( | DBusAuth * | auth, | |
const char ** | mechanisms | |||
) |
Sets an array of authentication mechanism names that we are willing to use.
auth | the auth conversation | |
mechanisms | NULL-terminated array of mechanism names |
Definition at line 2301 of file dbus-auth.c.
References _dbus_dup_string_array(), allowed_mechs, dbus_free_string_array(), FALSE, and TRUE.
Referenced by _dbus_transport_set_auth_mechanisms().
void _dbus_auth_unref | ( | DBusAuth * | auth | ) |
Decrements the refcount of an auth object.
auth | the auth conversation |
Definition at line 2251 of file dbus-auth.c.
References _dbus_assert, _dbus_credentials_unref(), _dbus_keyring_unref(), _dbus_list_clear(), _dbus_string_free(), DBUS_AUTH_CLIENT, DBUS_AUTH_IS_CLIENT, DBUS_AUTH_IS_SERVER, DBUS_AUTH_SERVER, dbus_free(), dbus_free_string_array(), and refcount.
Referenced by _dbus_auth_client_new(), _dbus_transport_finalize_base(), and _dbus_transport_init_base().