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