+
        -                     ~    ^ RI t ^ RIt^ RIt^ RIHt ^RIHt  ! R R]4      t ! R R]4      t ! R R	]4      t	R
 t
R# )    N)mkstemp)ConfigGeneratorc                     a  ] tR t^t o / RRbRRbRRbRRbR	R
bRRbRRbRRbRRbRRbRRbRRbRRbRRbRRbRRbRRbRRRRRRRR /CtR!R"R#R$R%R&R'R(R)R*R+R,/tR!R-R#R.R%R/R'R0R)R1R+R2/tRRRSRTRURVRWRXRYRZR[R\R]R^R_R`RaRbRcRdReRfRg/tRhRiRjRk/tRlRmRnRoRpRqRrRsRtRuRvRwRxRy/t	R3R4R5RR6R7R8R9R:R;R<R=R>R?R@RARBRCRDRE/
t
R3RFR5RR6RGR8RHR:RIR<RJR>RKR@RLRBRMRDRN/
t]RO 4       tRPtV tRQ# )zOpenSSHGeneratorzAES-256-GCMzaes256-gcm@openssh.comzAES-256-CTRz
aes256-ctrzAES-192-GCM zAES-192-CTRz
aes192-ctrzAES-128-GCMzaes128-gcm@openssh.comzAES-128-CTRz
aes128-ctrzCHACHA20-POLY1305zchacha20-poly1305@openssh.comzCAMELLIA-256-GCMzAES-256-CCMzAES-192-CCMzAES-128-CCMzCAMELLIA-128-GCMzAES-256-CBCz
aes256-cbczAES-192-CBCz
aes192-cbczAES-128-CBCz
aes128-cbczCAMELLIA-256-CBCzCAMELLIA-128-CBCzRC4-128zDES-CBCzCAMELLIA-128-CTSz3DES-CBCz3des-cbczHMAC-MD5zhmac-md5-etm@openssh.comzUMAC-64zumac-64-etm@openssh.comzUMAC-128zumac-128-etm@openssh.comz	HMAC-SHA1zhmac-sha1-etm@openssh.comzHMAC-SHA2-256zhmac-sha2-256-etm@openssh.comzHMAC-SHA2-512zhmac-sha2-512-etm@openssh.comzhmac-md5zumac-64@openssh.comzumac-128@openssh.comz	hmac-sha1zhmac-sha2-256zhmac-sha2-512zRSA-SHA1zssh-rsazDSA-SHA1zRSA-SHA2-256zrsa-sha2-256zRSA-SHA2-512zrsa-sha2-512zECDSA-SHA2-256zecdsa-sha2-nistp256zECDSA-SHA2-256-FIDOz"sk-ecdsa-sha2-nistp256@openssh.comzECDSA-SHA2-384zecdsa-sha2-nistp384zECDSA-SHA2-512zecdsa-sha2-nistp521zEDDSA-ED25519zssh-ed25519zEDDSA-ED25519-FIDOzsk-ssh-ed25519@openssh.comzssh-rsa-cert-v01@openssh.comz!rsa-sha2-256-cert-v01@openssh.comz!rsa-sha2-512-cert-v01@openssh.comz(ecdsa-sha2-nistp256-cert-v01@openssh.comz+sk-ecdsa-sha2-nistp256-cert-v01@openssh.comz(ecdsa-sha2-nistp384-cert-v01@openssh.comz(ecdsa-sha2-nistp521-cert-v01@openssh.comz ssh-ed25519-cert-v01@openssh.comz#sk-ssh-ed25519-cert-v01@openssh.comc           	     
   VP                   pR pRpR pVR,           F'  p	 V P                  WP                  V	,          V4      pK)  	  V'       d   VRV R2,          pR pVP                  R,          R8w  d5   VR,           F'  p	 V P                  WP
                  V	,          V4      pK)  	  VP                  R,          R8w  d5   VR,           F'  p	 V P                  WP                  V	,          V4      pK)  	  V'       d   VR	V R2,          p. p
