
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
3
."Édå  ã               @   sD   d dl mZmZ d dlmZ d dlZddlmZ G dd„ deƒZdS )é    )ÚcallÚCalledProcessError)ÚmkstempNé   )ÚConfigGeneratorc               @   sî   e Zd ZdZdddhZdddddd	d
œZdd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*d+œZd,d-d.œZddd/d0d1d2d3d4d5d6d7d8d9d:d;d<œZ	d=d>d?œZ
d@dAdBdCddddDœZdEdFdGdHdIdJdKdLœZedMdN„ ƒZedOdP„ ƒZdQS )RÚGnuTLSGeneratorZgnutlsZtlsZsslz-AEADz-SHA1z-MD5z-SHA256z-SHA384z-SHA512)ZAEADz	HMAC-SHA1zHMAC-MD5zHMAC-SHA2-256zHMAC-SHA2-384zHMAC-SHA2-512z-GROUP-X448z-GROUP-X25519z-GROUP-SECP256R1z-GROUP-SECP384R1z-GROUP-SECP521R1Ú z-GROUP-FFDHE2048z-GROUP-FFDHE3072z-GROUP-FFDHE4096z-GROUP-FFDHE8192)
ZX448ZX25519Z	SECP256R1Z	SECP384R1Z	SECP521R1z
FFDHE-6144z
FFDHE-2048z
FFDHE-3072z
FFDHE-4096z
FFDHE-8192z-SIGN-RSA-MD5z-SIGN-RSA-SHA1z-SIGN-DSA-SHA1z-SIGN-ECDSA-SHA1z-SIGN-RSA-SHA224z-SIGN-DSA-SHA224z-SIGN-ECDSA-SHA224z-SIGN-RSA-SHA256z-SIGN-DSA-SHA256z-SIGN-ECDSA-SHA256z-SIGN-RSA-SHA384z-SIGN-DSA-SHA384z-SIGN-ECDSA-SHA384z-SIGN-RSA-SHA512z-SIGN-DSA-SHA512z-SIGN-ECDSA-SHA512z.-SIGN-RSA-PSS-SHA256:-SIGN-RSA-PSS-RSAE-SHA256z.-SIGN-RSA-PSS-SHA384:-SIGN-RSA-PSS-RSAE-SHA384z.-SIGN-RSA-PSS-SHA512:-SIGN-RSA-PSS-RSAE-SHA512z-SIGN-EDDSA-ED448z-SIGN-EDDSA-ED25519)zRSA-MD5z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-ED448zEDDSA-ED25519z+SIGN-DSA-SHA1z+SIGN-RSA-SHA1)zDSA-SHA1zRSA-SHA1z-AES-256-GCMz-AES-128-GCMz-AES-256-CCMz-AES-128-CCMz-AES-256-CBCz-AES-128-CBCz-CAMELLIA-256-GCMz-CAMELLIA-128-GCMz-CAMELLIA-256-CBCz-CAMELLIA-128-CBCz-CHACHA20-POLY1305z	-3DES-CBCz-ARCFOUR-128)zAES-256-CTRzAES-128-CTRzAES-256-GCMzAES-128-GCMzAES-256-CCMzAES-128-CCMzAES-256-CBCzAES-128-CBCzCAMELLIA-256-GCMzCAMELLIA-128-GCMzCAMELLIA-256-CBCzCAMELLIA-128-CBCzCHACHA20-POLY1305z3DES-CBCzRC4-128z	+3DES-CBCz+ARCFOUR-128)z3DES-CBCzRC4-128z+RSAz+ECDHE-RSA:+ECDHE-ECDSAz+DHE-RSAz+DHE-DSS)ZRSAZECDHEzDHE-RSAzDHE-DSSZPSKzDHE-PSKz	ECDHE-PSKz-VERS-SSL3.0z-VERS-TLS1.0z-VERS-TLS1.1z-VERS-TLS1.2z-VERS-TLS1.3z-VERS-DTLS1.0z-VERS-DTLS1.2)zSSL3.0zTLS1.0zTLS1.1zTLS1.2zTLS1.3zDTLS1.0zDTLS1.2c             C   sz  d}|j }|j}|d rb| j|dƒ}x<|d D ]0}y| j|| j| ƒ}W q. tk
r\   Y q.X q.W |d r´| j|dƒ}x<|d D ]0}y| j|| j| ƒ}W q€ tk
r®   Y q€X q€W |d �rL| j|dƒ}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
�rD   Y nX �qW |jd �rd| j|d	ƒ}|d
 �rþ| j|dƒ}x@|d
 D ]4}y| j|| j	| ƒ}W n tk
�r´   Y nX �q„W x@|d
 D ]4}y| j|| j
| ƒ}W n tk
�rö   Y nX �qÆW x@|d D ]4}y| j|| j| ƒ}W n tk
�r8   Y nX �qW |d �r˜| 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 }|dk�sÌ|dk�rÚ| j|dƒ}n”|dk�sî|dk�rü| j|dƒ}nr|dk�s|dk�r| j|dƒ}nP|dk�s2|dk�r@| j|dƒ}n.|dk�sT|dk�rb| j|dƒ}n| j|dƒ}|d7 }|S )NzSYSTEM=NONEZmacz+MAC-ALLÚgroupz
+GROUP-ALLZsignz	+SIGN-ALLZsha1_in_certsz%VERIFY_ALLOW_SIGN_WITH_SHA1Zcipherz+CIPHER-ALLZkey_exchangeZprotocolz+VERS-ALL:-VERS-DTLS0.9z
+COMP-NULLÚmin_rsa_sizeÚmin_dh_sizei   z%PROFILE_VERY_WEAKi   z%PROFILE_LOWi   z%PROFILE_MEDIUMi   z%PROFILE_HIGHi    z%PROFILE_ULTRAz%PROFILE_FUTUREÚ
)ZenabledZdisabledÚappendÚmac_not_mapÚKeyErrorÚgroup_not_mapÚsign_not_mapÚlegacy_sign_mapZintegersÚcipher_not_mapÚcipher_force_mapÚkey_exchange_mapÚprotocol_not_map)ÚclsZpolicyÚsÚpZipÚir
   r   © r   ú=./usr/share/crypto-policies/python/policygenerators/gnutls.pyÚgenerate_configq   sŽ    







zGnuTLSGenerator.generate_configc             C   s°   t jdt jƒsdS tƒ \}}d}z^t j|dƒ�}|j|ƒ W d Q R X ytd| d dd�}W n tk
rz   | jdƒ Y nX W d t j	|ƒ X |r¬| jd	ƒ | jd
| ƒ dS dS )Nz/usr/bin/gnutls-cliTéÿ   Úwz(/usr/bin/gnutls-cli -l --priority $(cat z3 | sed 's/SYSTEM=//g' | tr --delete '
') >/dev/null)Úshellz%/usr/bin/gnutls-cli: Execution failedz,There is an error in gnutls generated policyz
Policy:
%sF)
ÚosÚaccessÚX_OKr   ÚfdopenÚwriter   r   ZeprintÚunlink)r   ÚconfigÚfdÚpathZretÚfr   r   r   Útest_configÇ   s&    

zGnuTLSGenerator.test_configN)Ú__name__Ú
__module__Ú__qualname__ZCONFIG_NAMEZSCOPESr   r   r   r   r   r   r   r   Úclassmethodr   r+   r   r   r   r   r      s”   
Vr   )	Ú
subprocessr   r   Ztempfiler   r!   Zconfiggeneratorr   r   r   r   r   r   Ú<module>   s   