Functions | |
DBusKeyring * | _dbus_keyring_ref (DBusKeyring *keyring) |
Increments reference count of the keyring. | |
void | _dbus_keyring_unref (DBusKeyring *keyring) |
Decrements refcount and finalizes if it reaches zero. | |
DBusKeyring * | _dbus_keyring_new_homedir (const DBusString *username, const DBusString *context, DBusError *error) |
Creates a new keyring that lives in the ~/.dbus-keyrings directory of the given user. | |
dbus_bool_t | _dbus_keyring_validate_context (const DBusString *context) |
Checks whether the context is a valid context. | |
int | _dbus_keyring_get_best_key (DBusKeyring *keyring, DBusError *error) |
Gets a recent key to use for authentication. | |
dbus_bool_t | _dbus_keyring_is_for_user (DBusKeyring *keyring, const DBusString *username) |
Checks whether the keyring is for the given username. | |
dbus_bool_t | _dbus_keyring_get_hex_key (DBusKeyring *keyring, int key_id, DBusString *hex_key) |
Gets the hex-encoded secret key for the given ID. |
Types and functions related to DBusKeyring. DBusKeyring is intended to manage cookies used to authenticate clients to servers. This is essentially the "verify that client can read the user's homedir" authentication mechanism. Both client and server must have access to the homedir.
The secret keys are not kept in locked memory, and are written to a file in the user's homedir. However they are transient (only used by a single server instance for a fixed period of time, then discarded). Also, the keys are not sent over the wire.
int _dbus_keyring_get_best_key | ( | DBusKeyring * | keyring, | |
DBusError * | error | |||
) |
Gets a recent key to use for authentication.
If no recent key exists, creates one. Returns the key ID. If a key can't be written to the keyring file so no recent key can be created, returns -1. All valid keys are > 0.
keyring | the keyring | |
error | error on failure |
Definition at line 971 of file dbus-keyring.c.
References DBUS_ERROR_FAILED, dbus_set_error_const(), DBusKey::id, and TRUE.
dbus_bool_t _dbus_keyring_get_hex_key | ( | DBusKeyring * | keyring, | |
int | key_id, | |||
DBusString * | hex_key | |||
) |
Gets the hex-encoded secret key for the given ID.
Returns FALSE if not enough memory. Returns TRUE but empty key on any other error such as unknown key ID.
keyring | the keyring | |
key_id | the key ID | |
hex_key | string to append hex-encoded key to |
Definition at line 1029 of file dbus-keyring.c.
References _dbus_string_hex_encode(), keys, n_keys, NULL, DBusKey::secret, and TRUE.
dbus_bool_t _dbus_keyring_is_for_user | ( | DBusKeyring * | keyring, | |
const DBusString * | username | |||
) |
Checks whether the keyring is for the given username.
keyring | the keyring | |
username | the username to check |
Definition at line 1010 of file dbus-keyring.c.
References _dbus_string_equal(), and username.
DBusKeyring* _dbus_keyring_new_homedir | ( | const DBusString * | username, | |
const DBusString * | context, | |||
DBusError * | error | |||
) |
Creates a new keyring that lives in the ~/.dbus-keyrings directory of the given user.
If the username is NULL, uses the user owning the current process.
username | username to get keyring for, or NULL | |
context | which keyring to get | |
error | return location for errors |
Definition at line 715 of file dbus-keyring.c.
References _dbus_assert, _dbus_concat_dir_and_file(), _dbus_create_directory(), _dbus_getenv(), _dbus_homedir_from_current_process(), _dbus_homedir_from_username(), _dbus_keyring_unref(), _dbus_keyring_validate_context(), _dbus_string_append(), _dbus_string_copy(), _dbus_string_free(), _dbus_string_init(), _dbus_string_init_const(), _dbus_string_set_length(), _dbus_username_from_current_process(), _dbus_warn(), DBUS_ERROR_FAILED, dbus_error_free(), dbus_error_init(), DBUS_ERROR_NO_MEMORY, dbus_set_error(), dbus_set_error_const(), directory, FALSE, filename, filename_lock, DBusError::message, NULL, TRUE, and username.
DBusKeyring* _dbus_keyring_ref | ( | DBusKeyring * | keyring | ) |
Increments reference count of the keyring.
keyring | the keyring |
Definition at line 675 of file dbus-keyring.c.
References refcount.
void _dbus_keyring_unref | ( | DBusKeyring * | keyring | ) |
Decrements refcount and finalizes if it reaches zero.
keyring | the keyring |
Definition at line 689 of file dbus-keyring.c.
References _dbus_string_free(), dbus_free(), directory, filename, filename_lock, keys, n_keys, refcount, and username.
Referenced by _dbus_auth_unref(), and _dbus_keyring_new_homedir().
dbus_bool_t _dbus_keyring_validate_context | ( | const DBusString * | context | ) |
Checks whether the context is a valid context.
Contexts that might cause confusion when used in filenames are not allowed (contexts can't start with a dot or contain dir separators).
context | the context |
Definition at line 875 of file dbus-keyring.c.
References _dbus_string_find(), _dbus_string_find_blank(), _dbus_string_validate_ascii(), FALSE, NULL, and TRUE.
Referenced by _dbus_keyring_new_homedir().