. pVR
,           F  pVR,           F  pVP                  R,          '       d?    V
P                  V P                  W3,          4        VP                  W<V3,          4       VR,           F7  p V
P                  W,W3,          4        VP                  W<W3,          4       K9  	  K  	  K  	  V'       d   VRRP                  V4       R2,          pM	VR,          pV
'       d   VRRP                  V
4       R2,          pR pVR,           Ff  p	 V P                  WP                  V	,          V4      pVP                  R,          '       g   KB   V P                  WP                  V	,          V4      pKh  	  V'       d0   V'       d   VRV R2,          pVRV R2,          pVRV R2,          pR pVR,           F'  p	 V P                  WP                  V	,          V4      pK)  	  V'       d   VRV R2,          pVP                  R,          ^ 8  d   VRVP                  R,           R2,          pV#   \         d     EK>  i ; i  \         d     EK  i ; i  \         d     EK  i ; i  \         d     EL.i ; i  \         d     EL&i ; i  \         d     ELi ; i  \         d     EKB  i ; i  \         d     ELi ; i  \         d     EK  i ; i  \         d     EK.  i ; i)r   ,cipherzCiphers 
etmDISABLE_ETMmacDISABLE_NON_ETMzMACs key_exchangehasharbitrary_dh_groupsgroupzGSSAPIKexAlgorithms zGSSAPIKeyExchange no
zKexAlgorithms sign	ssh_certszHostKeyAlgorithms zPubkeyAcceptedAlgorithms zHostbasedAcceptedAlgorithms zCASignatureAlgorithms min_rsa_sizezRequiredRSASize )enabledappend
cipher_mapKeyErrorenumsmac_map_etmmac_mapintegersextendgx_mapjoinsign_mapsign_map_certs)clspolicylocal_kx_maplocal_gss_kx_mapdo_host_keypcfgsepsikxsgss_kxskxhgs   &&&&&          =/usr/share/crypto-policies/python/policygenerators/openssh.pygenerate_options!OpenSSHGenerator.generate_optionsx   s    NN8AJJq.."3S9  XaS##C<<-/uXX

1ooa&8#>A 
 <<"33uXX

1kk!nc:A  U1#R= CN##BvYY??#899

3::rg#67'7Q'@A 7A

<Q
#;<'7Q
'CD $  $* )#((7*;)<B??C++C^CHHSM?"55C6AJJq,,q/37 {++

1&8&8&;SAA   +A3b11.qc44C1!B77C6AJJq,,q/37  +A3b11C??>*Q.%foon&E%FbIIC
q         $  $ 
 $  $   
      s   #M#M#M1#N%NN(%N:+#O*#O#O2MMM.-M.1N NNNN%$N%(N7	6N7	:O
		O
	OOO/.O/2PP N)ECDHE	SECP521R1SHA2-512)zecdh-sha2-nistp521)r7   	SECP384R1zSHA2-384)zecdh-sha2-nistp384)r7   	SECP256R1SHA2-256)zecdh-sha2-nistp256)r7   X25519r<   )zcurve25519-sha256zcurve25519-sha256@libssh.orgDHE
FFDHE-1024SHA1)zdiffie-hellman-group1-sha1)r?   
FFDHE-2048rA   )zdiffie-hellman-group14-sha1)r?   rB   r<   )zdiffie-hellman-group14-sha256)r?   
FFDHE-4096r9   )zdiffie-hellman-group16-sha512)r?   z
FFDHE-8192r9   )zdiffie-hellman-group18-sha512)SNTRUPr=   r9   )zsntrup761x25519-sha512z"sntrup761x25519-sha512@openssh.com)zKEM-ECDHzMLKEM768-X25519r<   )zmlkem768x25519-sha256)r?   rA   )z"diffie-hellman-group-exchange-sha1)r?   r<   )z$diffie-hellman-group-exchange-sha256)DHE-GSSrA   )zgss-gex-sha1-rE   r@   rA   )zgss-group1-sha1-)rE   rB   rA   )zgss-group14-sha1-)rE   rB   r<   )zgss-group14-sha256-)	ECDHE-GSSr;   r<   )zgss-nistp256-sha256-)rG   r=   r<   )zgss-curve25519-sha256-)rE   rC   r9   )zgss-group16-sha512-)__name__
__module____qualname____firstlineno__r   r   r   kx_mapr    
gss_kx_mapr"   r#   classmethodr4   __static_attributes____classdictcell____classdict__s   @r3   r   r      s    /| 	r 	|	
 	/ 	| 	< 	B 	r 	r 	r 	B 	| 	| 	|  	B!" 	B#$ 	22BJ+J2 	.,.088K 	J(*[G 	+,C*,C*,C' *
 	&'F%'G)+M)+M)+M( +
 	4 6
#F. 	@FF 	/)+@)+A-/G.0I+-H-/GJ 	IB/C//:H 	2B;;DLDD;CN b b    r   c                   D   a  ] tR t^t o Rt]R 4       t]R 4       tRtV t	R# )OpenSSHClientGeneratoropensshc                    VP                  0 Rm4      p\        V P                  4      p\        V P                  4      pV P	                  W#VRR7      # )sshFr(   >   rX   rV   openssh-clientscopeddictrL   rM   r4   r$   unscoped_policyr%   r&   r'   s   &&   r3   generate_config&OpenSSHClientGenerator.generate_config   sP     ''(LMCJJ'/##F:J05 $ 7 	7rS   c                   \         P                  ! R 4      R8X  d   R# \         P                  ! R\         P                  4      '       g   R# \	        4       w  r#^p \         P
                  ! VR4      ;_uu_ 4       pVP                  V4       RRR4        \        P                  ! RV R2RR7      p\         P                  ! V4       V'       d(   V P                  R
4       V P                  RV 24       R# R#   + '       g   i     Lt; i  \        P                   d    T P                  R	4        Li ; i  \         P                  ! T4       i ; i)OLD_OPENSSH1T/usr/bin/sshwNz/usr/bin/ssh -G -F z bogus654_server >/dev/nullshellz/usr/bin/ssh: Execution failed4There is an error in OpenSSH server generated policyPolicy:
F)osgetenvaccessX_OKr   fdopenwrite
subprocesscallCalledProcessErroreprintunlink)r$   configfdpathretfs   &&    r3   test_config"OpenSSHClientGenerator.test_config   s    99]#s*yy119		2s##q $= oo(;D6 BC 'CJNP
 IIdOJJMNJJ6(+, $#
 00 =

;<= IIdOsB   D6 9C7D6 D
 7D	D6 
&D30D6 2D33D6 6Er6   N)
rH   rI   rJ   rK   CONFIG_NAMErN   r`   r{   rO   rP   rQ   s   @r3   rU   rU      s0     K7 7  rS   rU   c                   h   a  ] tR tRt o RtRt]R 4       t]R 4       t]R 4       t	]R 4       t
RtV tR	# )
OpenSSHServerGeneratori  opensshserverz4systemctl try-restart sshd.service 2>/dev/null || :
c                    VP                  0 Rm4      p\        V P                  4      p\        V P                  4      pVR VR V P	                  W#VRR7      # )rX   TrY   >   rX   rV   openssh-serverr>   rF   r[   r^   s   &&   r3   r`   &OpenSSHServerGenerator.generate_config  sb     ''(LMCJJ'/67>?##F:J04 $ 6 	6rS   c                   \        4       w  r\        P                  ! V4       ^p \        P                  ! RV R2RR7      pV'       d   V P                  R4       R# V#   \        P
                   d    T P                  R4        LEi ; i)   z&/usr/bin/ssh-keygen -t rsa -b 3072 -f z -N "" >/dev/nullTrg   z%/usr/bin/ssh-keygen: Execution failedz4SSH Keygen failed when testing OpenSSH server policyr   )r   rk   ru   rq   rr   rs   rt   )r$   _fdrx   ry   s   &   r3   _test_setup"OpenSSHServerGenerator._test_setup  s    I	
		$	@// #((,v->#@GKMC
 JJMN ,, 	@JJ>?	@s   A &BBc                F    V'       d   \         P                  ! V4       R # R # N)rk   ru   )r$   rx   s   &&r3   _test_cleanup$OpenSSHServerGenerator._test_cleanup)  s    IIdO rS   c                    \         P                  ! R 4      R8X  d   R# \         P                  ! R\         P                  4      '       g   R# V P	                  4       pV'       g   R# \        4       w  r4^p \         P                  ! VR4      ;_uu_ 4       pVP                  V4       RRR4        \        P                  ! RV RV R	2RR
