a ¹aÉ+ ã @ s€ d dl mZmZ d dlmZ d dlmZ dd„ Zdd„ ZG dd „ d ej ƒZ ed œdd„ZG d d„ dej ƒZG dd„ dejƒZdS )é )ÚUnsupportedAlgorithmÚ_Reasons)Ú serialization)Údhc C sŒ |j }|j}| | ¡}| ||jk¡ | ||j¡}|jrˆ| d¡}| | |j||j¡ | |d ¡}| ||j||j¡}| |dk¡ |S ©Nú BIGNUM **r é )Ú_libÚ_ffiZDHparams_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_dup s r c C s t | |ƒ}t||ƒS ©N)r Ú _DHParameters)r r r r r r Ú_dh_cdata_to_parameters s r c @ sJ e Zd Zdd„ Zejdœdd„Zejdœdd„Ze j e jedœd d „Z dS )r c C s || _ || _d S r )Ú_backendÚ _dh_cdata)Úselfr r r r r Ú__init__# s z_DHParameters.__init__©Úreturnc C sÄ | j j d¡}| j j d¡}| j j d¡}| j j | j|||¡ | j |d | j jjk¡ | j |d | j jjk¡ |d | j jjkrŒd }n| j |d ¡}t j | j |d ¡| j |d ¡|dS )Nr r ©ÚpÚgr )r r r r r r r r Ú _bn_to_intr ÚDHParameterNumbers)r r$ r% r Úq_valr r r Úparameter_numbers' s ýz_DHParameters.parameter_numbersc C s | j | ¡S r )r Zgenerate_dh_private_key©r r r r Úgenerate_private_key8 s z"_DHParameters.generate_private_key©ÚencodingÚformatr" c C s~ |t jjurtdƒ‚| jjjsl| jj d¡}| jj | j | jjj|| jjj¡ |d | jjjkrltdt jƒ‚| j ||| j ¡S )Nz%Only PKCS3 serialization is supportedr r ú'DH X9.42 serialization is not supported)r ÚParameterFormatZPKCS3Ú ValueErrorr r ÚCryptography_HAS_EVP_PKEY_DHXr r r r r r r ÚUNSUPPORTED_SERIALIZATIONZ_parameter_bytes©r r- r. r r r r Úparameter_bytes; s üþz_DHParameters.parameter_bytesN)Ú__name__Ú __module__Ú__qualname__r r r' r) ÚDHPrivateKeyr+ r ÚEncodingr0 Úbytesr5 r r r r r " s ür r! c C sL | j d¡}| j ||| j j| j j¡ | |d | j jk¡ | j |d ¡S )Nr r )r r r r r r ZBN_num_bits)r r r$ r r r Ú_get_dh_num_bitsS s r<