[git commit] libbb/yescrypt: remove YESCRYPT_INIT_SHARED flag and code using it

Denys Vlasenko vda.linux at googlemail.com
Sat Jul 5 23:29:14 UTC 2025


commit: https://git.busybox.net/busybox/commit/?id=bf8231d11ddd49abcded8b18b63ddeaea49c7fc8
branch: https://git.busybox.net/busybox/commit/?id=refs/heads/master

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 <vda.linux at googlemail.com>
---
 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
 
 /**


More information about the busybox-cvs mailing list