xref: /linux/include/linux/keyctl.h (revision b4d0d230)
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