xref: /linux/drivers/crypto/inside-secure/eip93/eip93-cipher.h (revision bbfd5594756011167b8f8de9a00e0c946afda1e6)
1*9739f5f9SChristian Marangi /* SPDX-License-Identifier: GPL-2.0
2*9739f5f9SChristian Marangi  *
3*9739f5f9SChristian Marangi  * Copyright (C) 2019 - 2021
4*9739f5f9SChristian Marangi  *
5*9739f5f9SChristian Marangi  * Richard van Schagen <vschagen@icloud.com>
6*9739f5f9SChristian Marangi  * Christian Marangi <ansuelsmth@gmail.com
7*9739f5f9SChristian Marangi  */
8*9739f5f9SChristian Marangi #ifndef _EIP93_CIPHER_H_
9*9739f5f9SChristian Marangi #define _EIP93_CIPHER_H_
10*9739f5f9SChristian Marangi 
11*9739f5f9SChristian Marangi #include "eip93-main.h"
12*9739f5f9SChristian Marangi 
13*9739f5f9SChristian Marangi struct eip93_crypto_ctx {
14*9739f5f9SChristian Marangi 	struct eip93_device		*eip93;
15*9739f5f9SChristian Marangi 	u32				flags;
16*9739f5f9SChristian Marangi 	struct sa_record		*sa_record;
17*9739f5f9SChristian Marangi 	u32				sa_nonce;
18*9739f5f9SChristian Marangi 	int				blksize;
19*9739f5f9SChristian Marangi 	dma_addr_t			sa_record_base;
20*9739f5f9SChristian Marangi 	/* AEAD specific */
21*9739f5f9SChristian Marangi 	unsigned int			authsize;
22*9739f5f9SChristian Marangi 	unsigned int			assoclen;
23*9739f5f9SChristian Marangi 	bool				set_assoc;
24*9739f5f9SChristian Marangi 	enum eip93_alg_type		type;
25*9739f5f9SChristian Marangi };
26*9739f5f9SChristian Marangi 
27*9739f5f9SChristian Marangi struct eip93_cipher_reqctx {
28*9739f5f9SChristian Marangi 	u16				desc_flags;
29*9739f5f9SChristian Marangi 	u16				flags;
30*9739f5f9SChristian Marangi 	unsigned int			blksize;
31*9739f5f9SChristian Marangi 	unsigned int			ivsize;
32*9739f5f9SChristian Marangi 	unsigned int			textsize;
33*9739f5f9SChristian Marangi 	unsigned int			assoclen;
34*9739f5f9SChristian Marangi 	unsigned int			authsize;
35*9739f5f9SChristian Marangi 	dma_addr_t			sa_record_base;
36*9739f5f9SChristian Marangi 	struct sa_state			*sa_state;
37*9739f5f9SChristian Marangi 	dma_addr_t			sa_state_base;
38*9739f5f9SChristian Marangi 	struct eip93_descriptor		*cdesc;
39*9739f5f9SChristian Marangi 	struct scatterlist		*sg_src;
40*9739f5f9SChristian Marangi 	struct scatterlist		*sg_dst;
41*9739f5f9SChristian Marangi 	int				src_nents;
42*9739f5f9SChristian Marangi 	int				dst_nents;
43*9739f5f9SChristian Marangi 	struct sa_state			*sa_state_ctr;
44*9739f5f9SChristian Marangi 	dma_addr_t			sa_state_ctr_base;
45*9739f5f9SChristian Marangi };
46*9739f5f9SChristian Marangi 
47*9739f5f9SChristian Marangi int check_valid_request(struct eip93_cipher_reqctx *rctx);
48*9739f5f9SChristian Marangi 
49*9739f5f9SChristian Marangi void eip93_unmap_dma(struct eip93_device *eip93, struct eip93_cipher_reqctx *rctx,
50*9739f5f9SChristian Marangi 		     struct scatterlist *reqsrc, struct scatterlist *reqdst);
51*9739f5f9SChristian Marangi 
52*9739f5f9SChristian Marangi void eip93_skcipher_handle_result(struct crypto_async_request *async, int err);
53*9739f5f9SChristian Marangi 
54*9739f5f9SChristian Marangi int eip93_send_req(struct crypto_async_request *async,
55*9739f5f9SChristian Marangi 		   const u8 *reqiv, struct eip93_cipher_reqctx *rctx);
56*9739f5f9SChristian Marangi 
57*9739f5f9SChristian Marangi void eip93_handle_result(struct eip93_device *eip93, struct eip93_cipher_reqctx *rctx,
58*9739f5f9SChristian Marangi 			 u8 *reqiv);
59*9739f5f9SChristian Marangi 
60*9739f5f9SChristian Marangi #endif /* _EIP93_CIPHER_H_ */
61