
    Vh                        d dl mZ d dlZd dlmZ 	 d dlmZ d dlm	Z	 d dl
mZ efdZefdZeZeZd	 Zd
 Zy# e$ r dZY *w xY w)    )annotationsN)sha1)md5)AnsibleError)to_bytesc                l     |       }t        | d      } |j                  |        |j                         S )z* Return a secure hash hex digest of data. surrogate_or_stricterrors)r   update	hexdigest)data	hash_funcdigests      E/home/dcms/DCMS/lib/python3.12/site-packages/ansible/utils/hashing.pysecure_hash_sr   "   s3     [FD!67D
MM$    c                   t         j                  j                  t        | d            r*t         j                  j	                  t        | d            ry |       }d}	 t        t        | d      d      }|j                  |      }|r%|j                  |       |j                  |      }|r%|j                          |j                         S # t        $ r}t        d| d|      d}~ww xY w)	z\ Return a secure hash hex digest of local file, None if file is not present or a directory. r	   r
   strictNi   rbzerror while accessing the file z, error was: )ospathexistsr   isdiropenreadr   closeIOErrorr   r   )filenamer   r   	blocksizeinfileblockes          r   secure_hashr$   +   s     77>>(84IJKrww}}]efnw  ^A  PB[FI_hx0EFMI&MM% KK	*E  	   _QY[\]^^_s    AC /C 	C.C))C.c                D    t         st        d      t        | t               S Nz1MD5 not available.  Possibly running in FIPS mode)_md5
ValueErrorr   )r   s    r   md5sr)   N   s    LMMt$$r   c                D    t         st        d      t        | t               S r&   )r'   r(   r$   )r   s    r   r   r   T   s    LMMx&&r   )
__future__r   r   hashlibr   r   r'   ImportErroransible.errorsr   +ansible.module_utils.common.text.convertersr   r   r$   checksum
checksum_sr)    r   r   <module>r3      sa   $ # 	 #
 ( @ #'  %) ( 
%'u  Ds   9 AA