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