| /* SPDX-License-Identifier: GPL-2.0 */ | |
| /* | |
| * Copyright (C) 2020-2024 Microsoft Corporation. All rights reserved. | |
| */ | |
| #ifndef _IPE_EVAL_H | |
| #define _IPE_EVAL_H | |
| #include <linux/file.h> | |
| #include <linux/types.h> | |
| #include "policy.h" | |
| #include "hooks.h" | |
| #define IPE_EVAL_CTX_INIT ((struct ipe_eval_ctx){ 0 }) | |
| extern struct ipe_policy __rcu *ipe_active_policy; | |
| extern bool success_audit; | |
| extern bool enforce; | |
| struct ipe_superblock { | |
| bool initramfs; | |
| }; | |
| #ifdef CONFIG_IPE_PROP_DM_VERITY | |
| struct ipe_bdev { | |
| #ifdef CONFIG_IPE_PROP_DM_VERITY_SIGNATURE | |
| bool dm_verity_signed; | |
| #endif /* CONFIG_IPE_PROP_DM_VERITY_SIGNATURE */ | |
| struct digest_info __rcu *root_hash; | |
| }; | |
| #endif /* CONFIG_IPE_PROP_DM_VERITY */ | |
| #ifdef CONFIG_IPE_PROP_FS_VERITY_BUILTIN_SIG | |
| struct ipe_inode { | |
| bool fs_verity_signed; | |
| }; | |
| #endif /* CONFIG_IPE_PROP_FS_VERITY_BUILTIN_SIG */ | |
| struct ipe_eval_ctx { | |
| enum ipe_op_type op; | |
| enum ipe_hook_type hook; | |
| const struct file *file; | |
| bool initramfs; | |
| #ifdef CONFIG_IPE_PROP_DM_VERITY | |
| const struct ipe_bdev *ipe_bdev; | |
| #endif /* CONFIG_IPE_PROP_DM_VERITY */ | |
| #ifdef CONFIG_IPE_PROP_FS_VERITY | |
| const struct inode *ino; | |
| #endif /* CONFIG_IPE_PROP_FS_VERITY */ | |
| #ifdef CONFIG_IPE_PROP_FS_VERITY_BUILTIN_SIG | |
| const struct ipe_inode *ipe_inode; | |
| #endif /* CONFIG_IPE_PROP_FS_VERITY_BUILTIN_SIG */ | |
| }; | |
| enum ipe_match { | |
| IPE_MATCH_RULE = 0, | |
| IPE_MATCH_TABLE, | |
| IPE_MATCH_GLOBAL, | |
| __IPE_MATCH_MAX | |
| }; | |
| void ipe_build_eval_ctx(struct ipe_eval_ctx *ctx, | |
| const struct file *file, | |
| enum ipe_op_type op, | |
| enum ipe_hook_type hook); | |
| int ipe_evaluate_event(const struct ipe_eval_ctx *const ctx); | |
| #endif /* _IPE_EVAL_H */ |