Link: https://lore.kernel.org/r/20260217200002.683975158@linuxfoundation.org Tested-by: Florian Fainelli <florian.fainelli@broadcom.com> Tested-by: Takeshi Ogasawara <takeshi.ogasawara@futuring-girl.com> Tested-by: Peter Schneider <pschneider1968@googlemail.com> Tested-by: Jon Hunter <jonathanh@nvidia.com> Tested-by: Salvatore Bonaccorso <carnil@debian.org> Tested-by: Brett A C Sheffield <bacs@librecast.net> Tested-by: Mark Brown <broonie@kernel.org> Tested-by: Luna Jernberg <droidbittin@gmail.com> Tested-by: Ronald Warsow <rwarsow@gmx.de> Tested-by: Justin M. Forbes <jforbes@fedoraproject.org> Tested-by: Ron Economos <re@w6rz.net> Tested-by: Miguel Ojeda <ojeda@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
49 lines
1.3 KiB
C
49 lines
1.3 KiB
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
/*
|
|
* CAAM/SEC 4.x definitions for handling key-generation jobs
|
|
*
|
|
* Copyright 2008-2011 Freescale Semiconductor, Inc.
|
|
*
|
|
*/
|
|
|
|
/**
|
|
* split_key_len - Compute MDHA split key length for a given algorithm
|
|
* @hash: Hashing algorithm selection, one of OP_ALG_ALGSEL_* - MD5, SHA1,
|
|
* SHA224, SHA384, SHA512.
|
|
*
|
|
* Return: MDHA split key length
|
|
*/
|
|
static inline u32 split_key_len(u32 hash)
|
|
{
|
|
/* Sizes for MDHA pads (*not* keys): MD5, SHA1, 224, 256, 384, 512 */
|
|
static const u8 mdpadlen[] = { 16, 20, 32, 32, 64, 64 };
|
|
u32 idx;
|
|
|
|
idx = (hash & OP_ALG_ALGSEL_SUBMASK) >> OP_ALG_ALGSEL_SHIFT;
|
|
|
|
return (u32)(mdpadlen[idx] * 2);
|
|
}
|
|
|
|
/**
|
|
* split_key_pad_len - Compute MDHA split key pad length for a given algorithm
|
|
* @hash: Hashing algorithm selection, one of OP_ALG_ALGSEL_* - MD5, SHA1,
|
|
* SHA224, SHA384, SHA512.
|
|
*
|
|
* Return: MDHA split key pad length
|
|
*/
|
|
static inline u32 split_key_pad_len(u32 hash)
|
|
{
|
|
return ALIGN(split_key_len(hash), 16);
|
|
}
|
|
|
|
struct split_key_result {
|
|
struct completion completion;
|
|
int err;
|
|
};
|
|
|
|
void split_key_done(struct device *dev, u32 *desc, u32 err, void *context);
|
|
|
|
int gen_split_key(struct device *jrdev, u8 *key_out,
|
|
struct alginfo * const adata, const u8 *key_in, u32 keylen,
|
|
int max_keylen);
|