mirror of
https://github.com/commaai/agnos-kernel-sdm845.git
synced 2026-06-12 05:15:07 +08:00
Hardware File Based Encryption (FBE) uses crypto engine to encrypt the user data with unique key for each file. File name and data both are encrypted with this feature. 1. security/pfk: changes to support per file encryption for f2fs using hardware crypto engine. 2. fs/ext4: adapted crypto APIs for generic crypto layer. 3. fs/f2fs: support hardware crypto engine based per file encryption. 4. fs/crypto: export APIs to support hardware crypto engine based per file encryption. Other changes made to provide support framework for per file encryption. Change-Id: I7981fa7f8f0c4bc058b80b7b8e342cfd81697c74 Signed-off-by: Neeraj Soni <neersoni@codeaurora.org>
71 lines
1.9 KiB
C
71 lines
1.9 KiB
C
/* Copyright (c) 2015-2018, The Linux Foundation. All rights reserved.
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License version 2 and
|
|
* only version 2 as published by the Free Software Foundation.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*/
|
|
|
|
#ifndef PFK_H_
|
|
#define PFK_H_
|
|
|
|
#include <linux/bio.h>
|
|
|
|
struct ice_crypto_setting;
|
|
|
|
#ifdef CONFIG_PFK
|
|
|
|
/*
|
|
* Default key for inline encryption.
|
|
*
|
|
* For now only AES-256-XTS is supported, so this is a fixed length. But if
|
|
* ever needed, this should be made variable-length with a 'mode' and 'size'.
|
|
* (Remember to update pfk_allow_merge_bio() when doing so!)
|
|
*/
|
|
#define BLK_ENCRYPTION_KEY_SIZE_AES_256_XTS 64
|
|
|
|
struct blk_encryption_key {
|
|
u8 raw[BLK_ENCRYPTION_KEY_SIZE_AES_256_XTS];
|
|
};
|
|
|
|
int pfk_load_key_start(const struct bio *bio,
|
|
struct ice_crypto_setting *ice_setting, bool *is_pfe, bool);
|
|
int pfk_load_key_end(const struct bio *bio, bool *is_pfe);
|
|
int pfk_remove_key(const unsigned char *key, size_t key_size);
|
|
bool pfk_allow_merge_bio(const struct bio *bio1, const struct bio *bio2);
|
|
void pfk_clear_on_reset(void);
|
|
|
|
#else
|
|
static inline int pfk_load_key_start(const struct bio *bio,
|
|
struct ice_crypto_setting *ice_setting, bool *is_pfe, bool async)
|
|
{
|
|
return -ENODEV;
|
|
}
|
|
|
|
static inline int pfk_load_key_end(const struct bio *bio, bool *is_pfe)
|
|
{
|
|
return -ENODEV;
|
|
}
|
|
|
|
static inline int pfk_remove_key(const unsigned char *key, size_t key_size)
|
|
{
|
|
return -ENODEV;
|
|
}
|
|
|
|
static inline bool pfk_allow_merge_bio(const struct bio *bio1,
|
|
const struct bio *bio2)
|
|
{
|
|
return true;
|
|
}
|
|
|
|
static inline void pfk_clear_on_reset(void)
|
|
{}
|
|
|
|
#endif /* CONFIG_PFK */
|
|
|
|
#endif /* PFK_H */
|