1/* Copyright (C) 2010 The giomm Development Team
2 *
3 * This library is free software; you can redistribute it and/or
4 * modify it under the terms of the GNU Lesser General Public
5 * License as published by the Free Software Foundation; either
6 * version 2.1 of the License, or (at your option) any later version.
7 *
8 * This library is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
11 * Lesser General Public License for more details.
12 *
13 * You should have received a copy of the GNU Lesser General Public
14 * License along with this library.  If not, see <http://www.gnu.org/licenses/>.
15 */
16
17_CONFIGINCLUDE(giommconfig.h)
18
19#include <glibmm/object.h>
20
21_DEFS(giomm,gio)
22_PINCLUDE(glibmm/private/object_p.h)
23
24namespace Gio
25{
26
27_WRAP_ENUM(CredentialsType, GCredentialsType, NO_GTYPE)
28
29/** An object containing credentials.
30 * The Credentials type is a reference-counted wrapper for native credentials.
31 * This information is typically used for identifying, authenticating and
32 * authorizing other processes.
33 *
34 * Some operating systems supports looking up the credentials of the remote
35 * peer of a communication endpoint - see e.g. Gio::Socket::get_credentials().
36 *
37 * Some operating systems supports securely sending and receiving credentials
38 * over a Unix Domain Socket, see UnixCredentialsMessage,
39 * Gio::UnixConnection::send_credentials() and
40 * Gio::UnixConnection::receive_credentials() for details.
41 *
42 * On Linux, the native credential type is a struct ucred - see the unix(7)
43 * man page for details. This corresponds to
44 * Gio::CREDENTIALS_TYPE_LINUX_UCRED.
45 *
46 * On FreeBSD, the native credential type is a struct cmsgcred. This
47 * corresponds to Gio::CREDENTIALS_TYPE_FREEBSD_CMSGCRED.
48 *
49 * @newin{2,28}
50 */
51class GIOMM_API Credentials : public Glib::Object
52{
53  _CLASS_GOBJECT(Credentials, GCredentials, G_CREDENTIALS, Glib::Object, GObject, , , GIOMM_API)
54
55protected:
56  _CTOR_DEFAULT
57  _IGNORE(g_credentials_new)
58
59public:
60  _WRAP_CREATE()
61
62  _WRAP_METHOD(Glib::ustring to_string() const, g_credentials_to_string)
63
64  _WRAP_METHOD(gpointer get_native(CredentialsType native_type), g_credentials_get_native)
65  _WRAP_METHOD(void set_native(CredentialsType native_type, gpointer native), g_credentials_set_native)
66  _WRAP_METHOD(bool is_same_user(const Glib::RefPtr<const Credentials>& other_credentials), g_credentials_is_same_user, errthrow)
67
68  _WRAP_METHOD(uid_t get_unix_user(), g_credentials_get_unix_user, errthrow, ifdef G_OS_UNIX)
69  _WRAP_METHOD(bool set_unix_user(uid_t uid), g_credentials_set_unix_user, errthrow, ifdef G_OS_UNIX)
70
71  _WRAP_METHOD(pid_t get_unix_pid() const, g_credentials_get_unix_pid, errthrow, ifdef G_OS_UNIX)
72};
73
74
75} // namespace Gio
76
77