1*b4d0d230SThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-or-later */ 270025f84SDavid Howells /* keyctl kernel bits 370025f84SDavid Howells * 470025f84SDavid Howells * Copyright (C) 2016 Red Hat, Inc. All Rights Reserved. 570025f84SDavid Howells * Written by David Howells (dhowells@redhat.com) 670025f84SDavid Howells */ 770025f84SDavid Howells 870025f84SDavid Howells #ifndef __LINUX_KEYCTL_H 970025f84SDavid Howells #define __LINUX_KEYCTL_H 1070025f84SDavid Howells 1170025f84SDavid Howells #include <uapi/linux/keyctl.h> 1270025f84SDavid Howells 1370025f84SDavid Howells struct kernel_pkey_query { 1470025f84SDavid Howells __u32 supported_ops; /* Which ops are supported */ 1570025f84SDavid Howells __u32 key_size; /* Size of the key in bits */ 1670025f84SDavid Howells __u16 max_data_size; /* Maximum size of raw data to sign in bytes */ 1770025f84SDavid Howells __u16 max_sig_size; /* Maximum size of signature in bytes */ 1870025f84SDavid Howells __u16 max_enc_size; /* Maximum size of encrypted blob in bytes */ 1970025f84SDavid Howells __u16 max_dec_size; /* Maximum size of decrypted blob in bytes */ 2070025f84SDavid Howells }; 2170025f84SDavid Howells 2270025f84SDavid Howells enum kernel_pkey_operation { 2370025f84SDavid Howells kernel_pkey_encrypt, 2470025f84SDavid Howells kernel_pkey_decrypt, 2570025f84SDavid Howells kernel_pkey_sign, 2670025f84SDavid Howells kernel_pkey_verify, 2770025f84SDavid Howells }; 2870025f84SDavid Howells 2970025f84SDavid Howells struct kernel_pkey_params { 3070025f84SDavid Howells struct key *key; 3170025f84SDavid Howells const char *encoding; /* Encoding (eg. "oaep" or "raw" for none) */ 3270025f84SDavid Howells const char *hash_algo; /* Digest algorithm used (eg. "sha1") or NULL if N/A */ 3370025f84SDavid Howells char *info; /* Modified info string to be released later */ 3470025f84SDavid Howells __u32 in_len; /* Input data size */ 3570025f84SDavid Howells union { 3670025f84SDavid Howells __u32 out_len; /* Output buffer size (enc/dec/sign) */ 3770025f84SDavid Howells __u32 in2_len; /* 2nd input data size (verify) */ 3870025f84SDavid Howells }; 3970025f84SDavid Howells enum kernel_pkey_operation op : 8; 4070025f84SDavid Howells }; 4170025f84SDavid Howells 4270025f84SDavid Howells #endif /* __LINUX_KEYCTL_H */ 43