From bf8231d11ddd49abcded8b18b63ddeaea49c7fc8 Mon Sep 17 00:00:00 2001 From: Denys Vlasenko Date: Sun, 6 Jul 2025 01:29:14 +0200 Subject: libbb/yescrypt: remove YESCRYPT_INIT_SHARED flag and code using it It's only used by libxcrypt-4.4.38/lib/alg-yescrypt-opt.c code (optimized code version?) which wasn't ported to busybox function old new delta yescrypt_kdf 449 442 -7 static.smix 755 739 -16 alloc_region 72 - -72 yescrypt_kdf_body 1467 1239 -228 ------------------------------------------------------------------------------ (add/remove: 0/1 grow/shrink: 0/3 up/down: 0/-323) Total: -323 bytes Signed-off-by: Denys Vlasenko --- libbb/yescrypt/alg-yescrypt-kdf.c | 46 ++++++++++----------------------------- libbb/yescrypt/alg-yescrypt.h | 3 +-- 2 files changed, 13 insertions(+), 36 deletions(-) diff --git a/libbb/yescrypt/alg-yescrypt-kdf.c b/libbb/yescrypt/alg-yescrypt-kdf.c index da23c1b59..6c1108514 100644 --- a/libbb/yescrypt/alg-yescrypt-kdf.c +++ b/libbb/yescrypt/alg-yescrypt-kdf.c @@ -731,9 +731,7 @@ static void smix(uint8_t *B, size_t r, uint32_t N, uint32_t p, uint32_t t, } Nloop_rw = 0; - if (flags & YESCRYPT_INIT_SHARED) - Nloop_rw = Nloop_all; - else if (flags & YESCRYPT_RW) + if (flags & YESCRYPT_RW) Nloop_rw = Nloop_all / p; Nchunk &= ~(uint32_t)1; /* round down to even */ @@ -872,19 +870,6 @@ static int yescrypt_kdf_body( V = NULL; V_size = (size_t)128 * r * N; need = V_size; - if (flags & YESCRYPT_INIT_SHARED) { - if (local->aligned_size < need) { - if (local->base || local->aligned || - local->base_size || local->aligned_size) - goto out_EINVAL; - if (!alloc_region(local, need)) - return -1; - } - if (flags & YESCRYPT_ALLOC_ONLY) - return -2; /* expected "failure" */ - V = (salsa20_blk_t *)local->aligned; - need = 0; - } B_size = (size_t)128 * r * p; need += B_size; if (need < B_size) @@ -899,25 +884,18 @@ static int yescrypt_kdf_body( if (need < S_size) goto out_EINVAL; } - if (flags & YESCRYPT_INIT_SHARED) { - if (!alloc_region(&tmp, need)) + init_region(&tmp); + if (local->aligned_size < need) { + if (free_region(local)) + return -1; + if (!alloc_region(local, need)) return -1; - B = (uint8_t *)tmp.aligned; - XY = (salsa20_blk_t *)((uint8_t *)B + B_size); - } else { - init_region(&tmp); - if (local->aligned_size < need) { - if (free_region(local)) - return -1; - if (!alloc_region(local, need)) - return -1; - } - if (flags & YESCRYPT_ALLOC_ONLY) - return -3; /* expected "failure" */ - B = (uint8_t *)local->aligned; - V = (salsa20_blk_t *)((uint8_t *)B + B_size); - XY = (salsa20_blk_t *)((uint8_t *)V + V_size); } + if (flags & YESCRYPT_ALLOC_ONLY) + return -3; /* expected "failure" */ + B = (uint8_t *)local->aligned; + V = (salsa20_blk_t *)((uint8_t *)B + B_size); + XY = (salsa20_blk_t *)((uint8_t *)V + V_size); S = NULL; if (flags & YESCRYPT_RW) S = (uint8_t *)XY + XY_size; @@ -1021,7 +999,7 @@ int yescrypt_kdf( return -1; } - if ((flags & (YESCRYPT_RW | YESCRYPT_INIT_SHARED)) == YESCRYPT_RW + if ((flags & YESCRYPT_RW) && p >= 1 && N / p >= 0x100 && N / p * r >= 0x20000 diff --git a/libbb/yescrypt/alg-yescrypt.h b/libbb/yescrypt/alg-yescrypt.h index 09638e3e1..fb791e899 100644 --- a/libbb/yescrypt/alg-yescrypt.h +++ b/libbb/yescrypt/alg-yescrypt.h @@ -83,7 +83,6 @@ typedef uint32_t yescrypt_flags_t; /* Private */ #define YESCRYPT_MODE_MASK 0x003 #define YESCRYPT_RW_FLAVOR_MASK 0x3fc -#define YESCRYPT_INIT_SHARED 0x01000000 #define YESCRYPT_ALLOC_ONLY 0x08000000 #define YESCRYPT_PREHASH 0x10000000 #endif @@ -98,7 +97,7 @@ typedef uint32_t yescrypt_flags_t; #ifdef YESCRYPT_INTERNAL #define YESCRYPT_KNOWN_FLAGS \ (YESCRYPT_MODE_MASK | YESCRYPT_RW_FLAVOR_MASK | \ - YESCRYPT_INIT_SHARED | YESCRYPT_ALLOC_ONLY | YESCRYPT_PREHASH) + YESCRYPT_ALLOC_ONLY | YESCRYPT_PREHASH) #endif /** -- cgit v1.2.3-55-g6feb