175c80078SLongpeng(Mike) /* 275c80078SLongpeng(Mike) * QEMU Crypto cipher driver supports 375c80078SLongpeng(Mike) * 475c80078SLongpeng(Mike) * Copyright (c) 2017 HUAWEI TECHNOLOGIES CO., LTD. 575c80078SLongpeng(Mike) * 675c80078SLongpeng(Mike) * Authors: 775c80078SLongpeng(Mike) * Longpeng(Mike) <longpeng2@huawei.com> 875c80078SLongpeng(Mike) * 975c80078SLongpeng(Mike) * This work is licensed under the terms of the GNU GPL, version 2 or 1075c80078SLongpeng(Mike) * (at your option) any later version. See the COPYING file in the 1175c80078SLongpeng(Mike) * top-level directory. 1275c80078SLongpeng(Mike) * 1375c80078SLongpeng(Mike) */ 1475c80078SLongpeng(Mike) 1575c80078SLongpeng(Mike) #ifndef QCRYPTO_CIPHERPRIV_H 1675c80078SLongpeng(Mike) #define QCRYPTO_CIPHERPRIV_H 1775c80078SLongpeng(Mike) 18*25c60df3SLongpeng(Mike) #include "qapi-types.h" 19*25c60df3SLongpeng(Mike) 2075c80078SLongpeng(Mike) typedef struct QCryptoCipherDriver QCryptoCipherDriver; 2175c80078SLongpeng(Mike) 2275c80078SLongpeng(Mike) struct QCryptoCipherDriver { 2375c80078SLongpeng(Mike) int (*cipher_encrypt)(QCryptoCipher *cipher, 2475c80078SLongpeng(Mike) const void *in, 2575c80078SLongpeng(Mike) void *out, 2675c80078SLongpeng(Mike) size_t len, 2775c80078SLongpeng(Mike) Error **errp); 2875c80078SLongpeng(Mike) 2975c80078SLongpeng(Mike) int (*cipher_decrypt)(QCryptoCipher *cipher, 3075c80078SLongpeng(Mike) const void *in, 3175c80078SLongpeng(Mike) void *out, 3275c80078SLongpeng(Mike) size_t len, 3375c80078SLongpeng(Mike) Error **errp); 3475c80078SLongpeng(Mike) 3575c80078SLongpeng(Mike) int (*cipher_setiv)(QCryptoCipher *cipher, 3675c80078SLongpeng(Mike) const uint8_t *iv, size_t niv, 3775c80078SLongpeng(Mike) Error **errp); 3875c80078SLongpeng(Mike) 3975c80078SLongpeng(Mike) void (*cipher_free)(QCryptoCipher *cipher); 4075c80078SLongpeng(Mike) }; 4175c80078SLongpeng(Mike) 42*25c60df3SLongpeng(Mike) #ifdef CONFIG_AF_ALG 43*25c60df3SLongpeng(Mike) 44*25c60df3SLongpeng(Mike) #include "afalgpriv.h" 45*25c60df3SLongpeng(Mike) 46*25c60df3SLongpeng(Mike) extern QCryptoAFAlg * 47*25c60df3SLongpeng(Mike) qcrypto_afalg_cipher_ctx_new(QCryptoCipherAlgorithm alg, 48*25c60df3SLongpeng(Mike) QCryptoCipherMode mode, 49*25c60df3SLongpeng(Mike) const uint8_t *key, 50*25c60df3SLongpeng(Mike) size_t nkey, Error **errp); 51*25c60df3SLongpeng(Mike) 52*25c60df3SLongpeng(Mike) extern struct QCryptoCipherDriver qcrypto_cipher_afalg_driver; 53*25c60df3SLongpeng(Mike) 54*25c60df3SLongpeng(Mike) #endif 55*25c60df3SLongpeng(Mike) 5675c80078SLongpeng(Mike) #endif 57