| /* SPDX-License-Identifier: GPL-2.0-only */ | |
| /* | |
| * Copyright (c) 2021, Linaro Limited. All rights reserved. | |
| */ | |
| #ifndef _AEAD_H_ | |
| #define _AEAD_H_ | |
| #include "common.h" | |
| #include "core.h" | |
| #define QCE_MAX_KEY_SIZE 64 | |
| #define QCE_CCM4309_SALT_SIZE 3 | |
| struct qce_aead_ctx { | |
| u8 enc_key[QCE_MAX_KEY_SIZE]; | |
| u8 auth_key[QCE_MAX_KEY_SIZE]; | |
| u8 ccm4309_salt[QCE_CCM4309_SALT_SIZE]; | |
| unsigned int enc_keylen; | |
| unsigned int auth_keylen; | |
| unsigned int authsize; | |
| bool need_fallback; | |
| struct crypto_aead *fallback; | |
| }; | |
| struct qce_aead_reqctx { | |
| unsigned long flags; | |
| u8 *iv; | |
| unsigned int ivsize; | |
| int src_nents; | |
| int dst_nents; | |
| struct scatterlist result_sg; | |
| struct scatterlist adata_sg; | |
| struct sg_table dst_tbl; | |
| struct sg_table src_tbl; | |
| struct scatterlist *dst_sg; | |
| struct scatterlist *src_sg; | |
| unsigned int cryptlen; | |
| unsigned int assoclen; | |
| unsigned char *adata; | |
| u8 ccm_nonce[QCE_MAX_NONCE]; | |
| u8 ccmresult_buf[QCE_BAM_BURST_SIZE]; | |
| u8 ccm_rfc4309_iv[QCE_MAX_IV_SIZE]; | |
| struct aead_request fallback_req; | |
| }; | |
| static inline struct qce_alg_template *to_aead_tmpl(struct crypto_aead *tfm) | |
| { | |
| struct aead_alg *alg = crypto_aead_alg(tfm); | |
| return container_of(alg, struct qce_alg_template, alg.aead); | |
| } | |
| extern const struct qce_algo_ops aead_ops; | |
| #endif /* _AEAD_H_ */ |