This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

Author christian.heimes
Recipients christian.heimes, gregory.p.smith
Date 2022-03-23.09:06:21
SpamBayes Score -1.0
Marked as misclassified Yes
Message-id <1648026382.03.0.0255347692375.issue47098@roundup.psfhosted.org>
In-reply-to
Content
The Keccak Code Package (kcp) provides the reference implementation for SHA3 and SHAKE hashing algorithms. CPython has vendored a copy of KCP since I added SHA3 in 3.6.

CPython 3.10 and newer require OpenSSL >= 1.1.1, which provide an optimized implementation of SHA3 and SHAKE on all platforms. The vast majority of users now use SHA3 from OpenSSL instead our _sha3 module with KCP. Both the KCP and _sha3 module are large. The KCP has 230kB of code. The _sha3 shared library is 390kB on Linux X86_64, stripped 90kB.

I would like to reduce the size of our bundled code. Since SHA3 and SHAKE are listed in hashlib.algorithms_guaranteed and OpenSSL is optional, we cannot just drop the _sha3 module. Instead I propose to replace the implementation with tiny_sha3 https://github.com/mjosaarinen/tiny_sha3 . The tiny implementation is 13 kB of code. The resulting _sha3 shared library is 69 kB (stripped 25 kB).

A Python build without OpenSSL bindings will have a working but slower SHA3 implementation.
History
Date User Action Args
2022-03-23 09:06:22christian.heimessetrecipients: + christian.heimes, gregory.p.smith
2022-03-23 09:06:22christian.heimessetmessageid: <1648026382.03.0.0255347692375.issue47098@roundup.psfhosted.org>
2022-03-23 09:06:21christian.heimeslinkissue47098 messages
2022-03-23 09:06:21christian.heimescreate