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) 189af23989SMarkus Armbruster #include "qapi/qapi-types-crypto.h" 1925c60df3SLongpeng(Mike) 2075c80078SLongpeng(Mike) struct QCryptoCipherDriver { 2175c80078SLongpeng(Mike) int (*cipher_encrypt)(QCryptoCipher *cipher, 2275c80078SLongpeng(Mike) const void *in, 2375c80078SLongpeng(Mike) void *out, 2475c80078SLongpeng(Mike) size_t len, 2575c80078SLongpeng(Mike) Error **errp); 2675c80078SLongpeng(Mike) 2775c80078SLongpeng(Mike) int (*cipher_decrypt)(QCryptoCipher *cipher, 2875c80078SLongpeng(Mike) const void *in, 2975c80078SLongpeng(Mike) void *out, 3075c80078SLongpeng(Mike) size_t len, 3175c80078SLongpeng(Mike) Error **errp); 3275c80078SLongpeng(Mike) 3375c80078SLongpeng(Mike) int (*cipher_setiv)(QCryptoCipher *cipher, 3475c80078SLongpeng(Mike) const uint8_t *iv, size_t niv, 3575c80078SLongpeng(Mike) Error **errp); 3675c80078SLongpeng(Mike) 3775c80078SLongpeng(Mike) void (*cipher_free)(QCryptoCipher *cipher); 3875c80078SLongpeng(Mike) }; 3975c80078SLongpeng(Mike) 4025c60df3SLongpeng(Mike) #ifdef CONFIG_AF_ALG 4125c60df3SLongpeng(Mike) 4225c60df3SLongpeng(Mike) #include "afalgpriv.h" 4325c60df3SLongpeng(Mike) 443eedf5ccSRichard Henderson extern QCryptoCipher * 45*a092c513SMarkus Armbruster qcrypto_afalg_cipher_ctx_new(QCryptoCipherAlgo alg, 4625c60df3SLongpeng(Mike) QCryptoCipherMode mode, 4725c60df3SLongpeng(Mike) const uint8_t *key, 4825c60df3SLongpeng(Mike) size_t nkey, Error **errp); 4925c60df3SLongpeng(Mike) 5025c60df3SLongpeng(Mike) #endif 5125c60df3SLongpeng(Mike) 5275c80078SLongpeng(Mike) #endif 53