File: //lib/python3.10/test/support/__pycache__/hashlib_helper.cpython-310.pyc
o
    E�hs  �                   @   sJ   d dl Z d dlZd dlZzd dlZW n ey   dZY nw ddd�ZdS )�    NTc                    s   � ���fdd�� � 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 � t�r.� j�d�}|d u r � fdd�}� jd |_� j|_n|j}t�|��}|� _� S t	�
� ��� ��fdd��}|S )N�
setUpClassc                    s   t � | ���  d S )N)�superr   )�cls��
func_or_class� �2/usr/lib/python3.10/test/support/hashlib_helper.pyr      s   z:requires_hashdigest.<locals>.decorator.<locals>.setUpClassz.setUpClassc                     s^   z�rt d urt j� �d� ntj� �d� W n ty'   t�d� � d���w �| i |��S )N)�usedforsecurityz
hash digest 'z' is not available.)�_hashlib�new�hashlib�
ValueError�unittest�SkipTest)�args�kwargs)�
digestnamer   �opensslr	   r   r   �wrapper&