7      p\         P                  ! V4       V P                  V4       V'       d(   V P                  R4       V P                  RV 24       R# R#   + '       g   i     L; i  \        P                   d    T P                  R4        Li ; i  \         P                  ! T4       T P                  T4       i ; i)rc   rd   Tz/usr/sbin/sshdFrf   Nz/usr/sbin/sshd -T -h z -f z >/dev/nullrg   z /usr/sbin/sshd: Execution failedri   rj   )rk   rl   rm   rn   r   r   ro   rp   rq   rr   rs   rt   ru   r   )r$   rv   host_key_filenamerw   rx   ry   rz   s   &&     r3   r{   "OpenSSHServerGenerator.test_config.  s;    99]#s*yy)27733OO- 9	12s##q $? oo ',,=+>d4& I3'3:>@ IIdO/0JJMNJJ6(+,! $# 00 ?

=>? IIdO/0sB   4E$ D%%E$ .D8 %D5	0E$ 8&E!E$  E!!E$ $)Fr6   N)rH   rI   rJ   rK   r}   
RELOAD_CMDrN   r`   r   r   r{   rO   rP   rQ   s   @r3   r   r     s`     !K IJ	6 	6      rS   r   c                      \         P                  ! R R.R\         P                  R7      P                  P	                  4       p \
        P                  ! RV 4      pV'       dI   \        ;QJ d"    . R VP                  4        4       F  NK  	  5# ! R VP                  4        4       4      #  R#   \        \        3 d     R# i ; i)re   z-VF)checkstderrzOpenSSH_(\d+).(\d+)p.*c              3   8   "   T F  p\        V4      x  K  	  R # 5ir   )int).0ns   & r3   	<genexpr>#_openssh_version.<locals>.<genexpr>W  s     6AQs   N)rq   runPIPEr   decoderematchtuplegroupsFileNotFoundErrorPermissionError)ssh_versionvers     r3   _openssh_versionr   Q  s     nnnd%;5,6OO==CVFFH 	hh0+>5665656666   / s$   AB- "
B- - B- B- -CC)rk   r   rq   tempfiler   configgeneratorr   r   rU   r   r   r6   rS   r3   <module>r      sH    
 	   ,M M`%- %PH- HV	rS   