python / python/cpython

hashlib.algorithms_available doesn't account for backends loaded dynamically at runtime

Offen
#92,874 4 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

stdlib topic-SSL type-bug
Vorherrschende Sprache
Python
Sterne
77.2k
Forks
36k
PR-Merge-Kennzahlen
PR-Kennzahlen ausstehend

Beschreibung

Bug report

If additional OpenSSL backends are loaded at runtime (this happens e.g. when importing PyOpenSSL), the hashlib.algorithms_available doesn't get updated for the newly available hashes.

Trivial reproducer:

>>> import ctypes, hashlib
>>> ctypes.CDLL("libssl.so").OSSL_PROVIDER_load(None, b"legacy")
-1311283920
>>> "md4" in hashlib.algorithms_available
False
>>> hashlib.new("md4")
<md4 _hashlib.HASH object @ 0x7f404308faf0>

Your environment

  • CPython versions tested on: 3.11.0b1, 3.10.4 with 1b6acaad9a18b2498386c60f24351ab749061e3a backported, 3.9.12
  • Operating system and architecture: Gentoo Linux amd64
  • OpenSSL version: 3.0.3

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

Beginne mit den Einstiegspunkten hashlib.algorithms_available und hashlib.new und bilde das Verhalten nach, nachdem OpenSSLs Legacy-Provider zur Laufzeit geladen wurde. Verfolge, wie die Menge der verfügbaren Hashes befüllt wird, und überprüfe anschließend, dass von einem neu geladenen Backend bereitgestellte Hashes in algorithms_available erscheinen, während hashlib.new weiterhin funktioniert.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
python
Bereich
cryptography
Issue-Typ
Bug
Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
45/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.