@@ -518,8 +518,8 @@ raise_unsupported_algorithm_impl(PyObject *exc_type,
518518{
519519 // Since OpenSSL 3.0, if the algorithm is not supported or fetching fails,
520520 // the reason lacks the algorithm name.
521- int errcode = ERR_peek_last_error (), reason_id ;
522- switch (reason_id = ERR_GET_REASON (errcode )) {
521+ int errcode = ERR_peek_last_error ();
522+ switch (ERR_GET_REASON (errcode )) {
523523 case ERR_R_UNSUPPORTED : {
524524 PyObject * text = PyUnicode_FromFormat (fallback_format , format_arg );
525525 if (text != NULL ) {
@@ -688,13 +688,11 @@ disable_fips_property(Py_hash_type py_ht)
688688 * If 'name' is an OpenSSL indexed name, the return value is cached.
689689 */
690690static PY_EVP_MD *
691- get_openssl_evp_md_by_utf8name (_hashlibstate * state ,
692- const char * name , Py_hash_type py_ht )
691+ get_openssl_evp_md_by_utf8name (_hashlibstate * state , const char * name ,
692+ Py_hash_type py_ht )
693693{
694694 PY_EVP_MD * digest = NULL , * other_digest = NULL ;
695- py_hashentry_t * entry = (py_hashentry_t * )_Py_hashtable_get (
696- state -> hashtable , (const void * )name
697- );
695+ py_hashentry_t * entry = _Py_hashtable_get (state -> hashtable , name );
698696
699697 if (entry != NULL ) {
700698 if (!disable_fips_property (py_ht )) {
@@ -1277,19 +1275,13 @@ _hashlib_HASH(_hashlibstate *state, const char *digestname, PyObject *data_obj,
12771275 GET_BUFFER_VIEW_OR_ERROUT (data_obj , & view );
12781276 }
12791277
1280- digest = get_openssl_evp_md_by_utf8name (
1281- state , digestname , usedforsecurity ? Py_ht_evp : Py_ht_evp_nosecurity
1282- );
1278+ Py_hash_type purpose = usedforsecurity ? Py_ht_evp : Py_ht_evp_nosecurity ;
1279+ digest = get_openssl_evp_md_by_utf8name (state , digestname , purpose );
12831280 if (digest == NULL ) {
12841281 goto exit ;
12851282 }
12861283
1287- if ((EVP_MD_flags (digest ) & EVP_MD_FLAG_XOF ) == EVP_MD_FLAG_XOF ) {
1288- type = state -> HASHXOF_type ;
1289- } else {
1290- type = state -> HASH_type ;
1291- }
1292-
1284+ type = PY_EVP_MD_xof (digest ) ? state -> HASHXOF_type : state -> HASH_type ;
12931285 self = new_hash_object (type );
12941286 if (self == NULL ) {
12951287 goto exit ;
@@ -1650,7 +1642,8 @@ pbkdf2_hmac_impl(PyObject *module, const char *hash_name,
16501642 long dklen ;
16511643 int retval ;
16521644
1653- PY_EVP_MD * digest = get_openssl_evp_md_by_utf8name (state , hash_name , Py_ht_pbkdf2 );
1645+ PY_EVP_MD * digest = get_openssl_evp_md_by_utf8name (state , hash_name ,
1646+ Py_ht_pbkdf2 );
16541647 if (digest == NULL ) {
16551648 goto end ;
16561649 }
0 commit comments