xref: /openbmc/qemu/crypto/cipherpriv.h (revision b8eada54b2ad8a7d98d93d5ab4d3e888c5880097)
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