| /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ | |
| /* | |
| * Linux Security Modules (LSM) - User space API | |
| * | |
| * Copyright (C) 2022 Casey Schaufler <casey@schaufler-ca.com> | |
| * Copyright (C) 2022 Intel Corporation | |
| */ | |
| #ifndef _UAPI_LINUX_LSM_H | |
| #define _UAPI_LINUX_LSM_H | |
| #include <linux/stddef.h> | |
| #include <linux/types.h> | |
| #include <linux/unistd.h> | |
| /** | |
| * struct lsm_ctx - LSM context information | |
| * @id: the LSM id number, see LSM_ID_XXX | |
| * @flags: LSM specific flags | |
| * @len: length of the lsm_ctx struct, @ctx and any other data or padding | |
| * @ctx_len: the size of @ctx | |
| * @ctx: the LSM context value | |
| * | |
| * The @len field MUST be equal to the size of the lsm_ctx struct | |
| * plus any additional padding and/or data placed after @ctx. | |
| * | |
| * In all cases @ctx_len MUST be equal to the length of @ctx. | |
| * If @ctx is a string value it should be nul terminated with | |
| * @ctx_len equal to `strlen(@ctx) + 1`. Binary values are | |
| * supported. | |
| * | |
| * The @flags and @ctx fields SHOULD only be interpreted by the | |
| * LSM specified by @id; they MUST be set to zero/0 when not used. | |
| */ | |
| struct lsm_ctx { | |
| __u64 id; | |
| __u64 flags; | |
| __u64 len; | |
| __u64 ctx_len; | |
| __u8 ctx[] __counted_by(ctx_len); | |
| }; | |
| /* | |
| * ID tokens to identify Linux Security Modules (LSMs) | |
| * | |
| * These token values are used to uniquely identify specific LSMs | |
| * in the kernel as well as in the kernel's LSM userspace API. | |
| * | |
| * A value of zero/0 is considered undefined and should not be used | |
| * outside the kernel. Values 1-99 are reserved for potential | |
| * future use. | |
| */ | |
| #define LSM_ID_UNDEF 0 | |
| #define LSM_ID_CAPABILITY 100 | |
| #define LSM_ID_SELINUX 101 | |
| #define LSM_ID_SMACK 102 | |
| #define LSM_ID_TOMOYO 103 | |
| #define LSM_ID_APPARMOR 104 | |
| #define LSM_ID_YAMA 105 | |
| #define LSM_ID_LOADPIN 106 | |
| #define LSM_ID_SAFESETID 107 | |
| #define LSM_ID_LOCKDOWN 108 | |
| #define LSM_ID_BPF 109 | |
| #define LSM_ID_LANDLOCK 110 | |
| #define LSM_ID_IMA 111 | |
| #define LSM_ID_EVM 112 | |
| #define LSM_ID_IPE 113 | |
| /* | |
| * LSM_ATTR_XXX definitions identify different LSM attributes | |
| * which are used in the kernel's LSM userspace API. Support | |
| * for these attributes vary across the different LSMs. None | |
| * are required. | |
| * | |
| * A value of zero/0 is considered undefined and should not be used | |
| * outside the kernel. Values 1-99 are reserved for potential | |
| * future use. | |
| */ | |
| #define LSM_ATTR_UNDEF 0 | |
| #define LSM_ATTR_CURRENT 100 | |
| #define LSM_ATTR_EXEC 101 | |
| #define LSM_ATTR_FSCREATE 102 | |
| #define LSM_ATTR_KEYCREATE 103 | |
| #define LSM_ATTR_PREV 104 | |
| #define LSM_ATTR_SOCKCREATE 105 | |
| /* | |
| * LSM_FLAG_XXX definitions identify special handling instructions | |
| * for the API. | |
| */ | |
| #define LSM_FLAG_SINGLE 0x0001 | |
| #endif /* _UAPI_LINUX_LSM_H */ |