1 | /* SPDX-License-Identifier: GPL-2.0-only */ |
---|---|
2 | /* |
3 | * Copyright (c) 2021, Linaro Limited. All rights reserved. |
4 | */ |
5 | |
6 | #ifndef _AEAD_H_ |
7 | #define _AEAD_H_ |
8 | |
9 | #include "common.h" |
10 | #include "core.h" |
11 | |
12 | #define QCE_MAX_KEY_SIZE 64 |
13 | #define QCE_CCM4309_SALT_SIZE 3 |
14 | |
15 | struct qce_aead_ctx { |
16 | u8 enc_key[QCE_MAX_KEY_SIZE]; |
17 | u8 auth_key[QCE_MAX_KEY_SIZE]; |
18 | u8 ccm4309_salt[QCE_CCM4309_SALT_SIZE]; |
19 | unsigned int enc_keylen; |
20 | unsigned int auth_keylen; |
21 | unsigned int authsize; |
22 | bool need_fallback; |
23 | struct crypto_aead *fallback; |
24 | }; |
25 | |
26 | struct qce_aead_reqctx { |
27 | unsigned long flags; |
28 | u8 *iv; |
29 | unsigned int ivsize; |
30 | int src_nents; |
31 | int dst_nents; |
32 | struct scatterlist result_sg; |
33 | struct scatterlist adata_sg; |
34 | struct sg_table dst_tbl; |
35 | struct sg_table src_tbl; |
36 | struct scatterlist *dst_sg; |
37 | struct scatterlist *src_sg; |
38 | unsigned int cryptlen; |
39 | unsigned int assoclen; |
40 | unsigned char *adata; |
41 | u8 ccm_nonce[QCE_MAX_NONCE]; |
42 | u8 ccmresult_buf[QCE_BAM_BURST_SIZE]; |
43 | u8 ccm_rfc4309_iv[QCE_MAX_IV_SIZE]; |
44 | struct aead_request fallback_req; |
45 | }; |
46 | |
47 | static inline struct qce_alg_template *to_aead_tmpl(struct crypto_aead *tfm) |
48 | { |
49 | struct aead_alg *alg = crypto_aead_alg(tfm); |
50 | |
51 | return container_of(alg, struct qce_alg_template, alg.aead); |
52 | } |
53 | |
54 | extern const struct qce_algo_ops aead_ops; |
55 | |
56 | #endif /* _AEAD_H_ */ |
57 |