/* SPDX-License-Identifier: GPL-2.0 */ /* * Kernelspace interface to the pkey device driver * * Copyright IBM Corp. 2016, 2023 * * Author: Harald Freudenberger * */ #ifndef _KAPI_PKEY_H #define _KAPI_PKEY_H #include #include #include /* * In-kernel API: Transform an key blob (of any type) into a protected key. * @param key pointer to a buffer containing the key blob * @param keylen size of the key blob in bytes * @param protkey pointer to buffer receiving the protected key * @param xflags additional execution flags (see PKEY_XFLAG_* definitions below) * As of now the only supported flag is PKEY_XFLAG_NOMEMALLOC. * @return 0 on success, negative errno value on failure */ int pkey_key2protkey(const u8 *key, u32 keylen, u8 *protkey, u32 *protkeylen, u32 *protkeytype, u32 xflags); /* * If this flag is given in the xflags parameter, the pkey implementation * is not allowed to allocate memory but instead should fall back to use * preallocated memory or simple fail with -ENOMEM. * This flag is for protected key derive within a cipher or similar * which must not allocate memory which would cause io operations - see * also the CRYPTO_ALG_ALLOCATES_MEMORY flag in crypto.h. */ #define PKEY_XFLAG_NOMEMALLOC 0x0001 #endif /* _KAPI_PKEY_H */