GitLab is used only for code review, issue tracking and project management. Canonical locations for source code are still and

Commit 31a6a101 authored by Nick Mathewson's avatar Nick Mathewson 🥄

Handle a change in the implementation of hashlib in Python 3.9

Previously, hashlib.shake_256 was a class (if present); now it can
also be a function.  This change invalidated our old
compatibility/workaround code, and made one of our tests fail.

Fixes bug 40179; bugfix on when the workaround code was
parent dd63b972
o Minor bugfixes (testing, portability):
- Fix our Python reference-implementation for the v3 onion service
handshake so that it works correctly with the version of hashlib provided
by Python 3.9. Fixes part of bug 40179; bugfix on
......@@ -65,14 +65,16 @@ except ImportError:
# Pull the sha3 functions in.
from hashlib import sha3_256, shake_256
shake_squeeze = shake_256.digest
def shake_squeeze(obj, n):
return obj.digest(n)
except ImportError:
if hasattr(sha3, "SHA3256"):
# If this happens, then we have the old "sha3" module which
# hashlib and pysha3 superseded.
sha3_256 = sha3.SHA3256
shake_256 = sha3.SHAKE256
shake_squeeze = shake_256.squeeze
def shake_squeeze(obj, n):
return obj.squeeze(n)
# error code 77 tells automake to skip this test
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment