1 /* 2 * Copyright (c) 2010-2014, The Linux Foundation. All rights reserved. 3 * 4 * This program is free software; you can redistribute it and/or modify 5 * it under the terms of the GNU General Public License version 2 and 6 * only version 2 as published by the Free Software Foundation. 7 * 8 * This program is distributed in the hope that it will be useful, 9 * but WITHOUT ANY WARRANTY; without even the implied warranty of 10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 * GNU General Public License for more details. 12 */ 13 14 #ifndef _CIPHER_H_ 15 #define _CIPHER_H_ 16 17 #include "common.h" 18 #include "core.h" 19 20 #define QCE_MAX_KEY_SIZE 64 21 22 struct qce_cipher_ctx { 23 u8 enc_key[QCE_MAX_KEY_SIZE]; 24 unsigned int enc_keylen; 25 struct crypto_skcipher *fallback; 26 }; 27 28 /** 29 * struct qce_cipher_reqctx - holds private cipher objects per request 30 * @flags: operation flags 31 * @iv: pointer to the IV 32 * @ivsize: IV size 33 * @src_nents: source entries 34 * @dst_nents: destination entries 35 * @result_sg: scatterlist used for result buffer 36 * @dst_tbl: destination sg table 37 * @dst_sg: destination sg pointer table beginning 38 * @src_tbl: source sg table 39 * @src_sg: source sg pointer table beginning; 40 * @cryptlen: crypto length 41 */ 42 struct qce_cipher_reqctx { 43 unsigned long flags; 44 u8 *iv; 45 unsigned int ivsize; 46 int src_nents; 47 int dst_nents; 48 struct scatterlist result_sg; 49 struct sg_table dst_tbl; 50 struct scatterlist *dst_sg; 51 struct sg_table src_tbl; 52 struct scatterlist *src_sg; 53 unsigned int cryptlen; 54 }; 55 56 static inline struct qce_alg_template *to_cipher_tmpl(struct crypto_tfm *tfm) 57 { 58 struct crypto_alg *alg = tfm->__crt_alg; 59 return container_of(alg, struct qce_alg_template, alg.crypto); 60 } 61 62 extern const struct qce_algo_ops ablkcipher_ops; 63 64 #endif /* _CIPHER_H_ */ 65