
­­­­­­­­­­­­­­­­­­
<!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 qX qW |d rL| j|d}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
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 qW x@|d
 D ]4}y| j|| j
| }W n tk
r   Y nX qW 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   