diff options
Diffstat (limited to 'ubifs-utils')
| -rw-r--r-- | ubifs-utils/mkfs.ubifs/mkfs.ubifs.c | 50 | 
1 files changed, 50 insertions, 0 deletions
diff --git a/ubifs-utils/mkfs.ubifs/mkfs.ubifs.c b/ubifs-utils/mkfs.ubifs/mkfs.ubifs.c index e7acf17..2649c34 100644 --- a/ubifs-utils/mkfs.ubifs/mkfs.ubifs.c +++ b/ubifs-utils/mkfs.ubifs/mkfs.ubifs.c @@ -109,6 +109,56 @@ struct inum_mapping {  	struct stat st;  }; +#ifndef FS_KEY_DESCRIPTOR_SIZE +#define FS_KEY_DESCRIPTOR_SIZE  8 +#endif +#define FS_ENCRYPTION_CONTEXT_FORMAT_V1 1 +#define FS_KEY_DERIVATION_NONCE_SIZE	16 + +#ifndef FS_ENCRYPTION_MODE_AES_128_CBC +#define FS_ENCRYPTION_MODE_AES_128_CBC 5 +#endif + +#ifndef FS_ENCRYPTION_MODE_AES_128_CTS +#define FS_ENCRYPTION_MODE_AES_128_CTS 6 +#endif + +#ifndef FS_POLICY_FLAGS_VALID +#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_FLAGS_VALID		0x03 +#endif + +#define FS_CRYPTO_BLOCK_SIZE	16 + +/** + * Encryption context for inode + * + * Protector format: + *  1 byte: Protector format (1 = this version) + *  1 byte: File contents encryption mode + *  1 byte: File names encryption mode + *  1 byte: Flags + *  8 bytes: Master Key descriptor + *  16 bytes: Encryption Key derivation nonce + */ +struct fscrypt_context { +	__u8 format; +	__u8 contents_encryption_mode; +	__u8 filenames_encryption_mode; +	__u8 flags; +	__u8 master_key_descriptor[FS_KEY_DESCRIPTOR_SIZE]; +	__u8 nonce[FS_KEY_DERIVATION_NONCE_SIZE]; +} __attribute__((packed)); + +#ifndef FS_MAX_KEY_SIZE +#define FS_MAX_KEY_SIZE	64 +#endif +static __u8 fscrypt_masterkey[FS_MAX_KEY_SIZE]; +  /*   * Because we copy functions from the kernel, we use a subset of the UBIFS   * file-system description object struct ubifs_info.  | 
