From 1d4c756ce97c24cdfdea8369c1a3726ec3e18b66 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20M=C3=B6ller?= <nisse@lysator.liu.se> Date: Tue, 16 Apr 2013 07:59:40 +0200 Subject: [PATCH] Fixed umac nonce increment. --- ChangeLog | 6 ++++++ umac128.c | 7 +------ umac32.c | 6 ++---- umac64.c | 6 ++---- umac96.c | 7 +------ 5 files changed, 12 insertions(+), 20 deletions(-) diff --git a/ChangeLog b/ChangeLog index d069e75a..59f37bf3 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,11 @@ 2013-04-16 Niels Möller <nisse@lysator.liu.se> + * umac32.c (umac32_digest): Fix nonce increment, use INCREMENT + macro. + * umac64.c (umac64_digest): Likewise. + * umac96.c (umac96_digest): Likewise. + * umac128.c (umac128_digest): Likewise. + * macros.h (INCREMENT): Allow size == 1. 2013-04-15 Niels Möller <nisse@lysator.liu.se> diff --git a/umac128.c b/umac128.c index 74936021..6d33b4f9 100644 --- a/umac128.c +++ b/umac128.c @@ -108,12 +108,7 @@ umac128_digest (struct umac128_ctx *ctx, aes_encrypt (&ctx->pdf_key, AES_BLOCK_SIZE, (uint8_t *) tag, ctx->nonce); - /* Increment nonce */ - i = ctx->nonce_length - 1; - if (++ctx->nonce[i] == 0) - while (i > 0) - if (++ctx->nonce[--i] == 0) - break; + INCREMENT (ctx->nonce_length, ctx->nonce); _umac_l2_final (ctx->l2_key, ctx->l2_state, 4, ctx->count, ctx->l1_out); for (i = 0; i < 4; i++) diff --git a/umac32.c b/umac32.c index c3714fa3..98f987e9 100644 --- a/umac32.c +++ b/umac32.c @@ -115,10 +115,8 @@ umac32_digest (struct umac32_ctx *ctx, ctx->nonce_low = 0; ctx->nonce[i] += 4; - if (ctx->nonce[i] == 0) - while (i > 0) - if (++ctx->nonce[--i] == 0) - break; + if (ctx->nonce[i] == 0 && i > 0) + INCREMENT (i, ctx->nonce); } _umac_l2_final (ctx->l2_key, ctx->l2_state, 1, ctx->count, ctx->l1_out); diff --git a/umac64.c b/umac64.c index 6f8132de..b2a69709 100644 --- a/umac64.c +++ b/umac64.c @@ -118,10 +118,8 @@ umac64_digest (struct umac64_ctx *ctx, ctx->nonce_low = 0; ctx->nonce[i] += 2; - if (ctx->nonce[i] == 0) - while (i > 0) - if (++ctx->nonce[--i] == 0) - break; + if (ctx->nonce[i] == 0 && i > 0) + INCREMENT (i, ctx->nonce); } _umac_l2_final (ctx->l2_key, ctx->l2_state, 2, ctx->count, ctx->l1_out); diff --git a/umac96.c b/umac96.c index b4b43ed7..2831ad14 100644 --- a/umac96.c +++ b/umac96.c @@ -106,12 +106,7 @@ umac96_digest (struct umac96_ctx *ctx, aes_encrypt (&ctx->pdf_key, AES_BLOCK_SIZE, (uint8_t *) tag, ctx->nonce); - /* Increment nonce */ - i = ctx->nonce_length - 1; - if (++ctx->nonce[i] == 0) - while (i > 0) - if (++ctx->nonce[--i] == 0) - break; + INCREMENT (ctx->nonce_length, ctx->nonce); _umac_l2_final (ctx->l2_key, ctx->l2_state, 3, ctx->count, ctx->l1_out); for (i = 0; i < 3; i++) -- GitLab