Ë
    òT•js  ã                   óH   — d dl Z d dlZd dlZ	 d dlZdd„Zy# e$ r dZY Œw xY w)é    Nc                 ó   ‡ ‡‡‡— ˆˆ ˆˆfd„Š‰S )aî  Decorator raising SkipTest if a hashing algorithm is not available

    The hashing algorithm could be missing or blocked by a strict crypto
    policy.

    If 'openssl' is True, then the decorator checks that OpenSSL provides
    the algorithm. Otherwise the check falls back to built-in
    implementations. The usedforsecurity flag is passed to the constructor.

    ValueError: [digital envelope routines: EVP_DigestInit_ex] disabled for FIPS
    ValueError: unsupported hash type md4
    c                 óF  •‡ — t        ‰ t        «      rn‰ j                  j                  d«      }|€+ˆ fd„}‰ j                  dz   |_        ‰ j
                  |_        n|j                  }t         ‰|«      «      }|‰ _        ‰ S t        j                  ‰ «      ˆˆ ˆˆfd„«       }|S )NÚ
setUpClassc                 ó"   •— t         ‰| �  «        y )N)Úsuperr   )ÚclsÚfunc_or_classs    €ú2/usr/lib/python3.12/test/support/hashlib_helper.pyr   z:requires_hashdigest.<locals>.decorator.<locals>.setUpClass   s   ø€ Ü˜-¨Ñ8Õ:ó    z.setUpClassc                  óÐ   •— 	 ‰rt         �t        j                  ‰‰¬«       nt        j                  ‰‰¬«        ‰| i |¤ŽS # t        $ r t	        j
                  d‰› d�«      ‚w xY w)N)Úusedforsecurityzhash digest 'z' is not available.)Ú_hashlibÚnewÚhashlibÚ
ValueErrorÚunittestÚSkipTest)ÚargsÚkwargsÚ
digestnamer	   Úopensslr   s     €€€€r
   Úwrapperz7requires_hashdigest.<locals>.decorator.<locals>.wrapper&   so   ø€ ðÙœxÐ3Ü—L‘L ¸_ÖMä—K‘K 
¸OÕLñ
 ! $Ð1¨&Ñ1Ð1øô	 ò Ü×'Ñ'Ø# J <Ð/BÐCóð ðús   ƒ7A Á#A%)Ú
isinstanceÚtypeÚ__dict__ÚgetÚ__qualname__Ú
__module__Ú__func__Úclassmethodr   Ú	functoolsÚwraps)r	   r   r   Ú	decoratorr   r   r   s   `  €€€€r
   r#   z&requires_hashdigest.<locals>.decorator   s™   ù€ Ü�m¤TÔ*Ø&×/Ñ/×3Ñ3°LÓAˆJØÐ!ô;à*7×*DÑ*DÀ}Ñ*T�
Ô'Ø(5×(@Ñ(@�
Õ%à'×0Ñ0�
Ü$¡Y¨zÓ%:Ó;ˆJØ'1ˆMÔ$Ø Ð ä	�‰˜Ó	'ö
	2ó 
(ð
	2ð ˆr   © )r   r   r   r#   s   ```@r
   Úrequires_hashdigestr%      s   û€ ÷ð6 Ðr   )NT)r!   r   r   r   ÚImportErrorr%   r$   r   r
   ú<module>r'      s1   ðÛ Û Û ðÛô
(øð	 ò Ø‚Hðús   Ž —! !