
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!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 q”X q”W x>|d D ]2}y| j|| j| ƒ}W qÒ tk
�r   Y qÒX qÒW 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    