1 /*
2  * viridentity.h: helper APIs for managing user identities
3  *
4  * Copyright (C) 2012-2013 Red Hat, Inc.
5  *
6  * This library is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU Lesser General Public
8  * License as published by the Free Software Foundation; either
9  * version 2.1 of the License, or (at your option) any later version.
10  *
11  * This library is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14  * Lesser General Public License for more details.
15  *
16  * You should have received a copy of the GNU Lesser General Public
17  * License along with this library;  If not, see
18  * <http://www.gnu.org/licenses/>.
19  *
20  */
21 
22 #pragma once
23 
24 #include "internal.h"
25 #include <glib-object.h>
26 
27 #define VIR_TYPE_IDENTITY vir_identity_get_type()
28 G_DECLARE_FINAL_TYPE(virIdentity, vir_identity, VIR, IDENTITY, GObject);
29 
30 #define VIR_IDENTITY_AUTORESTORE __attribute__((cleanup(virIdentityRestoreHelper)))
31 
32 virIdentity *virIdentityGetCurrent(void);
33 int virIdentitySetCurrent(virIdentity *ident);
34 virIdentity *virIdentityElevateCurrent(void);
35 
36 void virIdentityRestoreHelper(virIdentity **identptr);
37 
38 int virIdentityIsCurrentElevated(void);
39 virIdentity *virIdentityGetSystem(void);
40 
41 virIdentity *virIdentityNew(void);
42 virIdentity *virIdentityNewCopy(virIdentity *src);
43 
44 int virIdentityGetUserName(virIdentity *ident,
45                            const char **username);
46 int virIdentityGetUNIXUserID(virIdentity *ident,
47                              uid_t *uid);
48 int virIdentityGetGroupName(virIdentity *ident,
49                             const char **groupname);
50 int virIdentityGetUNIXGroupID(virIdentity *ident,
51                               gid_t *gid);
52 int virIdentityGetProcessID(virIdentity *ident,
53                             pid_t *pid);
54 int virIdentityGetProcessTime(virIdentity *ident,
55                               unsigned long long *timestamp);
56 int virIdentityGetSASLUserName(virIdentity *ident,
57                                const char **username);
58 int virIdentityGetX509DName(virIdentity *ident,
59                             const char **dname);
60 int virIdentityGetSELinuxContext(virIdentity *ident,
61                                  const char **context);
62 int virIdentityGetSystemToken(virIdentity *ident,
63                               const char **token);
64 
65 
66 int virIdentitySetUserName(virIdentity *ident,
67                            const char *username);
68 int virIdentitySetUNIXUserID(virIdentity *ident,
69                              uid_t uid);
70 int virIdentitySetGroupName(virIdentity *ident,
71                             const char *groupname);
72 int virIdentitySetUNIXGroupID(virIdentity *ident,
73                               gid_t gid);
74 int virIdentitySetProcessID(virIdentity *ident,
75                             pid_t pid);
76 int virIdentitySetProcessTime(virIdentity *ident,
77                               unsigned long long timestamp);
78 int virIdentitySetSASLUserName(virIdentity *ident,
79                                const char *username);
80 int virIdentitySetX509DName(virIdentity *ident,
81                             const char *dname);
82 int virIdentitySetSELinuxContext(virIdentity *ident,
83                                  const char *context);
84 int virIdentitySetSystemToken(virIdentity *ident,
85                               const char *token);
86 
87 int virIdentitySetParameters(virIdentity *ident,
88                              virTypedParameterPtr params,
89                              int nparams);
90 
91 int virIdentityGetParameters(virIdentity *ident,
92                              virTypedParameterPtr *params,
93                              int *nparams);
94