aboutsummaryrefslogtreecommitdiff
path: root/libbb/yescrypt/alg-sha256.c (follow)
Commit message (Collapse)AuthorAgeFilesLines
* libbb/yescrypt: code shrinkDenys Vlasenko2025-08-011-4/+9
| | | | | | | function old new delta static.PBKDF2_SHA256 219 165 -54 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* libbb: introduce and use block-XOR functionsDenys Vlasenko2025-07-091-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | On x86_64, they can be done in 16-byte blocks 64-bit: function old new delta xorbuf_3 - 84 +84 xorbuf64_3_aligned64 - 58 +58 smix1 687 712 +25 xwrite_encrypted 520 534 +14 xorbuf16_aligned_long - 13 +13 tls_xread_record 733 742 +9 xorbuf 21 13 -8 xorbuf_aligned_AES_BLOCK_SIZE 15 - -15 blockmix 814 762 -52 blockmix_salsa8 317 198 -119 blockmix_xor_save 1620 1499 -121 blockmix_xor 1543 1322 -221 ------------------------------------------------------------------------------ (add/remove: 4/1 grow/shrink: 3/5 up/down: 203/-536) Total: -333 bytes 32-bit: function old new delta xorbuf_3 - 76 +76 xorbuf64_3_aligned64 - 36 +36 xorbuf16_aligned_long - 23 +23 xwrite_encrypted 499 507 +8 tls_xread_record 646 650 +4 xorbuf 22 11 -11 xorbuf_aligned_AES_BLOCK_SIZE 23 - -23 blockmix 1083 938 -145 blockmix_salsa8 415 210 -205 blockmix_salsa8_xor 601 163 -438 blockmix_xor 2103 1533 -570 blockmix_xor_save 2614 1859 -755 ------------------------------------------------------------------------------ (add/remove: 4/1 grow/shrink: 2/6 up/down: 147/-2147) Total: -2000 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* add libbb/yescrypt/PARAMETERSDenys Vlasenko2025-07-071-4/+5
| | | | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* libbb/yescrypt: remove redundant SHA256 HMAC implementationDenys Vlasenko2025-07-071-86/+8
| | | | | | | | | | | | | | | | function old new delta hmac_blocks - 88 +88 static.PBKDF2_SHA256 176 213 +37 yescrypt_kdf32_body 1046 1052 +6 static.smix 759 762 +3 hmac_block 88 64 -24 HMAC_SHA256_Final 53 - -53 HMAC_SHA256_Buf 58 - -58 HMAC_SHA256_Init 159 - -159 ------------------------------------------------------------------------------ (add/remove: 1/3 grow/shrink: 3/1 up/down: 134/-294) Total: -160 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* libbb/yescrypt: shrink PBKDF2Denys Vlasenko2025-07-061-14/+14
| | | | | | | function old new delta static.PBKDF2_SHA256 189 176 -13 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* libbb/yescrypt: more efficient byteswappingDenys Vlasenko2025-07-061-6/+4
| | | | | | | | | | function old new delta static.smix1 631 604 -27 static.smix2 452 420 -32 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 0/2 up/down: 0/-59) Total: -59 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* libbb/yescrypt: code shrinkDenys Vlasenko2025-07-061-1/+1
| | | | | | | | | | | | | | | | | | | | static.PBKDF2_SHA256 - 189 +189 HMAC_SHA256_Init - 159 +159 HMAC_SHA256_Buf - 58 +58 HMAC_SHA256_Final - 53 +53 i2a64 - 42 +42 yescrypt_r 1221 1215 -6 yescrypt_kdf32_body 1064 1046 -18 i64c 42 - -42 libcperciva_HMAC_SHA256_Final 53 - -53 libcperciva_HMAC_SHA256_Buf 58 - -58 ascii64 65 - -65 libcperciva_HMAC_SHA256_Init 159 - -159 PBKDF2_SHA256 386 - -386 ------------------------------------------------------------------------------ (add/remove: 5/6 grow/shrink: 0/2 up/down: 501/-787) Total: -286 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* libbb/yescrypt: code shrinkDenys Vlasenko2025-07-061-11/+7
| | | | | | | function old new delta libcperciva_HMAC_SHA256_Final 56 53 -3 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* Move "sha256-hash a memory array and produce the digest" helper to libbbDenys Vlasenko2025-07-061-21/+5
| | | | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* libbb/yescrypt: remove extra sha256 implementationDenys Vlasenko2025-07-061-461/+37
| | | | | | | | | | | | | | | | | | | | | | | | | | | | function old new delta libcperciva_HMAC_SHA256_Init - 159 +159 libcperciva_HMAC_SHA256_Final - 56 +56 SHA256_Buf - 40 +40 static.smix 753 759 +6 yescrypt_kdf32_body 1059 1060 +1 .rodata 105803 105799 -4 initial_state 32 - -32 libcperciva_SHA256_Init 37 - -37 static.cpu_to_be32_vect 51 - -51 _HMAC_SHA256_Final 55 - -55 PAD 64 - -64 libcperciva_HMAC_SHA256_Buf 132 58 -74 libcperciva_SHA256_Buf 86 - -86 SHA256_Pad_Almost 131 - -131 _SHA256_Final 195 - -195 _SHA256_Update 198 - -198 _HMAC_SHA256_Init 213 - -213 Krnd 256 - -256 PBKDF2_SHA256 1003 386 -617 SHA256_Transform 3083 - -3083 ------------------------------------------------------------------------------ (add/remove: 3/12 grow/shrink: 2/3 up/down: 262/-5096) Total: -4834 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* libbb: add yescrypt password hashing supportDenys Vlasenko2025-07-061-0/+608
It seems to work, but not at all optimized for size. The extra copy of sha256 code need to be removed. The yescrypt code in libbb/yescrypt/* is adapted from libxcrypt-4.4.38 with minimal edits, hopefully making it easier to track backports by resetting the tree to this commit, then comparing changes in upstream libxcrypt to the tree. function old new delta blockmix_xor_save - 7050 +7050 static.blockmix_xor - 6475 +6475 blockmix - 3390 +3390 SHA256_Transform - 3083 +3083 yescrypt_kdf_body - 1724 +1724 PBKDF2_SHA256 - 1003 +1003 smix1 - 960 +960 yescrypt_r - 890 +890 salsa20 - 804 +804 smix - 790 +790 smix2 - 659 +659 blockmix_salsa8_xor - 601 +601 yescrypt_kdf - 479 +479 blockmix_salsa8 - 415 +415 Krnd - 256 +256 _HMAC_SHA256_Init - 213 +213 _SHA256_Update - 198 +198 _SHA256_Final - 195 +195 decode64_uint32 - 166 +166 encode64 - 153 +153 decode64 - 136 +136 libcperciva_HMAC_SHA256_Buf - 132 +132 SHA256_Pad_Almost - 131 +131 salsa20_simd_unshuffle - 101 +101 salsa20_simd_shuffle - 101 +101 yes_crypt - 90 +90 libcperciva_SHA256_Buf - 86 +86 crypt_make_rand64encoded - 85 +85 static.atoi64_partial - 77 +77 alloc_region - 72 +72 ascii64 - 65 +65 PAD - 64 +64 _HMAC_SHA256_Final - 55 +55 static.cpu_to_be32_vect - 51 +51 free_region - 47 +47 libcperciva_SHA256_Init - 37 +37 yescrypt_init_local - 34 +34 crypt_make_pw_salt 92 125 +33 initial_state - 32 +32 .rodata 105771 105803 +32 atoi64 - 25 +25 explicit_bzero - 22 +22 pw_encrypt 920 941 +21 yescrypt_free_local - 9 +9 crypt_make_salt 85 - -85 ------------------------------------------------------------------------------ (add/remove: 43/1 grow/shrink: 3/0 up/down: 31042/-85) Total: 30957 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>