JFIF$        dd7 

Viewing File: /usr/share/crypto-policies/python/policygenerators/__pycache__/libreswan.cpython-39.opt-1.pyc

a

C�h��@sDddlZddlmZmZddlmZddlmZGdd�de�ZdS)�N)�CalledProcessError�call)�mkstemp�)�ConfigGeneratorc@seZdZdZhd�ZdZddddddd	d
ddd
d�Zdddddddd�Zdddddddddddddd�
Zddddddddddddd�Z	ddddd d!d"d d!d"d#�
Z
d$d%d&d'd(�Zd$d%d&d'd)�Zd$d%d*�Z
ed+d,��Zed-d.��Zed/d0��Zed1d2��Zed3d4��Zd5S)6�LibreswanGenerator�	libreswan>ZipsecZikerz5systemctl try-restart ipsec.service 2>/dev/null || :
�Zdh31Zdh19Zdh20Zdh21Zdh5Zdh14Zdh15Zdh16Zdh18)ZX448ZX25519�	SECP256R1Z	SECP384R1Z	SECP521R1z
FFDHE-6144z
FFDHE-1536�
FFDHE-2048z
FFDHE-3072z
FFDHE-4096z
FFDHE-8192Zaes256Zaes192Zaes128Z
aes_gcm256Z
aes_gcm192Z
aes_gcm128Zchacha20_poly1305)zAES-256-CBCzAES-192-CBCzAES-128-CBCzAES-256-GCMzAES-192-GCMzAES-128-GCMzCHACHA20-POLY1305Zsha2_512Zsha2_256)
�AES-256-CBC-HMAC-SHA2-512�AES-256-CBC-HMAC-SHA2-256�AES-192-CBC-HMAC-SHA2-512�AES-192-CBC-HMAC-SHA2-256�AES-128-CBC-HMAC-SHA2-256zAES-256-GCM-HMAC-SHA2-512zAES-256-GCM-HMAC-SHA2-256zAES-192-GCM-HMAC-SHA2-512zAES-192-GCM-HMAC-SHA2-256zAES-128-GCM-HMAC-SHA2-512zAES-128-GCM-HMAC-SHA2-256zCHACHA20-POLY1305-HMAC-SHA2-512zCHACHA20-POLY1305-HMAC-SHA2-256Zsha1)rrr
rrzAES-256-CBC-HMAC-SHA1zAES-192-CBC-HMAC-SHA1zAES-128-CBC-HMAC-SHA1zAES-256-GCM-AEADzAES-192-GCM-AEADzAES-128-GCM-AEADzCHACHA20-POLY1305-AEADzrsa-sha1zecdsa-sha2_256zecdsa-sha2_384zecdsa-sha2_512zrsa-sha2_256zrsa-sha2_384zrsa-sha2_512)
zRSA-SHA1zECDSA-SHA2-256zECDSA-SHA2-384zECDSA-SHA2-512zRSA-PSS-SHA2-256zRSA-PSS-SHA2-384zRSA-PSS-SHA2-512zRSA-PSS-RSAE-SHA2-256zRSA-PSS-RSAE-SHA2-384zRSA-PSS-RSAE-SHA2-512rr��)�AEAD�
HMAC-SHA2-512�
HMAC-SHA2-256�	HMAC-SHA1)rrrr)r
rcCs||jvrdS|j|S�N�c)�mac_ike_prio_map��cls�key�r�?/usr/share/crypto-policies/python/policygenerators/libreswan.pyZ__get_ike_prioss
z!LibreswanGenerator.__get_ike_priocCs||jvrdS|j|Sr)�mac_esp_prio_maprrrrZ__get_esp_priozs
z!LibreswanGenerator.__get_esp_priocCs||jvrdS|j|Sr)�group_prio_maprrrrZ__get_group_prio�s
z#LibreswanGenerator.__get_group_prioc
Csd}d}|j}d}dd�|dD�}d|vr2d}nd	|vr>d
}|rR|d|d7}|d
7}t|d|jd�}t|d|jd�}d}	|dD]�}
z|j|
}Wnty�Yq�Yn0|d}d}|D]@}
z|j|
d|
}Wnty�Yq�Yn0|�||d�}q�|�sq�||7}d}|D]>}z|j|}Wnt�yJY�qYn0|�||d�}�q|�||d�}|�|	||�}	q�|	�r�|d|	d7}t|d|j	d�}d}	|dD]�}
z|j|
}Wnt�y�Y�q�Yn0|d}d}|D]V}
z|j
|
d|
}Wnt�y"Y�q�Yn0|�s4|}�qF|�||d�}�q�||7}|dd�dk�rd�q�|�|	||�}	�q�|	�r�|d|	d7}d}	t�}|dD]R}z|j|}Wnt�y�Y�q�Yn0||v�r�|�
|�|�|	||�}	�q�|	�r|d|	d7}|S)Nzconn %default
�,r	cSsg|]}|�d�r|�qS)ZIKE)�
startswith)�.0�xrrr�
<listcomp>��z6LibreswanGenerator.generate_config.<locals>.<listcomp>ZprotocolZIKEv2zikev2=insistZIKEv1zikev2=never�	�
z		pfs=yes
�mac)r�group�cipher�-�+z	ike=���z	esp=�signz	authby=)Zenabled�sorted�!_LibreswanGenerator__get_ike_prio�#_LibreswanGenerator__get_group_prio�
cipher_map�KeyError�cipher_prf_map�append�	group_map�!_LibreswanGenerator__get_esp_prio�cipher_mac_map�set�sign_map�add)rZpolicyZcfg�sep�p�s�protoZsorted_macsZ
sorted_groups�tmpr+�cmZcombor)Zmm�ir*Zsigalgsr/Zsmrrr�generate_config�s���

