xref: /aosp_15_r20/bionic/libc/kernel/uapi/linux/fscrypt.h (revision 8d67ca893c1523eb926b9080dbe4e2ffd2a27ba1)
1*8d67ca89SAndroid Build Coastguard Worker /*
2*8d67ca89SAndroid Build Coastguard Worker  * This file is auto-generated. Modifications will be lost.
3*8d67ca89SAndroid Build Coastguard Worker  *
4*8d67ca89SAndroid Build Coastguard Worker  * See https://android.googlesource.com/platform/bionic/+/master/libc/kernel/
5*8d67ca89SAndroid Build Coastguard Worker  * for more information.
6*8d67ca89SAndroid Build Coastguard Worker  */
7*8d67ca89SAndroid Build Coastguard Worker #ifndef _UAPI_LINUX_FSCRYPT_H
8*8d67ca89SAndroid Build Coastguard Worker #define _UAPI_LINUX_FSCRYPT_H
9*8d67ca89SAndroid Build Coastguard Worker #include <linux/ioctl.h>
10*8d67ca89SAndroid Build Coastguard Worker #include <linux/types.h>
11*8d67ca89SAndroid Build Coastguard Worker #define FSCRYPT_POLICY_FLAGS_PAD_4 0x00
12*8d67ca89SAndroid Build Coastguard Worker #define FSCRYPT_POLICY_FLAGS_PAD_8 0x01
13*8d67ca89SAndroid Build Coastguard Worker #define FSCRYPT_POLICY_FLAGS_PAD_16 0x02
14*8d67ca89SAndroid Build Coastguard Worker #define FSCRYPT_POLICY_FLAGS_PAD_32 0x03
15*8d67ca89SAndroid Build Coastguard Worker #define FSCRYPT_POLICY_FLAGS_PAD_MASK 0x03
16*8d67ca89SAndroid Build Coastguard Worker #define FSCRYPT_POLICY_FLAG_DIRECT_KEY 0x04
17*8d67ca89SAndroid Build Coastguard Worker #define FSCRYPT_POLICY_FLAG_IV_INO_LBLK_64 0x08
18*8d67ca89SAndroid Build Coastguard Worker #define FSCRYPT_POLICY_FLAG_IV_INO_LBLK_32 0x10
19*8d67ca89SAndroid Build Coastguard Worker #define FSCRYPT_MODE_AES_256_XTS 1
20*8d67ca89SAndroid Build Coastguard Worker #define FSCRYPT_MODE_AES_256_CTS 4
21*8d67ca89SAndroid Build Coastguard Worker #define FSCRYPT_MODE_AES_128_CBC 5
22*8d67ca89SAndroid Build Coastguard Worker #define FSCRYPT_MODE_AES_128_CTS 6
23*8d67ca89SAndroid Build Coastguard Worker #define FSCRYPT_MODE_SM4_XTS 7
24*8d67ca89SAndroid Build Coastguard Worker #define FSCRYPT_MODE_SM4_CTS 8
25*8d67ca89SAndroid Build Coastguard Worker #define FSCRYPT_MODE_ADIANTUM 9
26*8d67ca89SAndroid Build Coastguard Worker #define FSCRYPT_MODE_AES_256_HCTR2 10
27*8d67ca89SAndroid Build Coastguard Worker #define FSCRYPT_POLICY_V1 0
28*8d67ca89SAndroid Build Coastguard Worker #define FSCRYPT_KEY_DESCRIPTOR_SIZE 8
29*8d67ca89SAndroid Build Coastguard Worker struct fscrypt_policy_v1 {
30*8d67ca89SAndroid Build Coastguard Worker   __u8 version;
31*8d67ca89SAndroid Build Coastguard Worker   __u8 contents_encryption_mode;
32*8d67ca89SAndroid Build Coastguard Worker   __u8 filenames_encryption_mode;
33*8d67ca89SAndroid Build Coastguard Worker   __u8 flags;
34*8d67ca89SAndroid Build Coastguard Worker   __u8 master_key_descriptor[FSCRYPT_KEY_DESCRIPTOR_SIZE];
35*8d67ca89SAndroid Build Coastguard Worker };
36*8d67ca89SAndroid Build Coastguard Worker #define FSCRYPT_KEY_DESC_PREFIX "fscrypt:"
37*8d67ca89SAndroid Build Coastguard Worker #define FSCRYPT_KEY_DESC_PREFIX_SIZE 8
38*8d67ca89SAndroid Build Coastguard Worker #define FSCRYPT_MAX_KEY_SIZE 64
39*8d67ca89SAndroid Build Coastguard Worker struct fscrypt_key {
40*8d67ca89SAndroid Build Coastguard Worker   __u32 mode;
41*8d67ca89SAndroid Build Coastguard Worker   __u8 raw[FSCRYPT_MAX_KEY_SIZE];
42*8d67ca89SAndroid Build Coastguard Worker   __u32 size;
43*8d67ca89SAndroid Build Coastguard Worker };
44*8d67ca89SAndroid Build Coastguard Worker #define FSCRYPT_POLICY_V2 2
45*8d67ca89SAndroid Build Coastguard Worker #define FSCRYPT_KEY_IDENTIFIER_SIZE 16
46*8d67ca89SAndroid Build Coastguard Worker struct fscrypt_policy_v2 {
47*8d67ca89SAndroid Build Coastguard Worker   __u8 version;
48*8d67ca89SAndroid Build Coastguard Worker   __u8 contents_encryption_mode;
49*8d67ca89SAndroid Build Coastguard Worker   __u8 filenames_encryption_mode;
50*8d67ca89SAndroid Build Coastguard Worker   __u8 flags;
51*8d67ca89SAndroid Build Coastguard Worker   __u8 log2_data_unit_size;
52*8d67ca89SAndroid Build Coastguard Worker   __u8 __reserved[3];
53*8d67ca89SAndroid Build Coastguard Worker   __u8 master_key_identifier[FSCRYPT_KEY_IDENTIFIER_SIZE];
54*8d67ca89SAndroid Build Coastguard Worker };
55*8d67ca89SAndroid Build Coastguard Worker struct fscrypt_get_policy_ex_arg {
56*8d67ca89SAndroid Build Coastguard Worker   __u64 policy_size;
57*8d67ca89SAndroid Build Coastguard Worker   union {
58*8d67ca89SAndroid Build Coastguard Worker     __u8 version;
59*8d67ca89SAndroid Build Coastguard Worker     struct fscrypt_policy_v1 v1;
60*8d67ca89SAndroid Build Coastguard Worker     struct fscrypt_policy_v2 v2;
61*8d67ca89SAndroid Build Coastguard Worker   } policy;
62*8d67ca89SAndroid Build Coastguard Worker };
63*8d67ca89SAndroid Build Coastguard Worker #define FSCRYPT_KEY_SPEC_TYPE_DESCRIPTOR 1
64*8d67ca89SAndroid Build Coastguard Worker #define FSCRYPT_KEY_SPEC_TYPE_IDENTIFIER 2
65*8d67ca89SAndroid Build Coastguard Worker struct fscrypt_key_specifier {
66*8d67ca89SAndroid Build Coastguard Worker   __u32 type;
67*8d67ca89SAndroid Build Coastguard Worker   __u32 __reserved;
68*8d67ca89SAndroid Build Coastguard Worker   union {
69*8d67ca89SAndroid Build Coastguard Worker     __u8 __reserved[32];
70*8d67ca89SAndroid Build Coastguard Worker     __u8 descriptor[FSCRYPT_KEY_DESCRIPTOR_SIZE];
71*8d67ca89SAndroid Build Coastguard Worker     __u8 identifier[FSCRYPT_KEY_IDENTIFIER_SIZE];
72*8d67ca89SAndroid Build Coastguard Worker   } u;
73*8d67ca89SAndroid Build Coastguard Worker };
74*8d67ca89SAndroid Build Coastguard Worker struct fscrypt_provisioning_key_payload {
75*8d67ca89SAndroid Build Coastguard Worker   __u32 type;
76*8d67ca89SAndroid Build Coastguard Worker   __u32 __reserved;
77*8d67ca89SAndroid Build Coastguard Worker   __u8 raw[];
78*8d67ca89SAndroid Build Coastguard Worker };
79*8d67ca89SAndroid Build Coastguard Worker struct fscrypt_add_key_arg {
80*8d67ca89SAndroid Build Coastguard Worker   struct fscrypt_key_specifier key_spec;
81*8d67ca89SAndroid Build Coastguard Worker   __u32 raw_size;
82*8d67ca89SAndroid Build Coastguard Worker   __u32 key_id;
83*8d67ca89SAndroid Build Coastguard Worker   __u32 __reserved[7];
84*8d67ca89SAndroid Build Coastguard Worker #define __FSCRYPT_ADD_KEY_FLAG_HW_WRAPPED 0x00000001
85*8d67ca89SAndroid Build Coastguard Worker   __u32 __flags;
86*8d67ca89SAndroid Build Coastguard Worker   __u8 raw[];
87*8d67ca89SAndroid Build Coastguard Worker };
88*8d67ca89SAndroid Build Coastguard Worker struct fscrypt_remove_key_arg {
89*8d67ca89SAndroid Build Coastguard Worker   struct fscrypt_key_specifier key_spec;
90*8d67ca89SAndroid Build Coastguard Worker #define FSCRYPT_KEY_REMOVAL_STATUS_FLAG_FILES_BUSY 0x00000001
91*8d67ca89SAndroid Build Coastguard Worker #define FSCRYPT_KEY_REMOVAL_STATUS_FLAG_OTHER_USERS 0x00000002
92*8d67ca89SAndroid Build Coastguard Worker   __u32 removal_status_flags;
93*8d67ca89SAndroid Build Coastguard Worker   __u32 __reserved[5];
94*8d67ca89SAndroid Build Coastguard Worker };
95*8d67ca89SAndroid Build Coastguard Worker struct fscrypt_get_key_status_arg {
96*8d67ca89SAndroid Build Coastguard Worker   struct fscrypt_key_specifier key_spec;
97*8d67ca89SAndroid Build Coastguard Worker   __u32 __reserved[6];
98*8d67ca89SAndroid Build Coastguard Worker #define FSCRYPT_KEY_STATUS_ABSENT 1
99*8d67ca89SAndroid Build Coastguard Worker #define FSCRYPT_KEY_STATUS_PRESENT 2
100*8d67ca89SAndroid Build Coastguard Worker #define FSCRYPT_KEY_STATUS_INCOMPLETELY_REMOVED 3
101*8d67ca89SAndroid Build Coastguard Worker   __u32 status;
102*8d67ca89SAndroid Build Coastguard Worker #define FSCRYPT_KEY_STATUS_FLAG_ADDED_BY_SELF 0x00000001
103*8d67ca89SAndroid Build Coastguard Worker   __u32 status_flags;
104*8d67ca89SAndroid Build Coastguard Worker   __u32 user_count;
105*8d67ca89SAndroid Build Coastguard Worker   __u32 __out_reserved[13];
106*8d67ca89SAndroid Build Coastguard Worker };
107*8d67ca89SAndroid Build Coastguard Worker #define FS_IOC_SET_ENCRYPTION_POLICY _IOR('f', 19, struct fscrypt_policy_v1)
108*8d67ca89SAndroid Build Coastguard Worker #define FS_IOC_GET_ENCRYPTION_PWSALT _IOW('f', 20, __u8[16])
109*8d67ca89SAndroid Build Coastguard Worker #define FS_IOC_GET_ENCRYPTION_POLICY _IOW('f', 21, struct fscrypt_policy_v1)
110*8d67ca89SAndroid Build Coastguard Worker #define FS_IOC_GET_ENCRYPTION_POLICY_EX _IOWR('f', 22, __u8[9])
111*8d67ca89SAndroid Build Coastguard Worker #define FS_IOC_ADD_ENCRYPTION_KEY _IOWR('f', 23, struct fscrypt_add_key_arg)
112*8d67ca89SAndroid Build Coastguard Worker #define FS_IOC_REMOVE_ENCRYPTION_KEY _IOWR('f', 24, struct fscrypt_remove_key_arg)
113*8d67ca89SAndroid Build Coastguard Worker #define FS_IOC_REMOVE_ENCRYPTION_KEY_ALL_USERS _IOWR('f', 25, struct fscrypt_remove_key_arg)
114*8d67ca89SAndroid Build Coastguard Worker #define FS_IOC_GET_ENCRYPTION_KEY_STATUS _IOWR('f', 26, struct fscrypt_get_key_status_arg)
115*8d67ca89SAndroid Build Coastguard Worker #define FS_IOC_GET_ENCRYPTION_NONCE _IOR('f', 27, __u8[16])
116*8d67ca89SAndroid Build Coastguard Worker #define fscrypt_policy fscrypt_policy_v1
117*8d67ca89SAndroid Build Coastguard Worker #define FS_KEY_DESCRIPTOR_SIZE FSCRYPT_KEY_DESCRIPTOR_SIZE
118*8d67ca89SAndroid Build Coastguard Worker #define FS_POLICY_FLAGS_PAD_4 FSCRYPT_POLICY_FLAGS_PAD_4
119*8d67ca89SAndroid Build Coastguard Worker #define FS_POLICY_FLAGS_PAD_8 FSCRYPT_POLICY_FLAGS_PAD_8
120*8d67ca89SAndroid Build Coastguard Worker #define FS_POLICY_FLAGS_PAD_16 FSCRYPT_POLICY_FLAGS_PAD_16
121*8d67ca89SAndroid Build Coastguard Worker #define FS_POLICY_FLAGS_PAD_32 FSCRYPT_POLICY_FLAGS_PAD_32
122*8d67ca89SAndroid Build Coastguard Worker #define FS_POLICY_FLAGS_PAD_MASK FSCRYPT_POLICY_FLAGS_PAD_MASK
123*8d67ca89SAndroid Build Coastguard Worker #define FS_POLICY_FLAG_DIRECT_KEY FSCRYPT_POLICY_FLAG_DIRECT_KEY
124*8d67ca89SAndroid Build Coastguard Worker #define FS_POLICY_FLAGS_VALID 0x07
125*8d67ca89SAndroid Build Coastguard Worker #define FS_ENCRYPTION_MODE_INVALID 0
126*8d67ca89SAndroid Build Coastguard Worker #define FS_ENCRYPTION_MODE_AES_256_XTS FSCRYPT_MODE_AES_256_XTS
127*8d67ca89SAndroid Build Coastguard Worker #define FS_ENCRYPTION_MODE_AES_256_GCM 2
128*8d67ca89SAndroid Build Coastguard Worker #define FS_ENCRYPTION_MODE_AES_256_CBC 3
129*8d67ca89SAndroid Build Coastguard Worker #define FS_ENCRYPTION_MODE_AES_256_CTS FSCRYPT_MODE_AES_256_CTS
130*8d67ca89SAndroid Build Coastguard Worker #define FS_ENCRYPTION_MODE_AES_128_CBC FSCRYPT_MODE_AES_128_CBC
131*8d67ca89SAndroid Build Coastguard Worker #define FS_ENCRYPTION_MODE_AES_128_CTS FSCRYPT_MODE_AES_128_CTS
132*8d67ca89SAndroid Build Coastguard Worker #define FS_ENCRYPTION_MODE_ADIANTUM FSCRYPT_MODE_ADIANTUM
133*8d67ca89SAndroid Build Coastguard Worker #define FS_KEY_DESC_PREFIX FSCRYPT_KEY_DESC_PREFIX
134*8d67ca89SAndroid Build Coastguard Worker #define FS_KEY_DESC_PREFIX_SIZE FSCRYPT_KEY_DESC_PREFIX_SIZE
135*8d67ca89SAndroid Build Coastguard Worker #define FS_MAX_KEY_SIZE FSCRYPT_MAX_KEY_SIZE
136*8d67ca89SAndroid Build Coastguard Worker #endif
137