Commit d73c04e3 authored by Longpeng(Mike)'s avatar Longpeng(Mike) Committed by Daniel P. Berrangé
Browse files

crypto: hmac: introduce qcrypto_hmac_ctx_new for glib-backend



Extracts qcrypto_hmac_ctx_new() from qcrypto_hmac_new() for
glib-backend impls.

Reviewed-by: default avatarGonglei <arei.gonglei@huawei.com>
Signed-off-by: default avatarLongpeng(Mike) <longpeng2@huawei.com>
Signed-off-by: default avatarDaniel P. Berrange <berrange@redhat.com>
parent 8c2776d8
Loading
Loading
Loading
Loading
+24 −10
Original line number Diff line number Diff line
@@ -49,11 +49,11 @@ bool qcrypto_hmac_supports(QCryptoHashAlgorithm alg)
    return false;
}

QCryptoHmac *qcrypto_hmac_new(QCryptoHashAlgorithm alg,
static QCryptoHmacGlib *
qcrypto_hmac_ctx_new(QCryptoHashAlgorithm alg,
                     const uint8_t *key, size_t nkey,
                     Error **errp)
{
    QCryptoHmac *hmac;
    QCryptoHmacGlib *ctx;

    if (!qcrypto_hmac_supports(alg)) {
@@ -62,9 +62,6 @@ QCryptoHmac *qcrypto_hmac_new(QCryptoHashAlgorithm alg,
        return NULL;
    }

    hmac = g_new0(QCryptoHmac, 1);
    hmac->alg = alg;

    ctx = g_new0(QCryptoHmacGlib, 1);

    ctx->ghmac = g_hmac_new(qcrypto_hmac_alg_map[alg],
@@ -74,12 +71,10 @@ QCryptoHmac *qcrypto_hmac_new(QCryptoHashAlgorithm alg,
        goto error;
    }

    hmac->opaque = ctx;
    return hmac;
    return ctx;

error:
    g_free(ctx);
    g_free(hmac);
    return NULL;
}

@@ -134,6 +129,25 @@ 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;
    QCryptoHmacGlib *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;
}

#else

bool qcrypto_hmac_supports(QCryptoHashAlgorithm alg)