Skip to content

Hashlib questions (use of uhashlib, native code otherwise present, ripemd160) #235

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
doc-hex opened this issue Nov 22, 2017 · 1 comment

Comments

@doc-hex
Copy link

doc-hex commented Nov 22, 2017

I have some questions and comments about the hashlib module.

  1. Some boards/ports have sha256, sha1 and others, as part of the binary already (particularly when SSL is being used). Some of these are made available in uhashlib, and so IMHO hashlib should use those versions since they are both faster and smaller than anything we can do in pure python. It looks to me like sha256 is guaranteed to be there (if uhashlib exists) and SHA1 may exist if MICROPY_PY_UHASHLIB_SHA1 is set.

  2. It pains me that lib/axtls/crypto contains lots of hash functions that could be part of uhashlib, plus AES and other primitives. That belongs as an issue against axtls though.

  3. 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.

  4. I need to have ripemd160 but 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?

@dpgeorge
Copy link
Member

Point 1 should be fixed by da5ddfc

Point 3 (addition of new()) was done a while ago in 175634b

For point 4, hashlib is now implemented as a set of components and you only need to install what your program will use. So adding hashlib-ripemd160 (or any other algo) is relatively easy.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants