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