Denys Vlasenko
31f45c1b36
libbb: factor out fflush_stdout_and_exit(EXIT_SUCCESS)
...
function old new delta
fflush_stdout_and_exit_SUCCESS - 7 +7
xxd_main 890 888 -2
vlock_main 353 351 -2
uuencode_main 318 316 -2
uniq_main 427 425 -2
uname_main 250 248 -2
sort_main 853 851 -2
shuf_main 500 498 -2
route_main 238 236 -2
readlink_main 113 111 -2
nice_main 156 154 -2
last_main 957 955 -2
ipcs_main 960 958 -2
env_main 209 207 -2
chrt_main 464 462 -2
cal_main 921 919 -2
baseNUM_main 650 648 -2
------------------------------------------------------------------------------
(add/remove: 1/0 grow/shrink: 0/16 up/down: 7/-32) Total: -25 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2022-01-04 23:31:58 +01:00
Denys Vlasenko
97c00ae134
httpd: fix compile failure if !FEATURE_HTTPD_RANGES
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-12-26 14:29:37 +01:00
Denys Vlasenko
b720629dfe
httpd: do not send Last-Modified / ETag / Content-Length for error pages
...
function old new delta
send_headers 713 701 -12
send_headers_and_exit 20 34 +14
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-12-17 21:02:16 +01:00
Denys Vlasenko
70683faf38
httpd: don't send Content-Length in error pages header
...
function old new delta
send_headers 701 713 +12
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-12-17 20:37:58 +01:00
Denys Vlasenko
e67b80f473
udhcpc6: fix udhcp_find_option to actually find DHCP6 options
...
udhcp_insert_new_option treats code for IPv6 as follows:
new->data[D6_OPT_CODE] = code >> 8;
new->data[D6_OPT_CODE + 1] = code & 0xff;
udhcp_find_option tests the code as follows:
while (opt_list && opt_list->data[OPT_CODE] < code)
...
if (opt_list && opt_list->data[OPT_CODE] == code)
So yes, OPT_CODE and D6_OPT_CODE are both 0, but the D6_OPT_CLIENTID =
1 value means that the 1 is in the seconds byte, and udhcp_find_option
is only looking at the first byte, So the send_d6_release can never
find it the created option.
function old new delta
udhcp_find_option 28 53 +25
attach_option 276 284 +8
udhcpc6_main 2602 2607 +5
perform_d6_release 262 267 +5
udhcpd_main 1518 1520 +2
udhcpc_main 2542 2544 +2
add_serverid_and_clientid_options 46 48 +2
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 7/0 up/down: 49/0) Total: 49 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-12-12 17:13:54 +01:00
Ildar Shaimordanov
b9fba185c5
wget: allow end-users to customize Content-Type for --post-data and --post-file
...
More explanation in this PR:
https://github.com/rmyorston/busybox-w32/pull/233
The real use-case:
wget https://api.github.com/markdown/raw --header "Content-Type: text/plain"
function old new delta
wget_main 2560 2581 +21
wget_user_headers 62 76 +14
.rodata 104196 104197 +1
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 3/0 up/down: 36/0) Total: 36 bytes
Signed-off-by: Ildar Shaimordanov <ildar.shaimordanov@gmail.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-12-12 03:22:43 +01:00
Denys Vlasenko
27df6aeef2
tls: P256: factor out "multiply then reduce" operation
...
function old new delta
sp_256_mont_mul_and_reduce_8 - 44 +44
sp_256_ecc_mulmod_8 517 442 -75
------------------------------------------------------------------------------
(add/remove: 1/0 grow/shrink: 0/1 up/down: 44/-75) Total: -31 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-12-11 23:27:40 +01:00
Denys Vlasenko
b240733ae7
tls: x25519: code shrink by factoring out common code
...
function old new delta
fe_reduce - 37 +37
lm_add 67 43 -24
fe_mul_c 62 38 -24
fe_mul__distinct 138 112 -26
curve25519 800 767 -33
lm_sub 98 64 -34
------------------------------------------------------------------------------
(add/remove: 1/0 grow/shrink: 0/5 up/down: 37/-141) Total: -104 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-12-01 15:09:44 +01:00
Denys Vlasenko
8514b4166d
tls: P256: enable 64-bit version of montgomery reduction
...
After more testing, (1) I'm more sure it is indeed correct, and
(2) it is a significant speedup - we do a lot of those multiplications.
function old new delta
sp_512to256_mont_reduce_8 191 223 +32
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-11-28 21:43:51 +01:00
Denys Vlasenko
90b0d33044
tls: P256: add 64-bit montgomery reduce (disabled), small optimization in 32-bit code
...
function old new delta
sp_512to256_mont_reduce_8 191 185 -6
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-11-28 15:44:08 +01:00
Denys Vlasenko
832626227e
tls: P256: add comment on logic in sp_512to256_mont_reduce_8, no code changes
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-11-28 12:55:20 +01:00
Denys Vlasenko
cfb615781d
tls: P256: simplify sp_256_mont_inv_8 (no need for a temporary)
...
function old new delta
sp_256_ecc_mulmod_8 543 517 -26
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-11-28 11:15:34 +01:00
Denys Vlasenko
1b93c7c4ec
tls: P256: pad struct sp_point to 64 bits (on 64-bit arches)
...
function old new delta
curve_P256_compute_pubkey_and_premaster 198 190 -8
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-11-28 02:56:02 +01:00
Denys Vlasenko
0b13ab66f4
tls: P256: trivial x86-64 fix
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-11-27 19:36:23 +01:00
Denys Vlasenko
f92ae1dc4b
tls: P256: change logic so that we don't need double-wide vectors everywhere
...
Change sp_256to512z_mont_{mul,sqr}_8 to not require/zero upper 256 bits.
There is only one place where we actually used that (and that's why there
used to be zeroing memset of top half!). Fix up that place.
As a bonus, 256x256->512 multiply no longer needs to care for
"r overlaps a or b" case.
This shrinks sp_point structure as well, not just temporaries.
function old new delta
sp_256to512z_mont_mul_8 150 - -150
sp_256_mont_mul_8 - 147 +147
sp_256to512z_mont_sqr_8 7 - -7
sp_256_mont_sqr_8 - 7 +7
sp_256_ecc_mulmod_8 494 543 +49
sp_512to256_mont_reduce_8 243 249 +6
sp_256_point_from_bin2x32 73 70 -3
sp_256_proj_point_dbl_8 353 345 -8
sp_256_proj_point_add_8 544 499 -45
------------------------------------------------------------------------------
(add/remove: 2/2 grow/shrink: 2/3 up/down: 209/-213) Total: -4 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-11-27 19:27:03 +01:00
Denys Vlasenko
9c671fe3dd
tls: P256: do not open-code copying of struct variables
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-11-27 18:42:27 +01:00
Denys Vlasenko
dcfd8d3d10
tls: P256: fix sp_256_div2_8 - it wouldn't use a[] if low bit is 0
...
It worked by chance because the only caller passed both parameters
as two pointers to the same array.
My fault (I made this error when converting from 26-bit code).
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-11-27 16:24:49 +01:00
Denys Vlasenko
8cbb70365f
tls: P256: remove redundant zeroing in sp_256_map_8
...
Previous change made it obvious that we zero out already-zeroed high bits
function old new delta
sp_256_ecc_mulmod_8 534 494 -40
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-11-27 15:50:40 +01:00
Denys Vlasenko
4415f7bc06
tls: P256: explain which functions use double-wide arrays, no code changes
...
function old new delta
sp_512to256_mont_reduce_8 - 243 +243
sp_256to512z_mont_mul_8 - 150 +150
sp_256to512z_mont_sqr_8 - 7 +7
sp_256_mont_sqr_8 7 - -7
sp_256_mont_mul_8 150 - -150
sp_256_mont_reduce_8 243 - -243
------------------------------------------------------------------------------
(add/remove: 3/3 grow/shrink: 0/0 up/down: 400/-400) Total: 0 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-11-27 15:47:26 +01:00
Denys Vlasenko
bbda85c74b
tls: P256: remove constant-time trick in sp_256_proj_point_add_8
...
function old new delta
sp_256_proj_point_add_8 576 544 -32
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-11-27 15:06:57 +01:00
Denys Vlasenko
26c8522522
tls: P256: do not open-code copying of struct variables
...
function old new delta
sp_256_ecc_mulmod_8 536 534 -2
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-11-27 15:00:14 +01:00
Denys Vlasenko
446d136109
tls: tweak debug printout
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-11-27 12:03:43 +01:00
Denys Vlasenko
4bc9da1071
tls: P256: 64-bit optimizations
...
function old new delta
sp_256_proj_point_dbl_8 421 428 +7
sp_256_point_from_bin2x32 78 84 +6
sp_256_cmp_8 38 42 +4
sp_256_to_bin_8 28 31 +3
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 4/0 up/down: 20/0) Total: 20 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-11-27 11:28:11 +01:00
Denys Vlasenko
94c78aa0b9
config system: move some options closer to relevalnt tool subdirectories
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-10-12 13:23:29 +02:00
Denys Vlasenko
aec8fbfb83
whitespace fix
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-10-11 19:11:06 +02:00
Denys Vlasenko
23aba8a9a6
tls: code shrink curve25519
...
function old new delta
fe_select 39 - -39
curve25519 849 800 -49
------------------------------------------------------------------------------
(add/remove: 0/1 grow/shrink: 0/1 up/down: 0/-88) Total: -88 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-10-11 16:31:47 +02:00
Denys Vlasenko
74ee3f2f73
tls: remove unused tls_symmetric.h (was used by old "big" AES code)
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-10-11 13:46:30 +02:00
Denys Vlasenko
53b2fdcdba
*: add NOINLINEs where code noticeably shrinks
...
function old new delta
display 85 1463 +1378 -73 bytes
select_and_cluster - 1088 +1088 -139 bytes
parse_reply - 979 +979 -109 bytes
zbc_num_sqrt - 632 +632 -191 bytes
show_bridge_port - 585 +585 -56 bytes
sp_256_proj_point_add_8 - 576 +576 -45 bytes
encode_then_append_var_plusminus - 554 +554 -118 bytes
read_mode_db - 537 +537 -47 bytes
fbset_main 1331 747 -584
sp_256_ecc_mulmod_8 1157 536 -621
brctl_main 2189 1548 -641
expand_one_var 2544 1872 -672
zxc_vm_process 6412 5589 -823
send_queries 1813 725 -1088
recv_and_process_peer_pkt 2245 1018 -1227
bb_dump_dump 1531 80 -1451
------------------------------------------------------------------------------
(add/remove: 7/0 grow/shrink: 1/8 up/down: 6329/-7107) Total: -778 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-10-10 13:50:53 +02:00
Denys Vlasenko
84874785c2
httpd: if range is not specified, correctly fall back to read/write loop
...
range_start was staying -1, and comparison meant to detect
"is it the first sendfile that failed, or not the first?"
was making incorrect decision. The result: nothing is sent.
function old new delta
send_file_and_exit 865 877 +12
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-10-08 15:41:08 +02:00
Denys Vlasenko
50c5b36dd7
help: s/Don't daemonize/Run in foreground/g
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-10-08 15:02:53 +02:00
Nicholas Niro
c28313bb17
ip: added support for setting netns on devices
...
function old new delta
set_netns - 130 +130
do_iplink 1252 1315 +63
.rodata 104173 104179 +6
packed_usage 34020 33993 -27
------------------------------------------------------------------------------
(add/remove: 1/0 grow/shrink: 2/1 up/down: 199/-27) Total: 172 bytes
Signed-off-by: Nicholas Niro <blowfist@xroutine.net>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-10-07 23:24:56 +02:00
Denys Vlasenko
17e6fb06b3
tls: whitespace fix
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-10-06 21:22:36 +02:00
Denys Vlasenko
5e9c617021
tls: P256: sp_256_sub_8_p256_mod always subtracts in-place, use that
...
i386:
function old new delta
sp_256_mont_reduce_8 245 243 -2
sp_256_mont_dbl_8 26 24 -2
sp_256_ecc_mulmod_8 1161 1157 -4
sp_256_proj_point_dbl_8 359 353 -6
sp_256_sub_8_p256_mod 71 32 -39
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/5 up/down: 0/-53) Total: -53 bytes
non-asm code:
function old new delta
sp_256_sub_8_p256_mod - 12 +12
sp_256_mont_reduce_8 250 243 -7
sp_256_mont_dbl_8 31 24 -7
sp_256_ecc_mulmod_8 1171 1157 -14
sp_256_proj_point_dbl_8 374 353 -21
------------------------------------------------------------------------------
(add/remove: 1/0 grow/shrink: 0/4 up/down: 12/-49) Total: -37 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-10-06 20:19:30 +02:00
Denys Vlasenko
87e3f2e9f8
tls: P256: x86-64 optimized sp_256_sub_8_p256_mod
...
function old new delta
sp_256_sub_8_p256_mod - 53 +53
sp_256_mont_reduce_8 223 217 -6
sp_256_mont_dbl_8 38 32 -6
sp_256_ecc_mulmod_8 1535 1529 -6
sp_256_proj_point_dbl_8 469 454 -15
------------------------------------------------------------------------------
(add/remove: 1/0 grow/shrink: 0/4 up/down: 53/-33) Total: 20 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-10-06 19:59:39 +02:00
Denys Vlasenko
911344a998
tls: P256: x86-64 assembly
...
function old new delta
sp_256_mont_mul_8 127 155 +28
sp_256_proj_point_dbl_8 448 469 +21
sp_256_mont_sub_8 23 35 +12
sp_256_mont_dbl_8 26 38 +12
sp_256_sub_8 44 49 +5
sp_256_ecc_mulmod_8 1530 1535 +5
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 6/0 up/down: 83/0) Total: 83 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-10-06 17:17:34 +02:00
Denys Vlasenko
22fd8fd3f4
tls: P256: tweak arm assembly (currently disabled)
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-10-06 16:10:49 +02:00
Denys Vlasenko
d74993d31d
tls: P@256: remove "header comment is kept intact" comment
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-10-06 14:28:47 +02:00
Denys Vlasenko
567eefcaf8
tls: P256: do not dumplicate sp_256_sub_8()
...
function old new delta
sp_256_proj_point_dbl_8 359 374 +15
sp_256_ecc_mulmod_8 1159 1171 +12
sp_256_mont_reduce_8 245 250 +5
sp_256_mont_dbl_8 26 31 +5
sp_256_sub_8_p256_mod 43 - -43
------------------------------------------------------------------------------
(add/remove: 0/1 grow/shrink: 4/0 up/down: 37/-43) Total: -6 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-10-06 14:25:54 +02:00
Denys Vlasenko
00f2cceb6a
tls: P256: shrink sp_256_mul_add_8 a bit more
...
function old new delta
sp_256_mont_reduce_8 257 245 -12
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-10-06 10:15:29 +02:00
Denys Vlasenko
c784284615
tls: P256: propagate constants, create dedicated "subtract p256_mod" function
...
8 instances of this subtraction probably warrant a few bytes more of code.
function old new delta
sp_256_sub_8_p256_mod - 71 +71
sp_256_mont_sub_8 - 29 +29
sp_256_mont_dbl_8 - 26 +26
sp_256_mont_reduce_8 262 257 -5
sp_256_ecc_mulmod_8 1171 1161 -10
sp_256_proj_point_dbl_8 374 359 -15
static.sp_256_mont_sub_8 29 - -29
static.sp_256_mont_dbl_8 31 - -31
------------------------------------------------------------------------------
(add/remove: 3/2 grow/shrink: 0/3 up/down: 126/-90) Total: 36 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-10-06 01:11:48 +02:00
Denys Vlasenko
2430fcfd8d
tls: optimize sp_256_mont_reduce_8 in P256
...
The code size decrease is small, but we eliminate ALL multiplies!
function old new delta
sp_256_mont_reduce_8 268 262 -6
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-10-06 00:24:03 +02:00
Denys Vlasenko
bbd723ebec
tls: optimize sp_256_mul_8 in P256
...
function old new delta
sp_256_mont_mul_8 151 150 -1
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-10-05 23:19:18 +02:00
Denys Vlasenko
3b411ebbfc
tls: replace "26-bit" P256 code with 32-bit one.
...
function old new delta
sp_256_ecc_mulmod_8 - 1171 +1171
sp_256_mod_mul_norm_8 - 834 +834
sp_256_proj_point_dbl_8 - 374 +374
sp_256_mont_reduce_8 - 268 +268
sp_256_mont_mul_8 - 151 +151
sp_256_sub_8 - 76 +76
sp_256_add_8 - 76 +76
sp_256_cmp_8 - 38 +38
static.sp_256_mont_dbl_8 - 31 +31
static.sp_256_mont_sub_8 - 29 +29
sp_256_to_bin_8 - 28 +28
sp_256_point_from_bin2x32 50 73 +23
sp_256_mont_sqr_8 - 7 +7
sp_256_mont_sqr_10 7 - -7
p256_mod 40 32 -8
curve_P256_compute_pubkey_and_premaster 186 167 -19
sp_256_sub_10 22 - -22
sp_256_add_10 22 - -22
sp_256_cmp_10 24 - -24
sp_256_norm_10 31 - -31
static.sp_256_mont_sub_10 49 - -49
static.sp_256_mont_dbl_10 52 - -52
static.sp_256_mul_add_10 82 - -82
sp_256_from_bin_10 119 - -119
sp_256_to_bin_10 120 - -120
sp_256_mont_reduce_10 178 - -178
sp_256_mont_mul_10 214 - -214
sp_256_proj_point_dbl_10 451 - -451
sp_256_ecc_mulmod_10 1216 - -1216
sp_256_mod_mul_norm_10 1305 - -1305
------------------------------------------------------------------------------
(add/remove: 12/15 grow/shrink: 1/2 up/down: 3106/-3919) Total: -813 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-10-05 20:01:38 +02:00
Denys Vlasenko
55578f2fb7
tls: fix the case of sp_256_mont_tpl_10() leaving striay high bits
...
It has no effect on correctness, but interferes with compating internal state
of different implementations.
function old new delta
sp_256_proj_point_dbl_10 443 451 +8
static.sp_256_mont_sub_10 46 49 +3
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 2/0 up/down: 11/0) Total: 11 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-10-05 19:46:39 +02:00
Denys Vlasenko
81d8af1970
tls: fix (what looks like) a rare corner case bug in P256
...
function old new delta
static.sp_256_mont_sub_10 30 46 +16
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-10-05 17:31:33 +02:00
Denys Vlasenko
92402d5e0a
tls: remove one overzealous debugging statement
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-10-05 14:01:52 +02:00
Denys Vlasenko
137864f559
tls: add debugging scaffolding to P256 code
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-10-05 13:50:11 +02:00
Denys Vlasenko
389329efbe
tls: another P256 code shrink
...
Propagate constant arrays and scalars deeper down call chain.
Use sp_256_mont_mul_10 to implement sp_256_mont_sqr_10.
function old new delta
sp_256_mont_mul_10 - 214 +214
sp_256_mont_reduce_10 - 178 +178
sp_256_mont_sqr_10 - 7 +7
static.sp_256_mont_reduce_10 178 - -178
static.sp_256_mont_mul_10 214 - -214
static.sp_256_mont_sqr_10 234 - -234
------------------------------------------------------------------------------
(add/remove: 3/3 grow/shrink: 0/0 up/down: 399/-626) Total: -227 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-10-05 13:39:33 +02:00
Denys Vlasenko
e730505034
tls: P256 code shrink
...
function old new delta
sp_256_to_bin_10 - 120 +120
sp_256_from_bin_10 - 119 +119
sp_256_proj_point_dbl_10 446 443 -3
curve_P256_compute_pubkey_and_premaster 191 186 -5
sp_256_point_from_bin2x32 62 50 -12
sp_256_to_bin 120 - -120
static.sp_256_from_bin 149 - -149
------------------------------------------------------------------------------
(add/remove: 2/2 grow/shrink: 0/3 up/down: 239/-289) Total: -50 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-10-05 13:32:04 +02:00
Denys Vlasenko
934bb01d51
tls: "server cert is not RSA" is a fatal error
...
function old new delta
tls_handshake 2022 2019 -3
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-10-01 22:03:09 +02:00