xref: /openbmc/qemu/crypto/hmacpriv.h (revision b8eada54b2ad8a7d98d93d5ab4d3e888c5880097)
114a5a2aeSLongpeng(Mike) /*
214a5a2aeSLongpeng(Mike)  * QEMU Crypto hmac driver supports
314a5a2aeSLongpeng(Mike)  *
414a5a2aeSLongpeng(Mike)  * Copyright (c) 2017 HUAWEI TECHNOLOGIES CO., LTD.
514a5a2aeSLongpeng(Mike)  *
614a5a2aeSLongpeng(Mike)  * Authors:
714a5a2aeSLongpeng(Mike)  *    Longpeng(Mike) <longpeng2@huawei.com>
814a5a2aeSLongpeng(Mike)  *
914a5a2aeSLongpeng(Mike)  * This work is licensed under the terms of the GNU GPL, version 2 or
1014a5a2aeSLongpeng(Mike)  * (at your option) any later version.  See the COPYING file in the
1114a5a2aeSLongpeng(Mike)  * top-level directory.
1214a5a2aeSLongpeng(Mike)  *
1314a5a2aeSLongpeng(Mike)  */
1414a5a2aeSLongpeng(Mike) 
1514a5a2aeSLongpeng(Mike) #ifndef QCRYPTO_HMACPRIV_H
1614a5a2aeSLongpeng(Mike) #define QCRYPTO_HMACPRIV_H
1714a5a2aeSLongpeng(Mike) 
1814a5a2aeSLongpeng(Mike) typedef struct QCryptoHmacDriver QCryptoHmacDriver;
1914a5a2aeSLongpeng(Mike) 
2014a5a2aeSLongpeng(Mike) struct QCryptoHmacDriver {
2114a5a2aeSLongpeng(Mike)     int (*hmac_bytesv)(QCryptoHmac *hmac,
2214a5a2aeSLongpeng(Mike)                        const struct iovec *iov,
2314a5a2aeSLongpeng(Mike)                        size_t niov,
2414a5a2aeSLongpeng(Mike)                        uint8_t **result,
2514a5a2aeSLongpeng(Mike)                        size_t *resultlen,
2614a5a2aeSLongpeng(Mike)                        Error **errp);
2714a5a2aeSLongpeng(Mike) 
2814a5a2aeSLongpeng(Mike)     void (*hmac_free)(QCryptoHmac *hmac);
2914a5a2aeSLongpeng(Mike) };
3014a5a2aeSLongpeng(Mike) 
31ef834aa2SMarkus Armbruster void *qcrypto_hmac_ctx_new(QCryptoHashAlgo alg,
3214a5a2aeSLongpeng(Mike)                            const uint8_t *key, size_t nkey,
3314a5a2aeSLongpeng(Mike)                            Error **errp);
3414a5a2aeSLongpeng(Mike) extern QCryptoHmacDriver qcrypto_hmac_lib_driver;
3514a5a2aeSLongpeng(Mike) 
3642e7e15fSLongpeng(Mike) #ifdef CONFIG_AF_ALG
3742e7e15fSLongpeng(Mike) 
3842e7e15fSLongpeng(Mike) #include "afalgpriv.h"
3942e7e15fSLongpeng(Mike) 
40*8f525028SMarkus Armbruster QCryptoAFAlgo *qcrypto_afalg_hmac_ctx_new(QCryptoHashAlgo alg,
4142e7e15fSLongpeng(Mike)                                          const uint8_t *key, size_t nkey,
4242e7e15fSLongpeng(Mike)                                          Error **errp);
4342e7e15fSLongpeng(Mike) extern QCryptoHmacDriver qcrypto_hmac_afalg_driver;
4442e7e15fSLongpeng(Mike) 
4542e7e15fSLongpeng(Mike) #endif
4642e7e15fSLongpeng(Mike) 
4714a5a2aeSLongpeng(Mike) #endif
48