Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.debian.maint.python > #17508

hashlib and sha384

From Rene Engelhard <rene@debian.org>
Newsgroups linux.debian.maint.python
Subject hashlib and sha384
Date 2026-05-31 10:40 +0200
Message-ID <N0JS9-9dZ8-1@gated-at.bofh.it> (permalink)
Organization Debian Project

Show all headers | View raw


Hi,

while trying to get python-xmlsec in shape for xmlsec1 1.3.11 (which will be a transition, and one needed for openssl 4.0.0) I came about the following

After applying the support patch to 1.3.17 - see ##1138515 - (thanks Alexandre for doing the upgrade in the archive so quick) I get a passing test where it segfaulted before
but

tests/test_xmlsec.py .                                                   [100%]Traceback (most recent call last):
   File "<frozen runpy>", line 198, in _run_module_as_main
   File "<frozen runpy>", line 88, in _run_code
   File "/usr/lib/python3/dist-packages/pytest/__main__.py", line 9, in <module>
     raise SystemExit(pytest.console_main())
                      ~~~~~~~~~~~~~~~~~~~^^
   File "/usr/lib/python3/dist-packages/_pytest/config/__init__.py", line 223, in console_main
     code = main()
   File "/usr/lib/python3/dist-packages/_pytest/config/__init__.py", line 199, in main
     ret: ExitCode | int = config.hook.pytest_cmdline_main(config=config)
                           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^
   File "/usr/lib/python3/dist-packages/pluggy/_hooks.py", line 512, in __call__
     return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
            ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   File "/usr/lib/python3/dist-packages/pluggy/_manager.py", line 120, in _hookexec
     return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
            ~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   File "/usr/lib/python3/dist-packages/pluggy/_callers.py", line 167, in _multicall
     raise exception
   File "/usr/lib/python3/dist-packages/pluggy/_callers.py", line 121, in _multicall
     res = hook_impl.function(*args)
   File "/usr/lib/python3/dist-packages/_pytest/main.py", line 365, in pytest_cmdline_main
     return wrap_session(config, _main)
   File "/usr/lib/python3/dist-packages/_pytest/main.py", line 353, in wrap_session
     config.hook.pytest_sessionfinish(
     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
         session=session, exitstatus=session.exitstatus
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
     )
     ^
   File "/usr/lib/python3/dist-packages/pluggy/_hooks.py", line 512, in __call__
     return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
            ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   File "/usr/lib/python3/dist-packages/pluggy/_manager.py", line 120, in _hookexec
     return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
            ~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   File "/usr/lib/python3/dist-packages/pluggy/_callers.py", line 167, in _multicall
     raise exception
   File "/usr/lib/python3/dist-packages/pluggy/_callers.py", line 139, in _multicall
     teardown.throw(exception)
     ~~~~~~~~~~~~~~^^^^^^^^^^^
   File "/usr/lib/python3/dist-packages/_pytest/logging.py", line 873, in pytest_sessionfinish
     return (yield)
             ^^^^^
   File "/usr/lib/python3/dist-packages/pluggy/_callers.py", line 152, in _multicall
     teardown.send(result)
     ~~~~~~~~~~~~~^^^^^^^^
   File "/usr/lib/python3/dist-packages/_pytest/terminal.py", line 970, in pytest_sessionfinish
     self.config.hook.pytest_terminal_summary(
     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
         terminalreporter=self, exitstatus=exitstatus, config=self.config
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
     )
     ^
   File "/usr/lib/python3/dist-packages/pluggy/_hooks.py", line 512, in __call__
     return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
            ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   File "/usr/lib/python3/dist-packages/pluggy/_manager.py", line 120, in _hookexec
     return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
            ~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   File "/usr/lib/python3/dist-packages/pluggy/_callers.py", line 167, in _multicall
     raise exception
   File "/usr/lib/python3/dist-packages/pluggy/_callers.py", line 139, in _multicall
     teardown.throw(exception)
     ~~~~~~~~~~~~~~^^^^^^^^^^^
   File "/usr/lib/python3/dist-packages/_pytest/terminal.py", line 992, in pytest_terminal_summary
     return (yield)
             ^^^^^
   File "/usr/lib/python3/dist-packages/pluggy/_callers.py", line 139, in _multicall
     teardown.throw(exception)
     ~~~~~~~~~~~~~~^^^^^^^^^^^
   File "/usr/lib/python3/dist-packages/_pytest/warnings.py", line 109, in pytest_terminal_summary
     return (yield)
             ^^^^^
   File "/usr/lib/python3/dist-packages/pluggy/_callers.py", line 121, in _multicall
     res = hook_impl.function(*args)
   File "/usr/lib/python3/dist-packages/_hypothesis_pytestplugin.py", line 400, in pytest_terminal_summary
     from hypothesis.internal.observability import _WROTE_TO
   File "/usr/lib/python3/dist-packages/hypothesis/__init__.py", line 20, in <module>
     from hypothesis._settings import HealthCheck, Phase, Verbosity, settings
   File "/usr/lib/python3/dist-packages/hypothesis/_settings.py", line 35, in <module>
     from hypothesis.internal.conjecture.providers import AVAILABLE_PROVIDERS
   File "/usr/lib/python3/dist-packages/hypothesis/internal/conjecture/providers.py", line 37, in <module>
     from hypothesis.internal.conjecture.choice import (
     ...<6 lines>...
     )
   File "/usr/lib/python3/dist-packages/hypothesis/internal/conjecture/choice.py", line 24, in <module>
     from hypothesis.internal.conjecture.utils import identity
   File "/usr/lib/python3/dist-packages/hypothesis/internal/conjecture/utils.py", line 69, in <module>
     SAMPLE_IN_SAMPLER_LABEL = calc_label_from_name("a sample() in Sampler")
   File "/usr/lib/python3/dist-packages/hypothesis/internal/conjecture/utils.py", line 35, in calc_label_from_name
     hashed = hashlib.sha384(name.encode()).digest()
              ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^
_hashlib.UnsupportedDigestmodError: unsupported hash type sha384

happens. (for both 3.13 and 3.14)

 From what I read in https://docs.python.org/3/library/hashlib.html sha384 should have been supported in python anyways and
xmlsec1s build has
checking for SHA384 support... yes
(if it even matters, python3s _hashlib doesn't use xmlsec..)

Am I missing something obvious?

Any idea on why this could fail?

Regards,

Rene

Back to linux.debian.maint.python | Previous | NextNext in thread | Find similar | Unroll thread


Thread

hashlib and sha384 Rene Engelhard <rene@debian.org> - 2026-05-31 10:40 +0200
  Re: hashlib and sha384 Andrey Rakhmatullin <wrar@debian.org> - 2026-05-31 10:50 +0200
    Re: hashlib and sha384 Rene Engelhard <rene@debian.org> - 2026-05-31 11:10 +0200
      Re: hashlib and sha384 Andrey Rakhmatullin <wrar@debian.org> - 2026-05-31 11:40 +0200
        Re: hashlib and sha384 Rene Engelhard <rene@debian.org> - 2026-05-31 13:30 +0200
          Re: hashlib and sha384 Andrey Rakhmatullin <wrar@debian.org> - 2026-05-31 16:40 +0200

csiph-web