Fedora 30 packaging fix issu
[src/app-framework-binder.git] / src / afb-cred.h
1 /*
2  * Copyright (C) 2017, 2018 "IoT.bzh"
3  * Author: José Bollo <jose.bollo@iot.bzh>
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  *   http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  */
17
18 #pragma once
19
20 #include <sys/types.h>
21
22 struct afb_cred
23 {
24         int refcount;
25         uid_t uid;
26         gid_t gid;
27         pid_t pid;
28         const char *user;
29         const char *label;
30         const char *id;
31         const char *exported;
32 };
33
34 extern struct afb_cred *afb_cred_current();
35 extern struct afb_cred *afb_cred_create(uid_t uid, gid_t gid, pid_t pid, const char *label);
36 extern struct afb_cred *afb_cred_create_for_socket(int fd);
37 extern struct afb_cred *afb_cred_addref(struct afb_cred *cred);
38 extern void afb_cred_unref(struct afb_cred *cred);
39
40 extern int afb_cred_has_permission(struct afb_cred *cred, const char *permission, const char *context);
41
42 extern const char *afb_cred_export(struct afb_cred *cred);
43 extern struct afb_cred *afb_cred_import(const char *string);
44
45 extern struct afb_cred *afb_cred_mixed_on_behalf_import(struct afb_cred *cred, const char *context, const char *exported);
46