D-Bus 1.15.8
Functions

DBusKeyring data structure. More...

Functions

DBusKeyring_dbus_keyring_ref (DBusKeyring *keyring)
 Increments reference count of the keyring. More...
 
void _dbus_keyring_unref (DBusKeyring *keyring)
 Decrements refcount and finalizes if it reaches zero. More...
 
DBusKeyring_dbus_keyring_new_for_credentials (DBusCredentials *credentials, const DBusString *context, DBusError *error)
 Creates a new keyring that lives in the ~/.dbus-keyrings directory of the user represented by credentials. More...
 
dbus_bool_t _dbus_keyring_validate_context (const DBusString *context)
 Checks whether the context is a valid context. More...
 
int _dbus_keyring_get_best_key (DBusKeyring *keyring, DBusError *error)
 Gets a recent key to use for authentication. More...
 
dbus_bool_t _dbus_keyring_is_for_credentials (DBusKeyring *keyring, DBusCredentials *credentials)
 Checks whether the keyring is for the same user as the given credentials. More...
 
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. More...
 

Detailed Description

DBusKeyring data structure.

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.

Function Documentation

◆ _dbus_keyring_get_best_key()

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.

Parameters
keyringthe keyring
errorerror on failure
Returns
key ID to use for auth, or -1 on failure

Definition at line 946 of file dbus-keyring.c.

◆ _dbus_keyring_get_hex_key()

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.

Parameters
keyringthe keyring
key_idthe key ID
hex_keystring to append hex-encoded key to
Returns
TRUE if we had enough memory

Definition at line 1004 of file dbus-keyring.c.

◆ _dbus_keyring_is_for_credentials()

dbus_bool_t _dbus_keyring_is_for_credentials ( DBusKeyring keyring,
DBusCredentials credentials 
)

Checks whether the keyring is for the same user as the given credentials.

Parameters
keyringthe keyring
credentialsthe credentials to check
Returns
TRUE if the keyring belongs to the given user

Definition at line 985 of file dbus-keyring.c.

References _dbus_credentials_same_user(), and credentials.

◆ _dbus_keyring_new_for_credentials()

DBusKeyring * _dbus_keyring_new_for_credentials ( DBusCredentials credentials,
const DBusString context,
DBusError error 
)

Creates a new keyring that lives in the ~/.dbus-keyrings directory of the user represented by credentials.

If the credentials are NULL or empty, uses those of the current process.

Parameters
credentialsa set of credentials representing a user or NULL
contextwhich keyring to get
errorreturn location for errors
Returns
the keyring or NULL on error

Definition at line 706 of file dbus-keyring.c.

References _dbus_append_keyring_directory_for_credentials(), _dbus_check_setuid(), _dbus_credentials_add_from_current_process(), _dbus_credentials_are_anonymous(), _dbus_credentials_copy(), _dbus_credentials_new_from_current_process(), _dbus_string_init(), DBUS_ERROR_NO_MEMORY, DBUS_ERROR_NOT_SUPPORTED, dbus_set_error(), dbus_set_error_const(), FALSE, and NULL.

◆ _dbus_keyring_ref()

DBusKeyring * _dbus_keyring_ref ( DBusKeyring keyring)

Increments reference count of the keyring.

Parameters
keyringthe keyring
Returns
the keyring

Definition at line 664 of file dbus-keyring.c.

References refcount.

◆ _dbus_keyring_unref()

void _dbus_keyring_unref ( DBusKeyring keyring)

Decrements refcount and finalizes if it reaches zero.

Parameters
keyringthe keyring

Definition at line 678 of file dbus-keyring.c.

References _dbus_credentials_unref(), _dbus_string_free(), credentials, directory, filename, filename_lock, and refcount.

◆ _dbus_keyring_validate_context()

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).

Parameters
contextthe context
Returns
TRUE if valid

Definition at line 850 of file dbus-keyring.c.

References _dbus_string_find(), _dbus_string_find_blank(), _dbus_string_get_length(), _dbus_string_validate_ascii(), FALSE, NULL, and TRUE.