a
    kxg                     @   sJ   d dl Z d dlZd dlZzd dlZW n ey:   dZY n0 dddZdS )    NTc                    s    fd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                    s    t   fdd}|S )Nc                     sb   z.rt d urt j d ntj d W n$ tyR   td  dY n0 | i |S )N)usedforsecurityzhash digest 'z' is not available.)_hashlibnewhashlib
ValueErrorunittestZSkipTest)argskwargs)
digestnamefuncopensslr    1/usr/lib/python3.9/test/support/hashlib_helper.pywrapper   s    

z7requires_hashdigest.<locals>.decorator.<locals>.wrapper)	functoolswraps)r   r   r
   r   r   )r   r   	decorator   s    z&requires_hashdigest.<locals>.decoratorr   )r
   r   r   r   r   r   r   requires_hashdigest   s    r   )NT)r   r   r   r   ImportErrorr   r   r   r   r   <module>   s   
