mirror of
https://github.com/torvalds/linux.git
synced 2024-12-13 14:43:03 +00:00
87870cfb4b
Add cmac(aes) keyed hash offloading support. Similar to xcbc implementation, driver must make sure there are still some bytes buffered when ahash_final() is called. This way HW is able to decide whether padding is needed and which key to derive (L -> K1 / K2) for the last block. Signed-off-by: Iuliana Prodan <iuliana.prodan@nxp.com> Signed-off-by: Horia Geantă <horia.geanta@nxp.com> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
30 lines
984 B
C
30 lines
984 B
C
/* SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause) */
|
|
/*
|
|
* Shared descriptors for ahash algorithms
|
|
*
|
|
* Copyright 2017 NXP
|
|
*/
|
|
|
|
#ifndef _CAAMHASH_DESC_H_
|
|
#define _CAAMHASH_DESC_H_
|
|
|
|
/* length of descriptors text */
|
|
#define DESC_AHASH_BASE (3 * CAAM_CMD_SZ)
|
|
#define DESC_AHASH_UPDATE_LEN (6 * CAAM_CMD_SZ)
|
|
#define DESC_AHASH_UPDATE_FIRST_LEN (DESC_AHASH_BASE + 4 * CAAM_CMD_SZ)
|
|
#define DESC_AHASH_FINAL_LEN (DESC_AHASH_BASE + 5 * CAAM_CMD_SZ)
|
|
#define DESC_AHASH_DIGEST_LEN (DESC_AHASH_BASE + 4 * CAAM_CMD_SZ)
|
|
|
|
static inline bool is_xcbc_aes(u32 algtype)
|
|
{
|
|
return (algtype & (OP_ALG_ALGSEL_MASK | OP_ALG_AAI_MASK)) ==
|
|
(OP_ALG_ALGSEL_AES | OP_ALG_AAI_XCBC_MAC);
|
|
}
|
|
|
|
void cnstr_shdsc_ahash(u32 * const desc, struct alginfo *adata, u32 state,
|
|
int digestsize, int ctx_len, bool import_ctx, int era);
|
|
|
|
void cnstr_shdsc_sk_hash(u32 * const desc, struct alginfo *adata, u32 state,
|
|
int digestsize, int ctx_len, dma_addr_t key_dma);
|
|
#endif /* _CAAMHASH_DESC_H_ */
|