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