name : nss.cpython-39.opt-1.pyc
a

�
�g��@sTddlZddlZddlZddlmZmZddlmZddlm	Z	Gdd�de	�Z
dS)�N)�CalledProcessError�call)�mkstemp�)�ConfigGeneratorc@s�eZdZdZhd�Zddddddd	�Zd
ddd
ddddddddd�Zdddddd�Zddddddddddddddddd �Zddddd!d"d#d$d%d&d'�
Z	d(d)d*d+d,d-d.d/�Z
d0d1d2d3d4�Zed5d6��Z
ed7d8��Zd9S):�NSSGenerator�nss>rZsslZtls��	HMAC-SHA1�HMAC-MD5zHMAC-SHA256zHMAC-SHA384zHMAC-SHA512)ZAEADr
rz
HMAC-SHA2-256z
HMAC-SHA2-384z
HMAC-SHA2-512�SHA1�MD5ZSHA224ZSHA256ZSHA384ZSHA512)rr
zSHA2-224zSHA2-256zSHA2-384zSHA2-512zSHA3-256zSHA3-384zSHA3-512z	SHAKE-128z	SHAKE-256ZGOSTR94Z
CURVE25519�	SECP256R1�	SECP384R1�	SECP521R1)ZX25519ZX448rrrZrc2Zrc4z
aes256-gcmz
aes128-gcmz
aes256-cbcz
aes128-cbczcamellia256-cbczcamellia128-cbczchacha20-poly1305zdes-ede3-cbc)zAES-256-CTRzAES-128-CTRzRC2-CBCzRC4-128zAES-256-GCMzAES-128-GCMzAES-256-CBCzAES-128-CBCzCAMELLIA-256-CBCzCAMELLIA-128-CBCzCAMELLIA-256-GCMzCAMELLIA-128-GCMzAES-256-CCMzAES-128-CCMzCHACHA20-POLY1305z3DES-CBC�RSA�DHE-RSA�DHE-DSSzECDHE-RSA:ECDHE-ECDSAzECDH-RSA:ECDH-ECDSAz
DH-RSA:DH-DSS)
ZPSKzDHE-PSKz	ECDHE-PSKzRSA-PSKrrrZECDHEZECDHZDHzssl3.0ztls1.0ztls1.1ztls1.2ztls1.3zdtls1.0zdtls1.2)zSSL3.0zTLS1.0zTLS1.1zTLS1.2zTLS1.3zDTLS1.0zDTLS1.2zRSA-PSSzRSA-PKCSZECDSAZDSA)zRSA-PSS-zRSA-zECDSA-zDSA-c	Cs�|j}d}|d7}|d7}|d7}d}|dD].}z|�||j|�}Wq.tyZYq.0q.|dD].}z|�||j|�}Wqfty�Yqf0qf|dD].}z|�||j|�}Wq�ty�Yq�0q�|d	D]0}z|�||j|�}Wq�t�yYq�0q�|d
D]2}z|�||j|�}Wnt�y>Yn0�qt�	dd�d
k}|j
ddk�rv|�sv|�|d�}t�}|dD]N}|j�
�D]<\}}	|�|��r�|	|v�r�|�|	�|�||	�}�q��q��q�|j�r�|j|j}
|�|d|
�}n|�|d�}|j�r,|j|j}
|�|d|
�}n|�|d�}|�|dt|jd��}|�|dt|jd��}|�|dt|jd��}||d7}|S)Nz	library=
zname=Policy
zNSS=flags=policyOnly,moduleDB
zconfig="disallow=ALL allow=r	Zmac�groupZcipher�hashZkey_exchangeZNSS_NO_TLS_REQUIRE_EMS�0�1Z__emsZENFORCEzTLS-REQUIRE-EMS�signztls-version-min=ztls-version-min=0zdtls-version-min=zdtls-version-min=0zDH-MIN=Zmin_dh_sizezDSA-MIN=Zmin_dsa_sizezRSA-MIN=Zmin_rsa_sizez"


)Zenabled�append�mac_map�KeyError�	curve_map�
cipher_map�hash_map�key_exchange_map�os�getenvZenums�set�sign_prefix_ordmap�items�
startswith�addZmin_tls_version�protocol_mapZmin_dtls_version�strZintegers)�clsZpolicy�pZcfg�s�iZno_tls_require_emsZenabled_sigalgs�prefixZsigalgZminver�r.�9/usr/share/crypto-policies/python/policygenerators/nss.py�generate_configfsn


zNSSGenerator.generate_configc	CsVtj�d�}t�|�}t�dd�dk}d}z|�d�s:d}WntyX|�d�Yn0|rf|sfd	nd
}t	�\}}d}	z�t�
|d��}
|
�|�Wd�n1s�0Yztd
|�d|�d�dd�}	Wnt
y�|�d�Yn0Wt�|�nt�|�0|	dk�r.|�d�|�d|���dS|	�rR|�d�|�d|���dSdS)NZnss3ZNSS_LAXrrTs3.80Fz9Cannot determine nss version with ctypes, assuming >=3.80z-f value -f identifierr	��wz/usr/bin/nss-policy-check � z
>/dev/null)�shellz+/usr/bin/nss-policy-check: Execution failed�z*There is a warning in NSS generated policyzPolicy:
z)There is an error in NSS generated policy)�ctypes�utilZfind_libraryZCDLLr r!ZNSS_VersionCheck�AttributeErrorZeprintr�fdopen�writerr�unlink)r)ZconfigZnss_pathZnss_libZnss_laxZnss_is_lax_by_default�options�fd�path�ret�fr.r.r/�test_config�sH

���
(�



zNSSGenerator.test_configN)�__name__�
__module__�__qualname__ZCONFIG_NAMEZSCOPESrrrrrr'r#�classmethodr0rAr.r.r.r/rs��
��	���
�
Gr)r6Zctypes.utilr �
subprocessrrZtempfilerZconfiggeneratorrrr.r.r.r/�<module>s

© 2025 Cubjrnet7