
­­­­­­­­­­­­­­­­­­
<!DOCTYPE html>
<html>
3
."d                 @   s@   d dl mZmZ ddlmZ G dd deZG dd deZdS )	    )check_outputCalledProcessError   )ConfigGeneratorc               @   s   e Zd ZdZdddhZdddddddd	d
ddddddddZddddddddZddddddddddd
Zd d!d"Zd#d$d%d&d'd(Z	e
d)d* Ze
d+d, Ze
d-d. Ze
d/d0 Zd1S )2OpenSSLGeneratoropensslZtlsZssl z-AES256z-AES128z-SHA256z	-CHACHA20z-SEEDz!IDEAz!DESz-3DESz!RC4z!RC2z!eNULL:!aNULL)zAES-256-CTRzAES-128-CTRzAES-256-GCMzAES-128-GCMzAES-256-CBCzAES-128-CBCzCHACHA20-POLY1305zSEED-CBCzIDEA-CBCzDES-CBCzRC4-40z	DES40-CBCz3DES-CBCzRC4-128zRC2-CBCZNULLZkRSAZkEECDHZkPSKZkDHEPSKZkEDHZ	kECDHEPSK)RSAECDHEPSKzDHE-PSKzDHE-RSAzDHE-DSSz	ECDHE-PSKz-kRSAz-kEECDHz-aRSAz-aDSSz-kPSKz-kDHEPSKz
-kECDHEPSK)
ZANONZDHZECDHr	   r
   zDHE-RSAzDHE-DSSr   zDHE-PSKz	ECDHE-PSKz!MD5z-SHA1)zHMAC-MD5z	HMAC-SHA1ZTLS_AES_256_GCM_SHA384ZTLS_AES_128_GCM_SHA256ZTLS_CHACHA20_POLY1305_SHA256ZTLS_AES_128_CCM_SHA256ZTLS_AES_128_CCM_8_SHA256)zAES-256-GCMzAES-128-GCMzCHACHA20-POLY1305zAES-128-CCMzAES-128-CCM8c             C   s  d}|j }|j}|jd }|jd }|dk s4|dk rB| j|d}nH|dk sR|dk r`| j|d}n*|dk sp|dk r~| j|d	}n| j|d
}x<|d D ]0}y| j|| j| }W q tk
r   Y qX qW x>|d D ]2}y| j|| j| }W q tk
r   Y qX qW x@|d D ]4}y| j|| j| }W n tk
rB   Y nX qW d|d krrd|d krr| j|d}x@|d D ]4}y| j|| j| }W n tk
r   Y nX 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=3Zkey_exchangecipherzAES-128-CCMzAES-256-CCMz-AESCCMZmacz-SHA384z	-CAMELLIAz-ARIAz-AESCCM8)	enabledZdisabledZintegersappendkey_exchange_mapKeyErrorkey_exchange_not_mapcipher_not_mapmac_not_map)clspolicyspZipr   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 tk
rB   Y qX qW |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}yt dd|g}W n> tk
rB   | jd | jd|  dS  tk
rT   dS X d|ksfd	|kr| jd
 | jd|  dS dS )N    r   Zciphersz-There is an error in openssl generated policyz
policy: %sFTs   NULLs   ADHz0There is NULL or ADH in openssl generated policyz
Policy:
%s)r   r   ZeprintOSError)r   configoutputr   r   r   test_config   s    

zOpenSSLGenerator.test_configN)__name__
__module____qualname__CONFIG_NAMEZSCOPESr   r   r   r   r   classmethodr   r   r    r%   r   r   r   r   r      s\   
5r   c               @   sl   e Zd ZdZdddddddd	d
ZdddddddddddddddddddddZed d! Zed"d# Zd$S )%OpenSSLConfigGeneratorZ
opensslcnfr   ZSSLv3ZTLSv1zTLSv1.1zTLSv1.2zTLSv1.3ZDTLSv1zDTLSv1.2)NzSSL3.0zTLS1.0zTLS1.1zTLS1.2zTLS1.3zDTLS1.0zDTLS1.2zRSA+SHA1zDSA+SHA1z
ECDSA+SHA1z
RSA+SHA224z
DSA+SHA224zECDSA+SHA224z
RSA+SHA256z
DSA+SHA256zECDSA+SHA256z
RSA+SHA384z
DSA+SHA384zECDSA+SHA384z
RSA+SHA512z
DSA+SHA512zECDSA+SHA512z&rsa_pss_pss_sha256:rsa_pss_rsae_sha256z&rsa_pss_pss_sha384:rsa_pss_rsae_sha384z&rsa_pss_pss_sha512:rsa_pss_rsae_sha512Zed25519Zed448)zRSA-SHA1zDSA-SHA1z
ECDSA-SHA1zRSA-SHA2-224zDSA-SHA2-224zECDSA-SHA2-224zRSA-SHA2-256zDSA-SHA2-256zECDSA-SHA2-256zRSA-SHA2-384zDSA-SHA2-384zECDSA-SHA2-384zRSA-SHA2-512zDSA-SHA2-512zECDSA-SHA2-512zRSA-PSS-SHA2-256zRSA-PSS-SHA2-384zRSA-PSS-SHA2-512zEDDSA-ED25519zEDDSA-ED448c                s  |j }d}| j|7 }|d7 }|d7 }| j|7 }|d7 }|jrd|d7 }|d j|j  d7 }|jr|d7 }|d j|j  d7 }|jr|d7 }|d j|j  d7 }|jr|d7 }|d j|j  d7 } fd	d
|d D }|ddj| 7 }|S )NzCipherString = 
zCiphersuites = zTLS.MinProtocol = zTLS.MaxProtocol =zDTLS.MinProtocol =zDTLS.MaxProtocol =c                s    g | ]}| j kr j | qS r   )sign_map).0r   )r   r   r   
<listcomp>   s   z:OpenSSLConfigGenerator.generate_config.<locals>.<listcomp>ZsignzSignatureAlgorithms = :)	r   r   r   Zmin_tls_versionprotocol_mapZmax_tls_versionZmin_dtls_versionZmax_dtls_versionjoin)r   r   r   r   Zsig_algsr   )r   r   r       s.    
z&OpenSSLConfigGenerator.generate_configc             C   s   dS )NTr   )r   r#   r   r   r   r%      s    z"OpenSSLConfigGenerator.test_configN)	r&   r'   r(   r)   r2   r.   r*   r    r%   r   r   r   r   r+      s>   r+   N)
subprocessr   r   Zconfiggeneratorr   r   r+   r   r   r   r   <module>   s    