Current File : //lib64/python3.9/site-packages/cryptography/hazmat/backends/openssl/__pycache__/dh.cpython-39.pyc
a

�a�+�@s�ddlmZmZddlmZddlmZdd�Zdd�ZGdd	�d	ej	�Z
ed
�dd�ZGd
d�dej
�ZGdd�dej�ZdS)�)�UnsupportedAlgorithm�_Reasons)�
serialization)�dhcCs�|j}|j}|�|�}|�||jk�|�||j�}|jr�|�d�}|�	||j||j�|�
|d�}|�||j||j�}|�|dk�|S�N�	BIGNUM **r�)�_lib�_ffiZDHparams_dup�openssl_assert�NULL�gcZDH_freeZCRYPTOGRAPHY_IS_LIBRESSL�new�DH_get0_pqg�BN_dupZDH_set0_pqg)�dh_cdata�backend�libZffi�param_cdata�qZq_dup�res�r�M/usr/lib64/python3.9/site-packages/cryptography/hazmat/backends/openssl/dh.py�_dh_params_dups

rcCst||�}t||�S�N)r�
_DHParameters)rrrrrr�_dh_cdata_to_parameterss
rc@sJeZdZdd�Zejd�dd�Zejd�dd�Ze	j
e	jed�d	d
�Z
dS)rcCs||_||_dSr)�_backend�	_dh_cdata)�selfrrrrr�__init__#sz_DHParameters.__init__��returncCs�|jj�d�}|jj�d�}|jj�d�}|jj�|j|||�|j�|d|jjjk�|j�|d|jjjk�|d|jjjkr�d}n|j�|d�}t	j
|j�|d�|j�|d�|d�S)Nrr��p�gr)rr
rr	rrrr�
_bn_to_intr�DHParameterNumbers)rr$r%r�q_valrrr�parameter_numbers's�z_DHParameters.parameter_numberscCs|j�|�Sr)rZgenerate_dh_private_key�rrrr�generate_private_key8sz"_DHParameters.generate_private_key��encoding�formatr"cCs~|tjjurtd��|jjjsl|jj�d�}|jj�	|j
|jjj||jjj�|d|jjjkrltdt
j��|j�|||j
�S)Nz%Only PKCS3 serialization is supportedrr�'DH X9.42 serialization is not supported)r�ParameterFormatZPKCS3�
ValueErrorrr	�Cryptography_HAS_EVP_PKEY_DHXr
rrrrrr�UNSUPPORTED_SERIALIZATIONZ_parameter_bytes�rr-r.rrrr�parameter_bytes;s 
��z_DHParameters.parameter_bytesN)�__name__�
__module__�__qualname__r rr'r)�DHPrivateKeyr+r�Encodingr0�bytesr5rrrrr"s�rr!cCsL|j�d�}|j�|||jj|jj�|�|d|jjk�|j�|d�S)Nrr)r
rr	rrrZBN_num_bits)rrr$rrr�_get_dh_num_bitsSsr<c@s�eZdZdd�Zeed�dd��Zejd�dd�Z	ej
ed�d	d
�Zdd�Z
ej
d�d
d�Zejd�dd�Zejejejed�dd�ZdS)�
_DHPrivateKeycCs&||_||_||_|jj�|�|_dSr)rr�	_evp_pkeyr	ZDH_size�_key_size_bytes�rrr�evp_pkeyrrrr [sz_DHPrivateKey.__init__r!cCst|j|j�Sr)r<rrr*rrr�key_sizeasz_DHPrivateKey.key_sizecCsT|jj�d�}|jj�d�}|jj�d�}|jj�|j|||�|j�|d|jjjk�|j�|d|jjjk�|d|jjjkr�d}n|j�|d�}|jj�d�}|jj�d�}|jj�	|j||�|j�|d|jjjk�|j�|d|jjjk�t
jt
jt
j
|j�|d�|j�|d�|d�|j�|d�d�|j�|d�d�S)Nrrr#�r)�y)�public_numbers�x)rr
rr	rrrrr&�DH_get0_keyr�DHPrivateNumbers�DHPublicNumbersr')rr$r%rr(�pub_keyZpriv_keyrrr�private_numberses2���z_DHPrivateKey.private_numbers)�peer_public_keyr"cCsVt|t�std��|jj�|j|jjj�}|j�	||jjjk�|jj�
||jjj�}|jj�|�}|j�	|dk�|jj�
||j�}|�|dk�|jj�d�}|jj�||jjj|�}|�|dk�|j�	|ddk�|jj�d|d�}|jj�|||�}|j�	|dk�|jj�||d�dd�}|jt|�}|dk�rRd||}|S)Nz%peer_public_key must be a DHPublicKeyrzsize_t *rzunsigned char[]�)�
isinstance�_DHPublicKey�	TypeErrorrr	ZEVP_PKEY_CTX_newr>r
rrr
ZEVP_PKEY_CTX_freeZEVP_PKEY_derive_initZEVP_PKEY_derive_set_peer�_exchange_assertrZEVP_PKEY_derive�bufferr?�len)rrL�ctxrZkeylen�buf�keyZpadrrr�exchange�s6
���
z_DHPrivateKey.exchangecCs|s|j��}td|��dS)NzError computing shared key.)rZ_consume_errors_with_textr1)r�okZerrors_with_textrrrrQ�s
�z_DHPrivateKey._exchange_assertcCs�t|j|j�}|jj�d�}|jj�|j||jjj�|j�|d|jjjk�|jj�	|d�}|j�||jjjk�|jj�
|||jjj�}|j�|dk�|j�|�}t|j||�Sr)
rrrr
rr	rGrrrZDH_set0_keyZ_dh_cdata_to_evp_pkeyrO)rrrJZpub_key_duprrArrr�
public_key�s��z_DHPrivateKey.public_keycCst|j|j�Sr�rrrr*rrr�
parameters�sz_DHPrivateKey.parameters)r-r.�encryption_algorithmr"cCs�|tjjurtd��|jjjsl|jj�d�}|jj�	|j
|jjj||jjj�|d|jjjkrltdt
j��|j�|||||j|j
�S)Nz0DH private keys support only PKCS8 serializationrrr/)r�
PrivateFormatZPKCS8r1rr	r2r
rrrrrrr3Z_private_key_bytesr>)rr-r.r\rrrr�
private_bytes�s2�
���z_DHPrivateKey.private_bytesN)r6r7r8r �property�intrBrrHrK�DHPublicKeyr;rWrQrY�DHParametersr[rr:r]ZKeySerializationEncryptionr^rrrrr=Zs$�r=c@s\eZdZdd�Zeed�dd��Zejd�dd�Z	ej
d�dd	�Zej
ejed
�dd�Zd
S)rOcCs&||_||_||_t|j|j�|_dSr)rrr>r<�_key_size_bitsr@rrrr �sz_DHPublicKey.__init__r!cCs|jSr)rcr*rrrrB�sz_DHPublicKey.key_sizecCs|jj�d�}|jj�d�}|jj�d�}|jj�|j|||�|j�|d|jjjk�|j�|d|jjjk�|d|jjjkr�d}n|j�|d�}|jj�d�}|jj�	|j||jjj�|j�|d|jjjk�t
jt
j|j�|d�|j�|d�|d�|j�|d�d�S)Nrrr#rC)
rr
rr	rrrrr&rGrrIr')rr$r%rr(rJrrrrE�s,���z_DHPublicKey.public_numberscCst|j|j�SrrZr*rrrr[sz_DHPublicKey.parametersr,cCs�|tjjurtd��|jjjsl|jj�d�}|jj�	|j
|jjj||jjj�|d|jjjkrltdt
j��|j�||||jd�S)Nz>DH public keys support only SubjectPublicKeyInfo serializationrrr/)r�PublicFormatZSubjectPublicKeyInfor1rr	r2r
rrrrrrr3Z_public_key_bytesr>r4rrr�public_bytes
s(�
���z_DHPublicKey.public_bytesN)r6r7r8r r_r`rBrrIrErbr[rr:rdr;rerrrrrO�s�rON)Zcryptography.exceptionsrrZcryptography.hazmat.primitivesrZ)cryptography.hazmat.primitives.asymmetricrrrrbrr`r<r9r=rarOrrrr�<module>s1