
    VhJ	                         d dl mZmZmZ eZd dlmZ d dl	Z	d dl
Z
d dlZ ej                  d      Z ej                  d      Z G d de      Zd Zdd	Zdd
Zy)    )absolute_importdivisionprint_function)AVAILABLE_HASH_ALGORITHMSNz +z^[0-9a-f]{2}$c                       e Zd Zy)FingerprintErrorN)__name__
__module____qualname__     m/home/dcms/DCMS/lib/python3.12/site-packages/ansible_collections/community/hrobot/plugins/module_utils/ssh.pyr   r      s    r   r   c                 l    dj                  t        j                  | j                               d d       S )N    )join	_SPACE_REsplitstrip)
public_keys    r   remove_commentr      s*    88IOOJ$4$4$67;<<r   c                    d| v r| j                  d      } n)t        dt        |       d      D cg c]
  }| ||dz     } }t        |       |k7  r$t        dj	                  |t        |                   t        |       D ]m  \  }}|j                         }t        |      dk  rdj	                  |      }t        j                  |      st        dj	                  ||dz   |            || |<   o dj                  |       S c c}w )N:r   r   zTFingerprint must consist of {0} 8-bit hex numbers: got {1} 8-bit hex numbers insteadz0{0}zOFingerprint must consist of {0} 8-bit hex numbers: number {1} is invalid: "{2}"   )
r   rangelenr   format	enumeratelower_FINGERPRINT_PARTmatchr   )fingerprintsizeipartnew_parts        r   normalize_fingerprintr'      s   
k!'',5:1c+>NPQ5RS{1QU+SS
;4biijnpst  qA  BC 	C[) "4::<x=1}}X.H &&x0"ahhimopstotvz{} }!A" 88K   Ts   C>c                    	 t         j                  | j                               d   } 	 t        j                  |       } 	 t        |   } |       }|j                  |        t        |j!                         |      S # t        $ r t	        d      w xY w# t        j                  t        f$ r}t	        dj                  |            d }~ww xY w# t        $ r) t	        dj                  |j                                     w xY w)Nr   zhError while extracting fingerprint from public key data: cannot split public key into at least two partsz<Error while extracting fingerprint from public key data: {0}zCHash algorithm {0} is not available. Possibly running in FIPS mode.)r#   )r   r   r   
IndexErrorr   base64	b64decodebinasciiError	TypeErrorr   _AVAILABLE_HASH_ALGORITHMSKeyErrorupperupdater'   	hexdigest)r   algr#   exc	algorithmdigests         r   extract_fingerprintr8   0   s   x__Z%5%5%78;
X%%j1
g.s3	 [F
MM* !1!1!3$??  xvx 	xx
 NNI& XJQQRUVX 	XX
  gQXXY\YbYbYdeg 	ggs-   &A; B 	C ;BC,CC2D )   )md5r9   )
__future__r   r   r   type__metaclass__ansible.module_utils.basicr   r/   r*   r,   recompiler   r    	Exceptionr   r   r'   r8   r   r   r   <module>rB      s^    A @ ^   	 BJJt	BJJ/ 	y 	=!&@r   