1 /* 2 * QEMU Crypto cipher driver supports 3 * 4 * Copyright (c) 2017 HUAWEI TECHNOLOGIES CO., LTD. 5 * 6 * Authors: 7 * Longpeng(Mike) <longpeng2@huawei.com> 8 * 9 * This work is licensed under the terms of the GNU GPL, version 2 or 10 * (at your option) any later version. See the COPYING file in the 11 * top-level directory. 12 * 13 */ 14 15 #ifndef QCRYPTO_CIPHERPRIV_H 16 #define QCRYPTO_CIPHERPRIV_H 17 18 #include "qapi/qapi-types-crypto.h" 19 20 typedef struct QCryptoCipherDriver QCryptoCipherDriver; 21 22 struct QCryptoCipherDriver { 23 int (*cipher_encrypt)(QCryptoCipher *cipher, 24 const void *in, 25 void *out, 26 size_t len, 27 Error **errp); 28 29 int (*cipher_decrypt)(QCryptoCipher *cipher, 30 const void *in, 31 void *out, 32 size_t len, 33 Error **errp); 34 35 int (*cipher_setiv)(QCryptoCipher *cipher, 36 const uint8_t *iv, size_t niv, 37 Error **errp); 38 39 void (*cipher_free)(QCryptoCipher *cipher); 40 }; 41 42 #ifdef CONFIG_AF_ALG 43 44 #include "afalgpriv.h" 45 46 extern QCryptoAFAlg * 47 qcrypto_afalg_cipher_ctx_new(QCryptoCipherAlgorithm alg, 48 QCryptoCipherMode mode, 49 const uint8_t *key, 50 size_t nkey, Error **errp); 51 52 extern struct QCryptoCipherDriver qcrypto_cipher_afalg_driver; 53 54 #endif 55 56 #endif 57