Page MenuHomeSoftware Heritage

Update blake2 support to be less Debian-specific
ClosedPublic

Authored by olasd on Jun 20 2018, 5:37 PM.

Details

Summary

We used to depend on the 'blake2s256' and 'blake2b512' names to be available in
hashlib.algorithms_available. It turns out that that's specific to OpenSSL 1.1.

We now try, in order:

  • blake2s256/blake2b512 as shipped by libssl1.1 (Python 3.5+ on Debian stretch and up)
  • blake2s/blake2b as built into Python 3.6+
  • pyblake2 if all else fails

While we're here, let's also avoid doing not-so-subtle hacks with hashlib
builtins.

Thanks to Alexios Zavras for the report.

Test Plan

New unit tests added to check for behavior in all cases. Manually running the
tests on Python 3.4 + pyblake2, Python 3.5 and Python 3.6 as shipped by Debian
exercises all three cases.

Diff Detail

Repository
rDMOD Data model
Lint
Automatic diff as part of commit; lint not applicable.
Unit
Automatic diff as part of commit; unit tests not applicable.