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