Current File : //kunden/usr/share/crypto-policies/python/policygenerators/__pycache__/libreswan.cpython-39.pyc |
a
�
�g� � @ sD d dl Z d dlmZmZ d dlmZ ddlmZ G dd� de�ZdS )� N)�CalledProcessError�call)�mkstemp� )�ConfigGeneratorc @ s e Zd ZdZh d�ZdZddddddd d
ddd
d�Zdddddddd�Zdddddddddddddd�
Zddddddddddddd�Z ddddd d!d"d d!d"d#�
Z
d$d%d&d'd(�Zd$d%d&d'd)�Zd$d%d*�Z
ed+d,� �Zed-d.� �Zed/d0� �Zed1d2� �Zed3d4� �Zd5S )6�LibreswanGenerator� libreswan> ZipsecZiker z5systemctl 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 r r
r r zAES-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_512zrsa-sha2_256zrsa-sha2_384zrsa-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-512r r � � )�AEAD�
HMAC-SHA2-512�
HMAC-SHA2-256� HMAC-SHA1)r r r r )r
r c C s || j vrdS | j | S �N�c )�mac_ike_prio_map��cls�key� r �?/usr/share/crypto-policies/python/policygenerators/libreswan.pyZ__get_ike_prios s
z!LibreswanGenerator.__get_ike_prioc C s || j vrdS | j | S r )�mac_esp_prio_mapr r r r Z__get_esp_prioz s
z!LibreswanGenerator.__get_esp_prioc C s || j vrdS | j | S r )�group_prio_mapr r r r Z__get_group_prio� s
z#LibreswanGenerator.__get_group_prioc
C s d}d}|j }d}dd� |d D �}d|v r2d}nd |v r>d
}|rR|d| d 7 }|d
7 }t|d | jd�}t|d | jd�}d} |d D ]�}
z| j|
}W n ty� Y q�Y n0 |d }d}|D ]@}
z| j|
d |
}W n ty� Y q�Y n0 | �||d�}q�|�sq�||7 }d}|D ]>}z| j| }W n t�yJ Y �qY n0 | �||d�}�q| �||d�}| �| ||�} q�| �r�|d| d 7 }t|d | j d�}d} |d D ]�}
z| j|
}W n t�y� Y �q�Y n0 |d }d}|D ]V}
z| j
|
d |
}W n t�y" Y �q�Y n0 |�s4|} �qF| �||d�}�q�||7 }|dd � dk�rd�q�| �| ||�} �q�| �r�|d| d 7 }d} t� }|d D ]R}z| j| }W n t�y� Y �q�Y n0 ||v�r�|�
|� | �| ||�} �q�| �r|d| d 7 }|S )Nzconn %default
�,r c S s g | ]}|� d �r|�qS )ZIKE)�
startswith)�.0�xr r r �
<listcomp>� � z6LibreswanGenerator.generate_config.<locals>.<listcomp>ZprotocolZIKEv2zikev2=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)r ZpolicyZcfg�sep�p�s�protoZsorted_macsZ
sorted_groups�tmpr+ �cmZcombor) Zmm�ir* Zsigalgsr/ Zsmr r r �generate_config� s� ��
�
z"LibreswanGenerator.generate_configc C s� t �dt j�sdS t� \}}d}zzt �|d��}|�|� W d � n1 sN0 Y ztd|� d�dd�}W n ty� | �d� Y n0 W t � |� nt � |� 0 |r�| �d � | �d
|� �� dS dS )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�writer r Zeprint�unlink)r Zconfig�fd�path�ret�fr r r �test_config� s&