§
    *‚Kgs  ã                   óL   — d dl Z d dlZd dlZ	 d dlZn# e$ r dZY nw xY wdd„ZdS )é    NTc                 ó   ‡ ‡‡‡— ˆˆ ˆˆ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                 óB  •‡ — t          ‰ t          ¦  «        re‰ j                             d¦  «        }|€!ˆ fd„}‰ j        dz   |_        ‰ j        |_        n|j        }t           ‰|¦  «        ¦  «        }|‰ _        ‰ S t          j
        ‰ ¦  «        ˆˆ ˆˆfd„¦   «         }|S )NÚ
setUpClassc                 óL   •— t          ‰| ¦  «                             ¦   «          d S )N)Úsuperr   )ÚclsÚfunc_or_classs    €ú2/usr/lib/python3.11/test/support/hashlib_helper.pyr   z:requires_hashdigest.<locals>.decorator.<locals>.setUpClass   s%   ø€ Ý˜-¨Ñ-Ô-×8Ò8Ñ:Ô:Ð:Ð:Ð:ó    z.setUpClassc                  óÐ   •— 	 ‰rt           �t          j        ‰‰¬¦  «         nt          j        ‰‰¬¦  «         n&# t          $ r t	          j        d‰› d�¦  «        ‚w xY w ‰| i |¤ŽS )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&   s™   ø€ ðØð M�xÐ3Ý”L ¸_ÐMÑMÔMÐMÐMå”K 
¸OÐLÑLÔLÐLøøÝð ð ð ÝÔ'ØC JÐCÐCÐCñô ð ðøøøð !�= $Ð1¨&Ð1Ð1Ð1s	   ƒ6: º#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ÔAˆJØÐ!ð;ð ;ð ;ð ;ð ;à*7Ô*DÀ}Ñ*T�
Ô'Ø(5Ô(@�
Ô%Ð%à'Ô0�
Ý$ Y Y¨zÑ%:Ô%:Ñ;Ô;ˆJØ'1ˆMÔ$Ø Ð å	Œ˜Ñ	'Ô	'ð
	2ð 
	2ð 
	2ð 
	2ð 
	2ð 
	2ð 
	2ñ 
(Ô	'ð
	2ð ˆr   © )r   r   r   r#   s   ```@r
   Úrequires_hashdigestr%      s6   øøøø€ ðð ð ð ð ð ð ð ð6 Ðr   )NT)r!   r   r   r   ÚImportErrorr%   r$   r   r
   ú<module>r'      su   ðØ Ð Ð Ð Ø €€€Ø €€€ðØ€O€O€O€OøØð ð ð Ø€H€H€Hðøøøð(ð (ð (ð (ð (ð (s   Ž “œ