
    x[h
              
          % S r SSKrSSKrSSKrSSKJrJr  SSKJr  SSK	J
r
  SSKJr  SSKJrJr  SSKJr  SS	KJr  SS
KJr  S\/\/ S.r\\S'   \R0                  " \5      rS rSS jrS r SS jrS\S\
S\S\ SS4
S jr!g)z;SSH AuthKey Fingerprints: Log fingerprints of user SSH keys    N)ssh_utilutil)Cloud)Config)
MetaSchema)ALL_DISTROSug_util)log_util)PER_INSTANCE)SimpleTablecc_ssh_authkey_fingerprints)iddistros	frequencyactivate_by_schema_keysmetac                 p    / n[        S[        U 5      S5       H  nUR                  XUS-    5        M     U$ )Nr      )rangelenappend)bin_hashsplit_upis      N/usr/lib/python3/dist-packages/cloudinit/config/cc_ssh_authkey_fingerprints.py_split_hashr      s8    H1c(mQ'QU+, (O    c                    U (       d  g [         R                  " U5      nUR                  [        R                  " U 5      5        SR                  [        UR                  5       5      5      $ ! [        [        4 a     gf = f)N :?)
hashlibnewupdatebase64	b64decodejoinr   	hexdigest	TypeError
ValueError)b64_text	hash_methhashers      r   _gen_fingerprintr.   &   sh    Y'f&&x01xxF$4$4$6788z"  	s   A"A- -B ?B c                    [        U R                  U R                  U R                  U R                  /5      (       aL  U R                  (       a;  U R                  R                  5       R                  5       [        R                  ;   a  gg)NTF)	anykeytyper%   commentoptionslowerstripr   VALID_KEY_TYPES)entrys    r   _is_printable_keyr8   5   sW    
EMM5<<FGGMM##%++-1I1IIr   c                    U(       d!  U< SU < S3n[         R                  " USSS9  g SSU-  SS	/n[        U5      nU H  n[        U5      (       d  M  UR                  =(       d    S
[        UR                  U5      =(       d    S
UR                  =(       d    S
UR                  =(       d    S
/n	UR                  U	5        M     UR                  5       n
U
R                  5       n[        [        U[        S95      n[        R                  " SU< SU < 3SU5      /nUR!                  U5        U H   n[         R                  " U< U< S3SSS9  M"     g )Nz3no authorized SSH keys fingerprints found for user z.
TF)consolestderrKeytypezFingerprint (%s)OptionsComment-)keyzAuthorized keys from z
 for user +
)textr;   r:   )r
   	multi_logr   r8   r1   r.   r%   r3   r2   add_row
get_string
splitlinesr   maxr   centerextend)userkey_fnkey_entriesr,   prefixmessage
tbl_fieldstblr7   row	authtbl_sauthtbl_linesmax_lenlineslines                  r   _pprint_key_entriesrX   ?   s4     t 	 	7D?i(	J j
!CU##$ y9@S$$	C KK   I((*M#m-.G5;TB	
E 
LL#T*5$	
 r   namecfgcloudargsreturnc                    [         R                  " UR                  SS5      5      (       a  [        R	                  SU 5        g [         R
                  " USS5      n[        R                  " XR                  5      u  pVUR                  5        Hm  u  pxUR                  S5      (       d  UR                  S5      (       a  [        R	                  SU5        MI  [        R                  " U5      u  p[        XyX5        Mo     g )	Nno_ssh_fingerprintsFz>Skipping module named %s, logging of SSH fingerprints disabledauthkey_hashsha256no_create_homesystemzXSkipping printing of ssh fingerprints for user '%s' because no home directory is created)r   is_truegetLOGdebugget_cfg_option_strr	   normalize_users_groupsdistroitemsr   extract_authorized_keysrX   )rY   rZ   r[   r\   r,   users_groups	user_name_cfgrL   rM   s              r   handlerq   j   s    ||CGG159::		L	
 	''^XFI55c<<HU ;;=	88$%%(););II/
  ( @ @ KI{F )r   )ra   )ra   z	ci-info: )"__doc__r%   r"   logging	cloudinitr   r   cloudinit.cloudr   cloudinit.configr   cloudinit.config.schemar   cloudinit.distrosr   r	   cloudinit.logr
   cloudinit.settingsr   cloudinit.simpletabler   r   __annotations__	getLogger__name__rf   r   r.   r8   rX   strlistrq    r   r   <module>r      s    B    $ ! # . 2 " + - (}!	j  ! ;F(
VG G6 G% Gt G Gr   