Commit f8878490 authored by Daniel P. Berrangé's avatar Daniel P. Berrangé
Browse files

crypto: fix function signatures for nettle 2.7 vs 3



Nettle version 2.7.x used 'unsigned int' instead of 'size_t' for length
parameters in functions. Use a local typedef so that we can build with
the correct signature depending on nettle version, as we already do in
the cipher code.

Reported-by: default avatarAmol Surati <suratiamol@gmail.com>
Reviewed-by: default avatarAlex Bennée <alex.bennee@linaro.org>
Tested-by: default avatarAlex Bennée <alex.bennee@linaro.org>
Reviewed-by: default avatarPhilippe Mathieu-Daudé <philmd@redhat.com>
Signed-off-by: default avatarDaniel P. Berrangé <berrange@redhat.com>
parent e8e67ca4
Loading
Loading
Loading
Loading
+9 −3
Original line number Diff line number Diff line
@@ -26,12 +26,18 @@
#include <nettle/sha.h>
#include <nettle/ripemd160.h>

#if CONFIG_NETTLE_VERSION_MAJOR < 3
typedef unsigned int     hash_length_t;
#else
typedef size_t       hash_length_t;
#endif

typedef void (*qcrypto_nettle_init)(void *ctx);
typedef void (*qcrypto_nettle_write)(void *ctx,
                                     unsigned int len,
                                     hash_length_t len,
                                     const uint8_t *buf);
typedef void (*qcrypto_nettle_result)(void *ctx,
                                      unsigned int len,
                                      hash_length_t len,
                                      uint8_t *buf);

union qcrypto_hash_ctx {
@@ -112,7 +118,7 @@ qcrypto_nettle_hash_bytesv(QCryptoHashAlgorithm alg,
                           size_t *resultlen,
                           Error **errp)
{
    int i;
    size_t i;
    union qcrypto_hash_ctx ctx;

    if (!qcrypto_hash_supports(alg)) {
+13 −4
Original line number Diff line number Diff line
@@ -18,14 +18,23 @@
#include "hmacpriv.h"
#include <nettle/hmac.h>

#if CONFIG_NETTLE_VERSION_MAJOR < 3
typedef unsigned int hmac_length_t;
#else
typedef size_t hmac_length_t;
#endif

typedef void (*qcrypto_nettle_hmac_setkey)(void *ctx,
              size_t key_length, const uint8_t *key);
                                           hmac_length_t key_length,
                                           const uint8_t *key);

typedef void (*qcrypto_nettle_hmac_update)(void *ctx,
              size_t length, const uint8_t *data);
                                           hmac_length_t length,
                                           const uint8_t *data);

typedef void (*qcrypto_nettle_hmac_digest)(void *ctx,
              size_t length, uint8_t *digest);
                                           hmac_length_t length,
                                           uint8_t *digest);

typedef struct QCryptoHmacNettle QCryptoHmacNettle;
struct QCryptoHmacNettle {
@@ -135,7 +144,7 @@ qcrypto_nettle_hmac_bytesv(QCryptoHmac *hmac,
                           Error **errp)
{
    QCryptoHmacNettle *ctx;
    int i;
    size_t i;

    ctx = (QCryptoHmacNettle *)hmac->opaque;