On Wed, Jul 19, 2023 at 10:04:23AM -0700, Gaurav Kashyap wrote: > Implements the ICE apis for generate, prepare and import key > apis and hooks it up the scm calls defined for them. > Key management has to be done from Qualcomm Trustzone as only > it can interface with HWKM. > > Signed-off-by: Gaurav Kashyap <quic_gaurkash@xxxxxxxxxxx> > --- > drivers/soc/qcom/ice.c | 72 ++++++++++++++++++++++++++++++++++++++++++ > include/soc/qcom/ice.h | 8 +++++ > 2 files changed, 80 insertions(+) > > diff --git a/drivers/soc/qcom/ice.c b/drivers/soc/qcom/ice.c > index 33f67fcfa1bc..16f7af74ddb0 100644 > --- a/drivers/soc/qcom/ice.c > +++ b/drivers/soc/qcom/ice.c > @@ -19,6 +19,13 @@ > > #define AES_256_XTS_KEY_SIZE 64 > > +/* > + * Wrapped key sizes from HWKm is different for different versions of > + * HW. It is not expected to change again in the future. > + */ > +#define QCOM_ICE_HWKM_WRAPPED_KEY_SIZE(v) \ > + ((v) == 1 ? 68 : 100) > + > /* QCOM ICE registers */ > #define QCOM_ICE_REG_VERSION 0x0008 > #define QCOM_ICE_REG_FUSE_SETTING 0x0010 > @@ -412,6 +419,71 @@ int qcom_ice_derive_sw_secret(struct qcom_ice *ice, const u8 wrapped_key[], > } > EXPORT_SYMBOL_GPL(qcom_ice_derive_sw_secret); > > +/** > + * qcom_ice_generate_key() - Generate a wrapped key for inline encryption > + * @longterm_wrapped_key: wrapped key that is generated, which is > + * BLK_CRYPTO_MAX_HW_WRAPPED_KEY_SIZE in size. > + * > + * Make a scm call into trustzone to generate a wrapped key for storage > + * encryption using hwkm. > + * > + * Return: 0 on success; err on failure. > + */ > +int qcom_ice_generate_key(struct qcom_ice *ice, > + u8 longterm_wrapped_key[BLK_CRYPTO_MAX_HW_WRAPPED_KEY_SIZE]) Please run "./scripts/checkpatch.pl --strict *" on your patches, and fix all relevant warnings and errors. Please consider revisiting the naming in this patch as well. Regards, Bjorn