summaryrefslogtreecommitdiffstats
path: root/drivers/crypto/inside-secure/eip93/eip93-cipher.h
blob: 6e2545ebd8794040cc9588d5e7174f3cdd4396a6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
/* SPDX-License-Identifier: GPL-2.0
 *
 * Copyright (C) 2019 - 2021
 *
 * Richard van Schagen <vschagen@icloud.com>
 * Christian Marangi <ansuelsmth@gmail.com
 */
#ifndef _EIP93_CIPHER_H_
#define _EIP93_CIPHER_H_

#include "eip93-main.h"

struct eip93_crypto_ctx {
	struct eip93_device		*eip93;
	u32				flags;
	struct sa_record		*sa_record;
	u32				sa_nonce;
	int				blksize;
	dma_addr_t			sa_record_base;
	/* AEAD specific */
	unsigned int			authsize;
	unsigned int			assoclen;
	bool				set_assoc;
	enum eip93_alg_type		type;
};

struct eip93_cipher_reqctx {
	u16				desc_flags;
	u16				flags;
	unsigned int			blksize;
	unsigned int			ivsize;
	unsigned int			textsize;
	unsigned int			assoclen;
	unsigned int			authsize;
	dma_addr_t			sa_record_base;
	struct sa_state			*sa_state;
	dma_addr_t			sa_state_base;
	struct eip93_descriptor		*cdesc;
	struct scatterlist		*sg_src;
	struct scatterlist		*sg_dst;
	int				src_nents;
	int				dst_nents;
	struct sa_state			*sa_state_ctr;
	dma_addr_t			sa_state_ctr_base;
};

int check_valid_request(struct eip93_cipher_reqctx *rctx);

void eip93_unmap_dma(struct eip93_device *eip93, struct eip93_cipher_reqctx *rctx,
		     struct scatterlist *reqsrc, struct scatterlist *reqdst);

void eip93_skcipher_handle_result(struct crypto_async_request *async, int err);

int eip93_send_req(struct crypto_async_request *async,
		   const u8 *reqiv, struct eip93_cipher_reqctx *rctx);

void eip93_handle_result(struct eip93_device *eip93, struct eip93_cipher_reqctx *rctx,
			 u8 *reqiv);

#endif /* _EIP93_CIPHER_H_ */