-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
fs, fscrypt: move uapi definitions to new header <linux/fscrypt.h>
More fscrypt definitions are being added, and we shouldn't use a disproportionate amount of space in <linux/fs.h> for fscrypt stuff. So move the fscrypt definitions to a new header <linux/fscrypt.h>. For source compatibility with existing userspace programs, <linux/fs.h> still includes the new header. Reviewed-by: Theodore Ts'o <tytso@mit.edu> Signed-off-by: Eric Biggers <ebiggers@google.com>
- Loading branch information
Eric Biggers
committed
Aug 13, 2019
1 parent
29a98c1
commit 7af0ab0
Showing
4 changed files
with
66 additions
and
51 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,61 @@ | ||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ | ||
/* | ||
* fscrypt user API | ||
* | ||
* These ioctls can be used on filesystems that support fscrypt. See the | ||
* "User API" section of Documentation/filesystems/fscrypt.rst. | ||
*/ | ||
#ifndef _UAPI_LINUX_FSCRYPT_H | ||
#define _UAPI_LINUX_FSCRYPT_H | ||
|
||
#include <linux/types.h> | ||
|
||
#define FS_KEY_DESCRIPTOR_SIZE 8 | ||
|
||
/* Encryption policy flags */ | ||
#define FS_POLICY_FLAGS_PAD_4 0x00 | ||
#define FS_POLICY_FLAGS_PAD_8 0x01 | ||
#define FS_POLICY_FLAGS_PAD_16 0x02 | ||
#define FS_POLICY_FLAGS_PAD_32 0x03 | ||
#define FS_POLICY_FLAGS_PAD_MASK 0x03 | ||
#define FS_POLICY_FLAG_DIRECT_KEY 0x04 /* use master key directly */ | ||
#define FS_POLICY_FLAGS_VALID 0x07 | ||
|
||
/* Encryption algorithms */ | ||
#define FS_ENCRYPTION_MODE_INVALID 0 | ||
#define FS_ENCRYPTION_MODE_AES_256_XTS 1 | ||
#define FS_ENCRYPTION_MODE_AES_256_GCM 2 | ||
#define FS_ENCRYPTION_MODE_AES_256_CBC 3 | ||
#define FS_ENCRYPTION_MODE_AES_256_CTS 4 | ||
#define FS_ENCRYPTION_MODE_AES_128_CBC 5 | ||
#define FS_ENCRYPTION_MODE_AES_128_CTS 6 | ||
#define FS_ENCRYPTION_MODE_SPECK128_256_XTS 7 /* Removed, do not use. */ | ||
#define FS_ENCRYPTION_MODE_SPECK128_256_CTS 8 /* Removed, do not use. */ | ||
#define FS_ENCRYPTION_MODE_ADIANTUM 9 | ||
|
||
struct fscrypt_policy { | ||
__u8 version; | ||
__u8 contents_encryption_mode; | ||
__u8 filenames_encryption_mode; | ||
__u8 flags; | ||
__u8 master_key_descriptor[FS_KEY_DESCRIPTOR_SIZE]; | ||
}; | ||
|
||
#define FS_IOC_SET_ENCRYPTION_POLICY _IOR('f', 19, struct fscrypt_policy) | ||
#define FS_IOC_GET_ENCRYPTION_PWSALT _IOW('f', 20, __u8[16]) | ||
#define FS_IOC_GET_ENCRYPTION_POLICY _IOW('f', 21, struct fscrypt_policy) | ||
|
||
/* Parameters for passing an encryption key into the kernel keyring */ | ||
#define FS_KEY_DESC_PREFIX "fscrypt:" | ||
#define FS_KEY_DESC_PREFIX_SIZE 8 | ||
|
||
/* Structure that userspace passes to the kernel keyring */ | ||
#define FS_MAX_KEY_SIZE 64 | ||
|
||
struct fscrypt_key { | ||
__u32 mode; | ||
__u8 raw[FS_MAX_KEY_SIZE]; | ||
__u32 size; | ||
}; | ||
|
||
#endif /* _UAPI_LINUX_FSCRYPT_H */ |