#include <dbus/dbus-internals.h>
#include <dbus/dbus-connection.h>
+#include <dbus/dbus-credentials.h>
#include <dbus/dbus-message.h>
#include <dbus/dbus-transport.h>
#include <dbus/dbus-resources.h>
DBUS_PRIVATE_EXPORT
dbus_bool_t _dbus_connection_get_linux_security_label (DBusConnection *connection,
char **label_p);
+DBUS_PRIVATE_EXPORT
+DBusCredentials *_dbus_connection_get_credentials (DBusConnection *connection);
/* if DBUS_ENABLE_STATS */
DBUS_PRIVATE_EXPORT
return result;
}
+DBusCredentials *
+_dbus_connection_get_credentials (DBusConnection *connection)
+{
+ DBusCredentials *result;
+
+ _dbus_assert (connection != NULL);
+
+ CONNECTION_LOCK (connection);
+
+ if (!_dbus_transport_try_to_authenticate (connection->transport))
+ result = NULL;
+ else
+ result = _dbus_transport_get_credentials (connection->transport);
+
+ CONNECTION_UNLOCK (connection);
+
+ return result;
+}
+
/**
* Gets the Windows user SID of the connection if known. Returns
* #TRUE if the ID is filled in. Always returns #FALSE on non-Windows
}
}
+/**
+ * If the transport has already been authenticated, return its
+ * credentials. If not, return #NULL.
+ *
+ * The caller must ref the returned credentials object if it wants to
+ * keep it.
+ */
+DBusCredentials *
+_dbus_transport_get_credentials (DBusTransport *transport)
+{
+ if (!transport->authenticated)
+ return FALSE;
+
+ return _dbus_auth_get_identity (transport->auth);
+}
+
/**
* See dbus_connection_get_windows_user().
*
#include <dbus/dbus-internals.h>
#include <dbus/dbus-connection.h>
+#include <dbus/dbus-credentials.h>
#include <dbus/dbus-protocol.h>
#include <dbus/dbus-address.h>
char **windows_sid_p);
dbus_bool_t _dbus_transport_get_linux_security_label (DBusTransport *transport,
char **label_p);
+DBusCredentials *_dbus_transport_get_credentials (DBusTransport *transport);
void _dbus_transport_set_windows_user_function (DBusTransport *transport,
DBusAllowWindowsUserFunction function,