android_kernel_motorola_sm6375/crypto
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Jason A. Donenfeld 0f31cafc7d
UPSTREAM: crypto: poly1305 - add new 32 and 64-bit generic versions
These two C implementations from Zinc -- a 32x32 one and a 64x64 one,
depending on the platform -- come from Andrew Moon's public domain
poly1305-donna portable code, modified for usage in the kernel. The
precomputation in the 32-bit version and the use of 64x64 multiplies in
the 64-bit version make these perform better than the code it replaces.
Moon's code is also very widespread and has received many eyeballs of
scrutiny.

There's a bit of interference between the x86 implementation, which
relies on internal details of the old scalar implementation. In the next
commit, the x86 implementation will be replaced with a faster one that
doesn't rely on this, so none of this matters much. But for now, to keep
this passing the tests, we inline the bits of the old implementation
that the x86 implementation relied on. Also, since we now support a
slightly larger key space, via the union, some offsets had to be fixed
up.

Nonce calculation was folded in with the emit function, to take
advantage of 64x64 arithmetic. However, Adiantum appeared to rely on no
nonce handling in emit, so this path was conditionalized. We also
introduced a new struct, poly1305_core_key, to represent the precise
amount of space that particular implementation uses.

Testing with kbench9000, depending on the CPU, the update function for
the 32x32 version has been improved by 4%-7%, and for the 64x64 by
19%-30%. The 32x32 gains are small, but I think there's great value in
having a parallel implementation to the 64x64 one so that the two can be
compared side-by-side as nice stand-alone units.

Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
(cherry picked from commit 1c08a104360f3e18f4ee6346c21cc3923efb952e)
Bug: 152722841
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
Change-Id: Id78d94f75740b3517260ad67ac3250728c721fd6
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2025-09-24 12:16:32 +02:00
..
asymmetric_keys X.509: if signature is unsupported skip validation 2023-09-23 10:59:55 +02:00
async_tx
842.c
ablkcipher.c
acompress.c
adiantum.c UPSTREAM: crypto: poly1305 - add new 32 and 64-bit generic versions 2025-09-24 12:16:32 +02:00
aead.c crypto: aead,cipher - zeroize key buffer after use 2024-11-08 16:20:33 +01:00
aegis.h
aegis128-core.c
aegis128-neon-inner.c
aegis128-neon.c
aes_generic.c
aes_ti.c
af_alg.c crypto: af_alg - Disallow multiple in-flight AIO requests 2024-01-25 14:34:23 -08:00
ahash.c
akcipher.c crypto: akcipher - default implementation for setting a private key 2022-10-26 13:22:45 +02:00
algapi.c Revert "crypto: api - Disallow identical driver names" 2024-05-02 16:18:35 +02:00
algboss.c
algif_aead.c crypto: algif_aead - Do not set MAY_BACKLOG on the async path 2020-10-29 09:57:29 +01:00
algif_hash.c crypto: algif_hash - fix double free in hash_accept 2025-06-04 14:32:35 +02:00
algif_rng.c
algif_skcipher.c crypto: algif_skcipher - EBUSY on aio should be an error 2020-10-29 09:57:30 +01:00
ansi_cprng.c
anubis.c
api.c crypto: api - check for ERR pointers in crypto_destroy_tfm() 2021-05-11 14:04:05 +02:00
arc4.c
authenc.c crypto: authenc - Fix sleep in atomic context in decrypt_tail 2022-04-15 14:18:04 +02:00
authencesn.c
blake2b_generic.c BACKPORT: crypto: blake2b - update file comment 2021-10-23 19:32:26 -07:00
blake2s_generic.c This is the 5.4.200 stable release 2022-06-23 15:04:40 +02:00
blkcipher.c
blowfish_common.c
blowfish_generic.c
camellia_generic.c
cast5_generic.c
cast6_generic.c crypto: x86 - Regularize glue function prototypes 2021-03-20 10:39:47 +01:00
cast_common.c
cbc.c
ccm.c
cfb.c
chacha20poly1305.c
chacha_generic.c UPSTREAM: crypto: chacha_generic - remove unnecessary setkey() functions 2025-09-24 12:16:31 +02:00
cipher.c crypto: aead,cipher - zeroize key buffer after use 2024-11-08 16:20:33 +01:00
cmac.c
compress.c
crc32_generic.c
crc32c_generic.c
crct10dif_common.c
crct10dif_generic.c
cryptd.c crypto: cryptd - Protect per-CPU resource by disabling BH. 2022-06-14 18:11:41 +02:00
crypto_engine.c
crypto_null.c crypto: null - Use spin lock instead of mutex 2025-05-02 07:39:27 +02:00
crypto_user_base.c
crypto_user_stat.c
ctr.c
cts.c
curve25519-generic.c UPSTREAM: crypto: curve25519 - implement generic KPP driver 2025-09-24 12:16:31 +02:00
deflate.c
des_generic.c
dh.c
dh_helper.c
drbg.c crypto: drbg - Only fail when jent is unavailable in FIPS mode 2023-05-17 11:35:42 +02:00
ecb.c
ecc.c
ecc.h
ecc_curve_defs.h
ecdh.c crypto: ecdh - avoid buffer overflow in ecdh_set_secret() 2021-01-12 20:16:17 +01:00
ecdh_helper.c crypto: ecdh_helper - Ensure 'len >= secret.len' in decode_key() 2021-03-04 10:26:25 +01:00
echainiv.c
ecrdsa.c crypto: ecrdsa - Fix module auto-load on add_key 2024-06-16 13:28:51 +02:00
ecrdsa_defs.h
ecrdsa_params.asn1
ecrdsa_pub_key.asn1
essiv.c crypto: essiv - Handle EBUSY correctly 2023-03-11 16:43:39 +01:00
fcrypt.c
fips.c
gcm.c
gf128mul.c
ghash-generic.c
hash_info.c
hmac.c
internal.h
jitterentropy-kcapi.c
jitterentropy.c
Kconfig UPSTREAM: crypto: curve25519 - x86_64 library and KPP implementations 2025-09-24 12:16:31 +02:00
keywrap.c
khazad.c
kpp.c
lrw.c
lz4.c
lz4hc.c
lzo-rle.c
lzo.c
Makefile UPSTREAM: crypto: curve25519 - implement generic KPP driver 2025-09-24 12:16:31 +02:00
md4.c
md5.c
memneq.c
michael_mic.c
nhpoly1305.c UPSTREAM: crypto: poly1305 - add new 32 and 64-bit generic versions 2025-09-24 12:16:32 +02:00
ofb.c
OWNERS ANDROID: Add OWNERS files referring to the respective android-mainline OWNERS 2021-04-01 13:45:14 +00:00
pcbc.c
pcrypt.c crypto: pcrypt - Call crypto layer directly when padata_do_parallel() return -EBUSY 2024-12-14 19:44:23 +01:00
poly1305_generic.c UPSTREAM: crypto: poly1305 - add new 32 and 64-bit generic versions 2025-09-24 12:16:32 +02:00
proc.c
ripemd.h
rmd128.c
rmd160.c
rmd256.c
rmd320.c
rng.c crypto: rng - fix crypto_rng_reset() refcounting when !CRYPTO_STATS 2021-05-11 14:04:15 +02:00
rsa-pkcs1pad.c crypto: rsa-pkcs1pad - Use akcipher_request_complete 2023-03-11 16:43:41 +01:00
rsa.c
rsa_helper.c
rsaprivkey.asn1
rsapubkey.asn1
salsa20_generic.c
scatterwalk.c
scompress.c crypto: scomp - fix req->dst buffer overflow 2024-01-25 14:34:24 -08:00
seed.c
seqiv.c crypto: seqiv - Handle EBUSY correctly 2023-03-11 16:43:39 +01:00
serpent_generic.c crypto: x86 - Regularize glue function prototypes 2021-03-20 10:39:47 +01:00
sha1_generic.c
sha3_generic.c
sha256_generic.c
sha512_generic.c
shash.c crypto: shash - avoid comparing pointers to exported functions under CFI 2021-07-14 16:53:13 +02:00
simd.c
skcipher.c
sm3_generic.c
sm4_generic.c
streebog_generic.c
tcrypt.c crypto: tcrypt - Fix multibuffer skcipher speed test mem leak 2023-01-18 11:41:19 +01:00
tcrypt.h
tea.c
testmgr.c UPSTREAM: crypto: curve25519 - add kpp selftest 2025-09-24 12:16:31 +02:00
testmgr.h UPSTREAM: crypto: curve25519 - add kpp selftest 2025-09-24 12:16:31 +02:00
tgr192.c
twofish_common.c
twofish_generic.c
vmac.c
wp512.c
xcbc.c
xor.c
xts.c
xxhash_generic.c
zstd.c