| /* SPDX-License-Identifier: GPL-2.0 */ |
| /* |
| * Copyright (C) 2022 IBM Corporation |
| * Author: Nayna Jain <nayna@linux.ibm.com> |
| * |
| * Platform keystore for pseries LPAR(PLPKS). |
| */ |
| |
| #ifndef _PSERIES_PLPKS_H |
| #define _PSERIES_PLPKS_H |
| |
| #include <linux/types.h> |
| #include <linux/list.h> |
| |
| #define OSSECBOOTAUDIT 0x40000000 |
| #define OSSECBOOTENFORCE 0x20000000 |
| #define WORLDREADABLE 0x08000000 |
| #define SIGNEDUPDATE 0x01000000 |
| |
| #define PLPKS_VAR_LINUX 0x01 |
| #define PLPKS_VAR_COMMON 0x04 |
| |
| struct plpks_var { |
| char *component; |
| u8 *name; |
| u8 *data; |
| u32 policy; |
| u16 namelen; |
| u16 datalen; |
| u8 os; |
| }; |
| |
| struct plpks_var_name { |
| u8 *name; |
| u16 namelen; |
| }; |
| |
| struct plpks_var_name_list { |
| u32 varcount; |
| struct plpks_var_name varlist[]; |
| }; |
| |
| /** |
| * Writes the specified var and its data to PKS. |
| * Any caller of PKS driver should present a valid component type for |
| * their variable. |
| */ |
| int plpks_write_var(struct plpks_var var); |
| |
| /** |
| * Removes the specified var and its data from PKS. |
| */ |
| int plpks_remove_var(char *component, u8 varos, |
| struct plpks_var_name vname); |
| |
| /** |
| * Returns the data for the specified os variable. |
| */ |
| int plpks_read_os_var(struct plpks_var *var); |
| |
| /** |
| * Returns the data for the specified firmware variable. |
| */ |
| int plpks_read_fw_var(struct plpks_var *var); |
| |
| /** |
| * Returns the data for the specified bootloader variable. |
| */ |
| int plpks_read_bootloader_var(struct plpks_var *var); |
| |
| #endif |