diff options
| author | Denys Vlasenko <vda.linux@googlemail.com> | 2025-07-06 01:29:14 +0200 |
|---|---|---|
| committer | Denys Vlasenko <vda.linux@googlemail.com> | 2025-07-06 01:29:14 +0200 |
| commit | bf8231d11ddd49abcded8b18b63ddeaea49c7fc8 (patch) | |
| tree | 1b92e074b8e89725d45a32c8719be2bed6928a62 /libbb | |
| parent | 10196929da47461d1d684cc65662cbaf591412fe (diff) | |
| download | busybox-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.c | 46 | ||||
| -rw-r--r-- | 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, | |||
| 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 | /** |
