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_ablkcipher *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 * @src_chained: is source chained 36 * @dst_chained: is destination chained 37 * @result_sg: scatterlist used for result buffer 38 * @dst_tbl: destination sg table 39 * @dst_sg: destination sg pointer table beginning 40 * @src_tbl: source sg table 41 * @src_sg: source sg pointer table beginning; 42 * @cryptlen: crypto length 43 */ 44 struct qce_cipher_reqctx { 45 unsigned long flags; 46 u8 *iv; 47 unsigned int ivsize; 48 int src_nents; 49 int dst_nents; 50 bool src_chained; 51 bool dst_chained; 52 struct scatterlist result_sg; 53 struct sg_table dst_tbl; 54 struct scatterlist *dst_sg; 55 struct sg_table src_tbl; 56 struct scatterlist *src_sg; 57 unsigned int cryptlen; 58 }; 59 60 static inline struct qce_alg_template *to_cipher_tmpl(struct crypto_tfm *tfm) 61 { 62 struct crypto_alg *alg = tfm->__crt_alg; 63 return container_of(alg, struct qce_alg_template, alg.crypto); 64 } 65 66 extern const struct qce_algo_ops ablkcipher_ops; 67 68 #endif /* _CIPHER_H_ */ 69