aboutsummaryrefslogtreecommitdiff
path: root/libbb
diff options
context:
space:
mode:
authorDenys Vlasenko <vda.linux@googlemail.com>2025-07-06 01:29:14 +0200
committerDenys Vlasenko <vda.linux@googlemail.com>2025-07-06 01:29:14 +0200
commitbf8231d11ddd49abcded8b18b63ddeaea49c7fc8 (patch)
tree1b92e074b8e89725d45a32c8719be2bed6928a62 /libbb
parent10196929da47461d1d684cc65662cbaf591412fe (diff)
downloadbusybox-w32-bf8231d11ddd49abcded8b18b63ddeaea49c7fc8.tar.gz
busybox-w32-bf8231d11ddd49abcded8b18b63ddeaea49c7fc8.tar.bz2
busybox-w32-bf8231d11ddd49abcded8b18b63ddeaea49c7fc8.zip
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 <vda.linux@googlemail.com>
Diffstat (limited to 'libbb')
-rw-r--r--libbb/yescrypt/alg-yescrypt-kdf.c46
-rw-r--r--libbb/yescrypt/alg-yescrypt.h3
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,
731 } 731 }
732 732
733 Nloop_rw = 0; 733 Nloop_rw = 0;
734 if (flags & YESCRYPT_INIT_SHARED) 734 if (flags & YESCRYPT_RW)
735 Nloop_rw = Nloop_all;
736 else if (flags & YESCRYPT_RW)
737 Nloop_rw = Nloop_all / p; 735 Nloop_rw = Nloop_all / p;
738 736
739 Nchunk &= ~(uint32_t)1; /* round down to even */ 737 Nchunk &= ~(uint32_t)1; /* round down to even */
@@ -872,19 +870,6 @@ static int yescrypt_kdf_body(
872 V = NULL; 870 V = NULL;
873 V_size = (size_t)128 * r * N; 871 V_size = (size_t)128 * r * N;
874 need = V_size; 872 need = V_size;
875 if (flags & YESCRYPT_INIT_SHARED) {
876 if (local->aligned_size < need) {
877 if (local->base || local->aligned ||
878 local->base_size || local->aligned_size)
879 goto out_EINVAL;
880 if (!alloc_region(local, need))
881 return -1;
882 }
883 if (flags & YESCRYPT_ALLOC_ONLY)
884 return -2; /* expected "failure" */
885 V = (salsa20_blk_t *)local->aligned;
886 need = 0;
887 }
888 B_size = (size_t)128 * r * p; 873 B_size = (size_t)128 * r * p;
889 need += B_size; 874 need += B_size;
890 if (need < B_size) 875 if (need < B_size)
@@ -899,25 +884,18 @@ static int yescrypt_kdf_body(
899 if (need < S_size) 884 if (need < S_size)
900 goto out_EINVAL; 885 goto out_EINVAL;
901 } 886 }
902 if (flags & YESCRYPT_INIT_SHARED) { 887 init_region(&tmp);
903 if (!alloc_region(&tmp, need)) 888 if (local->aligned_size < need) {
889 if (free_region(local))
890 return -1;
891 if (!alloc_region(local, need))
904 return -1; 892 return -1;
905 B = (uint8_t *)tmp.aligned;
906 XY = (salsa20_blk_t *)((uint8_t *)B + B_size);
907 } else {
908 init_region(&tmp);
909 if (local->aligned_size < need) {
910 if (free_region(local))
911 return -1;
912 if (!alloc_region(local, need))
913 return -1;
914 }
915 if (flags & YESCRYPT_ALLOC_ONLY)
916 return -3; /* expected "failure" */
917 B = (uint8_t *)local->aligned;
918 V = (salsa20_blk_t *)((uint8_t *)B + B_size);
919 XY = (salsa20_blk_t *)((uint8_t *)V + V_size);
920 } 893 }
894 if (flags & YESCRYPT_ALLOC_ONLY)
895 return -3; /* expected "failure" */
896 B = (uint8_t *)local->aligned;
897 V = (salsa20_blk_t *)((uint8_t *)B + B_size);
898 XY = (salsa20_blk_t *)((uint8_t *)V + V_size);
921 S = NULL; 899 S = NULL;
922 if (flags & YESCRYPT_RW) 900 if (flags & YESCRYPT_RW)
923 S = (uint8_t *)XY + XY_size; 901 S = (uint8_t *)XY + XY_size;
@@ -1021,7 +999,7 @@ int yescrypt_kdf(
1021 return -1; 999 return -1;
1022 } 1000 }
1023 1001
1024 if ((flags & (YESCRYPT_RW | YESCRYPT_INIT_SHARED)) == YESCRYPT_RW 1002 if ((flags & YESCRYPT_RW)
1025 && p >= 1 1003 && p >= 1
1026 && N / p >= 0x100 1004 && N / p >= 0x100
1027 && N / p * r >= 0x20000 1005 && 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;
83/* Private */ 83/* Private */
84#define YESCRYPT_MODE_MASK 0x003 84#define YESCRYPT_MODE_MASK 0x003
85#define YESCRYPT_RW_FLAVOR_MASK 0x3fc 85#define YESCRYPT_RW_FLAVOR_MASK 0x3fc
86#define YESCRYPT_INIT_SHARED 0x01000000
87#define YESCRYPT_ALLOC_ONLY 0x08000000 86#define YESCRYPT_ALLOC_ONLY 0x08000000
88#define YESCRYPT_PREHASH 0x10000000 87#define YESCRYPT_PREHASH 0x10000000
89#endif 88#endif
@@ -98,7 +97,7 @@ typedef uint32_t yescrypt_flags_t;
98#ifdef YESCRYPT_INTERNAL 97#ifdef YESCRYPT_INTERNAL
99#define YESCRYPT_KNOWN_FLAGS \ 98#define YESCRYPT_KNOWN_FLAGS \
100 (YESCRYPT_MODE_MASK | YESCRYPT_RW_FLAVOR_MASK | \ 99 (YESCRYPT_MODE_MASK | YESCRYPT_RW_FLAVOR_MASK | \
101 YESCRYPT_INIT_SHARED | YESCRYPT_ALLOC_ONLY | YESCRYPT_PREHASH) 100 YESCRYPT_ALLOC_ONLY | YESCRYPT_PREHASH)
102#endif 101#endif
103 102
104/** 103/**