�

z"LibreswanGenerator.generate_configc	Cs�t�dtj�sdSt�\}}d}zzt�|d��}|�|�Wd�n1sN0Yztd|�d�dd�}Wnty�|�d�Yn0Wt�	|�nt�	|�0|r�|�d	�|�d
|���dSdS)Nz/usr/sbin/ipsecT��wz'/usr/sbin/ipsec readwriteconf --config z >/dev/null)�shellz!/usr/sbin/ipsec: Execution failedz/There is an error in libreswan generated policyzPolicy:
F)
�os�access�X_OKr�fdopen�writerrZeprint�unlink)rZconfig�fd�path�ret�frrr�test_config�s&
(�

zLibreswanGenerator.test_configN)�__name__�
__module__�__qualname__ZCONFIG_NAMEZSCOPESZ
RELOAD_CMDr7r3r5r9r;rrr �classmethodr1r8r2rDrRrrrrr
s���
�����
�



_r)	rH�
subprocessrrZtempfilerZconfiggeneratorrrrrrr�<module>s
Back to Directory  nL+D550H?Mx ,D"v]qv;6*Zqn)ZP0!1 A "#a$2Qr D8 a Ri[f\mIykIw0cuFcRı?lO7к_f˓[C$殷WF<_W ԣsKcëIzyQy/_LKℂ;C",pFA:/]=H  ~,ls/9ć:[=/#f;)x{ٛEQ )~ =𘙲r*2~ a _V=' kumFD}KYYC)({ *g&f`툪ry`=^cJ.I](*`wq1dđ#̩͑0;H]u搂@:~וKL Nsh}OIR*8:2 !lDJVo(3=M(zȰ+i*NAr6KnSl)!JJӁ* %݉?|D}d5:eP0R;{$X'xF@.ÊB {,WJuQɲRI;9QE琯62fT.DUJ;*cP A\ILNj!J۱+O\͔]ޒS߼Jȧc%ANolՎprULZԛerE2=XDXgVQeӓk yP7U*omQIs,K`)6\G3t?pgjrmۛجwluGtfh9uyP0D;Uڽ"OXlif$)&|ML0Zrm1[HXPlPR0'G=i2N+0e2]]9VTPO׮7h(F*癈'=QVZDF,d߬~TX G[`le69CR(!S2!P <0x<!1AQ "Raq02Br#SCTb ?Ζ"]mH5WR7k.ۛ!}Q~+yԏz|@T20S~Kek *zFf^2X*(@8r?CIuI|֓>^ExLgNUY+{.RѪ τV׸YTD I62'8Y27'\TP.6d&˦@Vqi|8-OΕ]ʔ U=TL8=;6c| !qfF3aů&~$l}'NWUs$Uk^SV:U# 6w++s&r+nڐ{@29 gL u"TÙM=6(^"7r}=6YݾlCuhquympǦ GjhsǜNlɻ}o7#S6aw4!OSrD57%|?x>L |/nD6?/8w#[)L7+6〼T ATg!%5MmZ/c-{1_Je"|^$'O&ޱմTrb$w)R$& N1EtdU3Uȉ1pM"N*(DNyd96.(jQ)X 5cQɎMyW?Q*!R>6=7)Xj5`J]e8%t!+'!1Q5 !1 AQaqё#2"0BRb?Gt^## .llQT $v,,m㵜5ubV =sY+@d{N! dnO<.-B;_wJt6;QJd.Qc%p{ 1,sNDdFHI0ГoXшe黅XۢF:)[FGXƹ/w_cMeD,ʡcc.WDtA$j@:) -# u c1<@ۗ9F)KJ-hpP]_x[qBlbpʖw q"LFGdƶ*s+ډ_Zc"?%t[IP 6J]#=ɺVvvCGsGh1 >)6|ey?Lӣm,4GWUi`]uJVoVDG< SB6ϏQ@ TiUlyOU0kfV~~}SZ@*WUUi##; s/[=!7}"WN]'(L! ~y5g9T̅JkbM' +s:S +B)v@Mj e Cf jE 0Y\QnzG1д~Wo{T9?`Rmyhsy3!HAD]mc1~2LSu7xT;j$`}4->L#vzŏILS ֭T{rjGKC;bpU=-`BsK.SFw4Mq]ZdHS0)tLg