/* 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_ */