xref: /linux-6.15/include/uapi/linux/blk-crypto.h (revision 1ebd4a3c)
1*1ebd4a3cSEric Biggers /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
2*1ebd4a3cSEric Biggers #ifndef _UAPI_LINUX_BLK_CRYPTO_H
3*1ebd4a3cSEric Biggers #define _UAPI_LINUX_BLK_CRYPTO_H
4*1ebd4a3cSEric Biggers 
5*1ebd4a3cSEric Biggers #include <linux/ioctl.h>
6*1ebd4a3cSEric Biggers #include <linux/types.h>
7*1ebd4a3cSEric Biggers 
8*1ebd4a3cSEric Biggers struct blk_crypto_import_key_arg {
9*1ebd4a3cSEric Biggers 	/* Raw key (input) */
10*1ebd4a3cSEric Biggers 	__u64 raw_key_ptr;
11*1ebd4a3cSEric Biggers 	__u64 raw_key_size;
12*1ebd4a3cSEric Biggers 	/* Long-term wrapped key blob (output) */
13*1ebd4a3cSEric Biggers 	__u64 lt_key_ptr;
14*1ebd4a3cSEric Biggers 	__u64 lt_key_size;
15*1ebd4a3cSEric Biggers 	__u64 reserved[4];
16*1ebd4a3cSEric Biggers };
17*1ebd4a3cSEric Biggers 
18*1ebd4a3cSEric Biggers struct blk_crypto_generate_key_arg {
19*1ebd4a3cSEric Biggers 	/* Long-term wrapped key blob (output) */
20*1ebd4a3cSEric Biggers 	__u64 lt_key_ptr;
21*1ebd4a3cSEric Biggers 	__u64 lt_key_size;
22*1ebd4a3cSEric Biggers 	__u64 reserved[4];
23*1ebd4a3cSEric Biggers };
24*1ebd4a3cSEric Biggers 
25*1ebd4a3cSEric Biggers struct blk_crypto_prepare_key_arg {
26*1ebd4a3cSEric Biggers 	/* Long-term wrapped key blob (input) */
27*1ebd4a3cSEric Biggers 	__u64 lt_key_ptr;
28*1ebd4a3cSEric Biggers 	__u64 lt_key_size;
29*1ebd4a3cSEric Biggers 	/* Ephemerally-wrapped key blob (output) */
30*1ebd4a3cSEric Biggers 	__u64 eph_key_ptr;
31*1ebd4a3cSEric Biggers 	__u64 eph_key_size;
32*1ebd4a3cSEric Biggers 	__u64 reserved[4];
33*1ebd4a3cSEric Biggers };
34*1ebd4a3cSEric Biggers 
35*1ebd4a3cSEric Biggers /*
36*1ebd4a3cSEric Biggers  * These ioctls share the block device ioctl space; see uapi/linux/fs.h.
37*1ebd4a3cSEric Biggers  * 140-141 are reserved for future blk-crypto ioctls; any more than that would
38*1ebd4a3cSEric Biggers  * require an additional allocation from the block device ioctl space.
39*1ebd4a3cSEric Biggers  */
40*1ebd4a3cSEric Biggers #define BLKCRYPTOIMPORTKEY _IOWR(0x12, 137, struct blk_crypto_import_key_arg)
41*1ebd4a3cSEric Biggers #define BLKCRYPTOGENERATEKEY _IOWR(0x12, 138, struct blk_crypto_generate_key_arg)
42*1ebd4a3cSEric Biggers #define BLKCRYPTOPREPAREKEY _IOWR(0x12, 139, struct blk_crypto_prepare_key_arg)
43*1ebd4a3cSEric Biggers 
44*1ebd4a3cSEric Biggers #endif /* _UAPI_LINUX_BLK_CRYPTO_H */
45