SHA512 and hashlib port
At the moment, Micropython supports SHA1 and SHA256.
I would like to suggest addition of more algorithms, in specific SHA512.
It's already implemented in micropython-lib and of course at cpython itself.
Hashlib questions (use of uhashlib, native code otherwise present, ripemd160)
I have some questions and comments about the hashlib module.
-
Some boards/ports have
sha256,sha1and others, as part of the binary already (particularly when SSL is being used). Some of these are made available inuhashlib, and so IMHOhashlibshould use those versions since they are both faster and smaller than anything we can do in pure python. It looks to me likesha256is guaranteed to be there (ifuhashlibexists) and SHA1 may exist ifMICROPY_PY_UHASHLIB_SHA1is set. -
It pains me that
lib/axtls/cryptocontains lots of hash functions that could be part ofuhashlib, plus AES and other primitives. That belongs as an issue against axtls though. -
hashlib.new()seems like a useful addition to implement, since that would allow pruning of algorithms that aren't needed on today's project, and if this module is rewritten in C, it becomes a great place to extend with native versions, when available. -
I need to have
ripemd160but I don't think it's common enough to bother weighing-down this module for everyone.
I'm going to follow-up with pull requests for 1 and 3, and maybe 4 if there is interest.
Any thoughts?
Point 1 should be fixed by da5ddfc6e21e8b2d680a74826bcf2652aa8e75ee
Point 3 (addition of
new()) was done a while ago in 175634b3cdf3a9269f5f6f9f8e76dbd524e24c44For point 4,
hashlibis now implemented as a set of components and you only need to install what your program will use. So addinghashlib-ripemd160(or any other algo) is relatively easy.