shell bypass 403
3
."�d� � @ s@ d dl mZmZ ddlmZ G dd� de�ZG dd� de�ZdS ) � )�check_output�CalledProcessError� )�ConfigGeneratorc @ s� e Zd ZdZdddhZdddddddd d
ddddd
ddd�Zdddddddd�Zddddddddddd�
Zd d!d"�Zd#d$d%d&d'd(�Z e
d)d*� �Ze
d+d,� �Ze
d-d.� �Z
e
d/d0� �Zd1S )2�OpenSSLGenerator�opensslZtlsZssl� z-AES256z-AES128z-SHA256z -CHACHA20z-SEEDz!IDEAz!DESz-3DESz!RC4z!RC2z
!eNULL:!aNULL)zAES-256-CTRzAES-128-CTRzAES-256-GCMzAES-128-GCMzAES-256-CBCzAES-128-CBCzCHACHA20-POLY1305zSEED-CBCzIDEA-CBCzDES-CBCzRC4-40z DES40-CBCz3DES-CBCzRC4-128zRC2-CBCZNULLZkRSAZkEECDHZkPSKZkDHEPSKZkEDHZ kECDHEPSK)�RSA�ECDHE�PSKzDHE-PSKzDHE-RSAzDHE-DSSz ECDHE-PSKz-kRSAz-kEECDHz-aRSAz-aDSSz-kPSKz-kDHEPSKz
-kECDHEPSK)
ZANONZDHZECDHr r
zDHE-RSAzDHE-DSSr zDHE-PSKz ECDHE-PSKz!MD5z-SHA1)zHMAC-MD5z HMAC-SHA1ZTLS_AES_256_GCM_SHA384ZTLS_AES_128_GCM_SHA256ZTLS_CHACHA20_POLY1305_SHA256ZTLS_AES_128_CCM_SHA256ZTLS_AES_128_CCM_8_SHA256)zAES-256-GCMzAES-128-GCMzCHACHA20-POLY1305zAES-128-CCMzAES-128-CCM8c C s� d}|j }|j}|jd }|jd }|dk s4|dk rB| j|d�}nH|dk sR|dk r`| j|d�}n*|dk sp|dk r~| j|d �}n| j|d
�}x<|d D ]0}y| j|| j| �}W q� tk
r� Y q�X q�W x>|d D ]2}y| j|| j| �}W q� tk
�r Y q�X q�W x@|d D ]4}y| j|| j| �}W n tk
�rB Y nX �qW d
|d k�rrd|d k�rr| j|d�}x@|d D ]4}y| j|| j| �}W n tk
�r� Y nX �q|W | j|d�}| j|d�}| j|d�}| j|d�}|S )Nr �min_dh_size�min_rsa_sizei� z@SECLEVEL=0i z@SECLEVEL=1i z@SECLEVEL=2z@SECLEVEL=3Zkey_exchange�cipherzAES-128-CCMzAES-256-CCMz-AESCCMZmacz-SHA384z -CAMELLIAz-ARIAz-AESCCM8) �enabledZdisabledZintegers�append�key_exchange_map�KeyError�key_exchange_not_map�cipher_not_map�mac_not_map)�cls�policy�s�pZipr r
�i� r �>./usr/share/crypto-policies/python/policygenerators/openssl.py�generate_ciphersF sN
z!OpenSSLGenerator.generate_ciphersc C sL d}|j }x<|d D ]0}y| j|| j| �}W q tk
rB Y qX qW |S )Nr r )r r �ciphersuite_mapr )r r r r r r r r �generate_ciphersuites{ s
z&OpenSSLGenerator.generate_ciphersuitesc C s
| j |�S )N)r )r r r r r �generate_config� s z OpenSSLGenerator.generate_configc C s� d}yt dd|g�}W n> tk
rB | jd� | jd| � dS tk
rT dS X d|ksfd |kr�| jd
� | jd| � dS dS )N� r Zciphersz-There is an error in openssl generated policyz
policy: %sFTs NULLs ADHz0There is NULL or ADH in openssl generated policyz
Policy:
%s)r r Zeprint�OSError)r �config�outputr r r �test_config� s
zOpenSSLGenerator.test_configN)�__name__�
__module__�__qualname__�CONFIG_NAMEZSCOPESr r r r r �classmethodr r r r% r r r r r s\
5r c @ sl e Zd ZdZdddddddd d
�Zddd
dddddddddddddddddd�Zed d!� �Zed"d#� �Zd$S )%�OpenSSLConfigGeneratorZ
opensslcnfr ZSSLv3ZTLSv1zTLSv1.1zTLSv1.2zTLSv1.3ZDTLSv1zDTLSv1.2)NzSSL3.0zTLS1.0zTLS1.1zTLS1.2zTLS1.3zDTLS1.0zDTLS1.2zRSA+SHA1zDSA+SHA1z
ECDSA+SHA1z
RSA+SHA224z
DSA+SHA224zECDSA+SHA224z
RSA+SHA256z
DSA+SHA256zECDSA+SHA256z
RSA+SHA384z
DSA+SHA384zECDSA+SHA384z
RSA+SHA512z
DSA+SHA512zECDSA+SHA512z&rsa_pss_pss_sha256:rsa_pss_rsae_sha256z&rsa_pss_pss_sha384:rsa_pss_rsae_sha384z&rsa_pss_pss_sha512:rsa_pss_rsae_sha512Zed25519Zed448)zRSA-SHA1zDSA-SHA1z
ECDSA-SHA1zRSA-SHA2-224zDSA-SHA2-224zECDSA-SHA2-224zRSA-SHA2-256zDSA-SHA2-256zECDSA-SHA2-256zRSA-SHA2-384zDSA-SHA2-384zECDSA-SHA2-384zRSA-SHA2-512zDSA-SHA2-512zECDSA-SHA2-512zRSA-PSS-SHA2-256zRSA-PSS-SHA2-384zRSA-PSS-SHA2-512z
EDDSA-ED25519zEDDSA-ED448c s |j }d}|� j|�7 }|d7 }|d7 }|� j|�7 }|d7 }|jrd|d7 }|d� j|j � d�7 }|jr�|d7 }|d� j|j � d�7 }|jr�|d7 }|d� j|j � d�7 }|jr�|d7 }|d� j|j � d�7 }� fd d
�|d D �}|dd
j|� 7 }|S )NzCipherString = �
zCiphersuites = zTLS.MinProtocol =� zTLS.MaxProtocol =zDTLS.MinProtocol =zDTLS.MaxProtocol =c s g | ]}|� j kr� j | �qS r )�sign_map)�.0r )r r r �
<listcomp>� s z:OpenSSLConfigGenerator.generate_config.<locals>.<listcomp>ZsignzSignatureAlgorithms = �:) r r r Zmin_tls_version�protocol_mapZmax_tls_versionZmin_dtls_versionZmax_dtls_version�join)r r r r Zsig_algsr )r r r � s.
z&OpenSSLConfigGenerator.generate_configc C s dS )NTr )r r# r r r r% � s z"OpenSSLConfigGenerator.test_configN) r&