…sing the lock (pythonGH-159805)
* pythongh-159786: Convert HACL* update() errors in `_hmac` after releasing the lock
`_hacl_hmac_state_update_once()` converted the HACL* exit code into an
exception while the thread state was detached and, for HMAC.update(),
while the object's mutex was held. On debug builds, this re-attached the
thread state under the mutex and then called PyErr_Occurred() with the
thread state detached in the chunking loop of `_hacl_hmac_state_update()`.
Return the raw HACL* exit code instead and convert it in `_hmac.new()` and
`_hmac.HMAC.update()` once the thread state is re-attached and the mutex
is released, as `hmac_digest_compute_locked()` already does. Release
builds keep ignoring the update() exit code.
Since `_hacl_convert_errno()` is now always called with an attached
thread state, remove the `PyGILState_Ensure()` added by pythongh-135561 and
assert that a thread state is attached instead.
* simplify ifdefs: always check for the hacl error
---------
(cherry picked from commit 0fba211)
Co-authored-by: Bénédikt Tran <10796600+picnixz@users.noreply.github.com>
Co-authored-by: Gregory P. Smith <greg@krypto.org>
_hacl_hmac_state_update_once() converted the HACL* exit code into an
exception while the thread state was detached and, for HMAC.update(),
while the object's mutex was held. On debug builds, this re-attached the
thread state under the mutex and then called PyErr_Occurred() with the
thread state detached in the chunking loop of _hacl_hmac_state_update().
Return the raw HACL* exit code instead and convert it in _hmac.new() and
_hmac.HMAC.update() once the thread state is re-attached and the mutex
is released, as hmac_digest_compute_locked() already does. Release
builds keep ignoring the update() exit code.
Since _hacl_convert_errno() is now always called with an attached
thread state, remove the PyGILState_Ensure() added by gh-135561 and
assert that a thread state is attached instead.
(cherry picked from commit 0fba211)
Co-authored-by: Bénédikt Tran 10796600+picnixz@users.noreply.github.com
Co-authored-by: Gregory P. Smith greg@krypto.org