-
Notifications
You must be signed in to change notification settings - Fork 329
Open
Labels
Description
I'm trying to package your module as an rpm package. So I'm using the typical PEP517 based build, install and test cycle used on building packages from non-root account.
python3 -sBm build -w --no-isolation
- because I'm calling
build
with--no-isolation
I'm using during all processes only locally installed modules - install .whl file in </install/prefix>
- run pytest with PYTHONPATH pointing to sitearch and sitelib inside </install/prefix>
Here is pytest output:
+ PYTHONPATH=/home/tkloczko/rpmbuild/BUILDROOT/python-ecdsa-0.17.0-5.fc35.x86_64/usr/lib64/python3.8/site-packages:/home/tkloczko/rpmbuild/BUILDROOT/python-ecdsa-0.17.0-5.fc35.x86_64/usr/lib/python3.8/site-packages
+ /usr/bin/pytest -ra
=========================================================================== test session starts ============================================================================
platform linux -- Python 3.8.12, pytest-6.2.5, py-1.11.0, pluggy-1.0.0
rootdir: /home/tkloczko/rpmbuild/BUILD/python-ecdsa-python-ecdsa-0.17.0
plugins: hypothesis-6.36.0
collected 1464 items / 1 error / 1463 selected
================================================================================== ERRORS ==================================================================================
____________________________________________________________ ERROR collecting src/ecdsa/test_malformed_sigs.py _____________________________________________________________
/usr/lib64/python3.8/hashlib.py:157: in __hash_new
return _hashlib.new(name, data)
E ValueError: [digital envelope routines] initialization error
During handling of the above exception, another exception occurred:
src/ecdsa/test_malformed_sigs.py:41: in <module>
hash_and_size = [
src/ecdsa/test_malformed_sigs.py:42: in <listcomp>
(name, hashlib.new(name).digest_size) for name in algorithms_available
/usr/lib64/python3.8/hashlib.py:163: in __hash_new
return __get_builtin_constructor(name)(data)
/usr/lib64/python3.8/hashlib.py:120: in __get_builtin_constructor
raise ValueError('unsupported hash type ' + name)
E ValueError: unsupported hash type whirlpool
========================================================================= short test summary info ==========================================================================
ERROR src/ecdsa/test_malformed_sigs.py - ValueError: unsupported hash type whirlpool
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Interrupted: 1 error during collection !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
============================================================================= 1 error in 1.17s =============================================================================
Metadata
Metadata
Assignees
Labels
Type
Projects
Milestone
Relationships
Development
Select code repository
Activity
tomato42 commentedon Feb 11, 2022
That seems like a misconfigured environment.
The list of tested algorithms is taken from
algorithms_available
list:python-ecdsa/src/ecdsa/test_malformed_sigs.py
Line 43 in 3b49fbe
And that list is imported from
hashlib
:python-ecdsa/src/ecdsa/test_malformed_sigs.py
Lines 5 to 15 in 3b49fbe
the fallback doesn't include
whirlpool
...So it's the
hashlib
module that provides incorrect informationtomato42 commentedon Feb 11, 2022
Also, can't reproduce it on a clean Fedora 35 machine:
kloczek commentedon Feb 14, 2022
tomato42 commentedon Feb 14, 2022
The compilation date is different... are you sure that you are using the distribution provided python?
Not some local version, compiled against openssl 3.0 instead of the 1.1.1 version?
kloczek commentedon Feb 15, 2022
tomato42 commentedon Feb 15, 2022
The issue is that algorithms like ripemd160 and whirlpool have been relegated to legacy provider in OpenSSL. That means that unless the legacy provider is explicitly loaded, they're not available. But Python should detect that and not list them as available.
I know that there have been quite a few changes around OpenSSL 3.0.0 compatibility: python/cpython#30455 so it's likely that not everything was backported to 3.8 branch.
In general, the upstream Python bug is still open: https://bugs.python.org/issue40479
panlinux commentedon May 30, 2022
This is the python3 bug: python/cpython#91257
It has a few PRs listed in the comments, for different branches.
tomato42 commentedon Jun 25, 2022
For now I've filtered the problematic hashes in 82da89c, but we'll want to re-enable them in the future, when python fixes its bug.
kloczek commentedon Jun 25, 2022
tomato42 commentedon Jun 25, 2022
python/cpython#91257
kloczek commentedon Jul 9, 2022