nettle/nettle-3.7-chacha-counter-ppc64.patch
DistroBaker 5f8fa05fe1 Merged update from upstream sources
This is an automated DistroBaker update from upstream sources.
If you do not know what this is about or would like to opt out,
contact the OSCI team.

Source: https://src.fedoraproject.org/rpms/nettle.git#4ef5318bc4753b255cdb423b99f2b22fb554594b
2021-02-11 17:08:29 +00:00

52 lines
1.6 KiB
Diff

From 64837b2e433e2b99b893683949bad3a99acab38f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Niels=20M=C3=B6ller?= <nisse@lysator.liu.se>
Date: Wed, 10 Feb 2021 11:22:23 +0100
Subject: [PATCH] Fix chacha counter update for _4core variants.
---
ChangeLog | 4 ++++
chacha-crypt.c | 10 +++++++---
2 files changed, 11 insertions(+), 3 deletions(-)
diff --git a/chacha-crypt.c b/chacha-crypt.c
index 081ebcf4..1fdfc813 100644
--- a/chacha-crypt.c
+++ b/chacha-crypt.c
@@ -80,13 +80,16 @@ _nettle_chacha_crypt_4core(struct chacha_ctx *ctx,
while (length > 2*CHACHA_BLOCK_SIZE)
{
_nettle_chacha_4core (x, ctx->state, CHACHA_ROUNDS);
- ctx->state[12] += 4;
- ctx->state[13] += (ctx->state[12] < 4);
if (length <= 4*CHACHA_BLOCK_SIZE)
{
+ uint32_t incr = 3 + (length > 3*CHACHA_BLOCK_SIZE);
+ ctx->state[12] += incr;
+ ctx->state[13] += (ctx->state[12] < incr);
memxor3 (dst, src, x, length);
return;
}
+ ctx->state[12] += 4;
+ ctx->state[13] += (ctx->state[12] < 4);
memxor3 (dst, src, x, 4*CHACHA_BLOCK_SIZE);
length -= 4*CHACHA_BLOCK_SIZE;
@@ -200,12 +203,13 @@ _nettle_chacha_crypt32_4core(struct chacha_ctx *ctx,
while (length > 2*CHACHA_BLOCK_SIZE)
{
_nettle_chacha_4core32 (x, ctx->state, CHACHA_ROUNDS);
- ctx->state[12] += 4;
if (length <= 4*CHACHA_BLOCK_SIZE)
{
+ ctx->state[12] += 3 + (length > 3*CHACHA_BLOCK_SIZE);
memxor3 (dst, src, x, length);
return;
}
+ ctx->state[12] += 4;
memxor3 (dst, src, x, 4*CHACHA_BLOCK_SIZE);
length -= 4*CHACHA_BLOCK_SIZE;
--
2.29.2