diff options
author | Longpeng(Mike) <longpeng2@huawei.com> | 2017-07-14 14:04:04 -0400 |
---|---|---|
committer | Daniel P. Berrange <berrange@redhat.com> | 2017-07-19 10:11:05 +0100 |
commit | 14a5a2aef47e27b6afd1f8855eb41c75b69440dc (patch) | |
tree | c8a273d9e48e5b6b4a50125238b96392f1e5481a /crypto/hmac-nettle.c | |
parent | d73c04e3ca3d4a1ac73da7f7952f769824417b47 (diff) |
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) <longpeng2@huawei.com>
Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
Diffstat (limited to 'crypto/hmac-nettle.c')
-rw-r--r-- | crypto/hmac-nettle.c | 52 |
1 files changed, 17 insertions, 35 deletions
diff --git a/crypto/hmac-nettle.c b/crypto/hmac-nettle.c index 000dfd9d37..1d5a915f03 100644 --- a/crypto/hmac-nettle.c +++ b/crypto/hmac-nettle.c @@ -15,6 +15,7 @@ #include "qemu/osdep.h" #include "qapi/error.h" #include "crypto/hmac.h" +#include "hmacpriv.h" #include <nettle/hmac.h> typedef void (*qcrypto_nettle_hmac_setkey)(void *ctx, @@ -97,10 +98,9 @@ bool qcrypto_hmac_supports(QCryptoHashAlgorithm alg) return false; } -static QCryptoHmacNettle * -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) { QCryptoHmacNettle *ctx; @@ -117,26 +117,22 @@ qcrypto_hmac_ctx_new(QCryptoHashAlgorithm alg, return ctx; } -void qcrypto_hmac_free(QCryptoHmac *hmac) +static void +qcrypto_nettle_hmac_ctx_free(QCryptoHmac *hmac) { QCryptoHmacNettle *ctx; - if (!hmac) { - return; - } - ctx = hmac->opaque; - 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_nettle_hmac_bytesv(QCryptoHmac *hmac, + const struct iovec *iov, + size_t niov, + uint8_t **result, + size_t *resultlen, + Error **errp) { QCryptoHmacNettle *ctx; int i; @@ -169,21 +165,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; - QCryptoHmacNettle *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_nettle_hmac_bytesv, + .hmac_free = qcrypto_nettle_hmac_ctx_free, +}; |