From 14a5a2aef47e27b6afd1f8855eb41c75b69440dc Mon Sep 17 00:00:00 2001 From: Longpeng(Mike) Date: Fri, 14 Jul 2017 14:04:04 -0400 Subject: crypto: hmac: add hmac driver framework 1) makes the public APIs in hmac-nettle/gcrypt/glib static, and rename them with "nettle/gcrypt/glib" prefix. 2) introduces hmac framework, including QCryptoHmacDriver and new public APIs. Signed-off-by: Longpeng(Mike) Signed-off-by: Daniel P. Berrange --- crypto/hmac-gcrypt.c | 51 +++++++++++++++++---------------------------------- 1 file changed, 17 insertions(+), 34 deletions(-) (limited to 'crypto/hmac-gcrypt.c') diff --git a/crypto/hmac-gcrypt.c b/crypto/hmac-gcrypt.c index 372ad7fc20..76ca61ba24 100644 --- a/crypto/hmac-gcrypt.c +++ b/crypto/hmac-gcrypt.c @@ -15,6 +15,7 @@ #include "qemu/osdep.h" #include "qapi/error.h" #include "crypto/hmac.h" +#include "hmacpriv.h" #include static int qcrypto_hmac_alg_map[QCRYPTO_HASH_ALG__MAX] = { @@ -42,10 +43,9 @@ bool qcrypto_hmac_supports(QCryptoHashAlgorithm alg) return false; } -static QCryptoHmacGcrypt * -qcrypto_hmac_ctx_new(QCryptoHashAlgorithm alg, - const uint8_t *key, size_t nkey, - Error **errp) +void *qcrypto_hmac_ctx_new(QCryptoHashAlgorithm alg, + const uint8_t *key, size_t nkey, + Error **errp) { QCryptoHmacGcrypt *ctx; gcry_error_t err; @@ -81,27 +81,24 @@ error: return NULL; } -void qcrypto_hmac_free(QCryptoHmac *hmac) +static void +qcrypto_gcrypt_hmac_ctx_free(QCryptoHmac *hmac) { QCryptoHmacGcrypt *ctx; - if (!hmac) { - return; - } - ctx = hmac->opaque; gcry_mac_close(ctx->handle); g_free(ctx); - g_free(hmac); } -int qcrypto_hmac_bytesv(QCryptoHmac *hmac, - const struct iovec *iov, - size_t niov, - uint8_t **result, - size_t *resultlen, - Error **errp) +static int +qcrypto_gcrypt_hmac_bytesv(QCryptoHmac *hmac, + const struct iovec *iov, + size_t niov, + uint8_t **result, + size_t *resultlen, + Error **errp) { QCryptoHmacGcrypt *ctx; gcry_error_t err; @@ -147,21 +144,7 @@ int qcrypto_hmac_bytesv(QCryptoHmac *hmac, return 0; } -QCryptoHmac *qcrypto_hmac_new(QCryptoHashAlgorithm alg, - const uint8_t *key, size_t nkey, - Error **errp) -{ - QCryptoHmac *hmac; - QCryptoHmacGcrypt *ctx; - - ctx = qcrypto_hmac_ctx_new(alg, key, nkey, errp); - if (!ctx) { - return NULL; - } - - hmac = g_new0(QCryptoHmac, 1); - hmac->alg = alg; - hmac->opaque = ctx; - - return hmac; -} +QCryptoHmacDriver qcrypto_hmac_lib_driver = { + .hmac_bytesv = qcrypto_gcrypt_hmac_bytesv, + .hmac_free = qcrypto_gcrypt_hmac_ctx_free, +}; -- cgit v1.2.3-55-g7522