Open itsrutledge-sudo opened 3 months ago
I'm not super confident I know what's happening here, but:
[digital envelope routines] unsupported
is usually an error you get from OpenSSL when you're asking it to use an algorithm it doesn't support.uname
string mentions fips
a couple times, in the release
and version
section.I am drawing the conclusion that when Python calls out to OpenSSL to make the MD5 for non-security purposes, it fails for security reasons. IMHO this is an issue with Python, not aqtinstall. Go ahead and google "Python", "FIPS" and "multiprocessing"; I'm betting this guy's blog will pop up a lot, suggesting ways to rebuild Python: https://www.gyanblog.com/security/
I'm not sure how to fix this conclusively, but here are some possible workarounds:
concurrency: 1
in your aqt settings.ini file: see https://aqtinstall.readthedocs.io/en/latest/configuration.html#settings Installation could take around 4x longer than usual, since you won't be using concurrency.Good luck, and please let us know how it went!
I think hmac.new()
can take usedforsecurity
argument when Python 3.9 and later.
https://docs.python.org/3/library/hashlib.html#hashlib.new
Your log tells us
digest = hmac.new(authkey, message, 'md5').digest()
no usedforsecurity=false
there. This can be improved to add it.
Python manual expresses that
Changed in version 3.12: For any of the MD5, SHA1, SHA2, or SHA3 algorithms that the linked OpenSSL does not provide we fall back to a verified implementation from the HACL* project.
https://docs.python.org/3/library/hashlib.html#hash-algorithms
You may have a chance to try Python 3.12.x
I found that Python 3.12 and later improved the multiprocessing with stronger HMAC
I think it is worth trying python 3.12 and later.
Bug description
Produced on my machine when running: /home/runner/.local/bin/aqt install-qt --outputdir ~/Qt linux desktop 6.7.0 linux_gcc_64
Expected behavior
Expected it to install.
aqt and python version
INFO : aqtinstall(aqt) v3.1.18 on Python 3.10.12 [CPython GCC 11.4.0]
Operating System
Linux/Unix
Relevant log output
Code of Conduct