U
    ¶[Öeė  ć                   @   sP   d dl Z d dlmZ d dlmZ d dlmZ dd Zdd Zd	d
 Z	dd Z
dS )é    N)Śutils)Śhashes)Ś	Prehashedc                 C   sś   | j  || jj”}|  || jjk” | j || j j”}| j  |”}|  |dk” | j  ||j	”}|  |dk” | j 
d”}| j  || jj|”}|  |dk” |  |d dk” | j 
d|d ”}| j  |||”}|dkrątd| j ||d ”d d  S )Né   zsize_t *r   zunsigned char[]z1Null shared key derived from public/private pair.)Z_libZEVP_PKEY_CTX_newZ_ffiZNULLZopenssl_assertŚgcZEVP_PKEY_CTX_freeZEVP_PKEY_derive_initZEVP_PKEY_derive_set_peerZ	_evp_pkeyŚnewZEVP_PKEY_deriveŚ
ValueErrorŚbuffer)ŚbackendZevp_pkeyZpeer_public_keyŚctxŚresZkeylenŚbuf© r   śl/var/www/html/services/stratfitenv/lib/python3.8/site-packages/cryptography/hazmat/backends/openssl/utils.pyŚ_evp_pkey_derive   s     r   c                 C   sN   t |ts*t || ”}| |” | ” }n|j}t||jkrFt	d||fS )NzNThe provided data must be the same length as the hash algorithm's digest size.)
Ś
isinstancer   r   ZHashŚupdateŚfinalizeŚ
_algorithmŚlenŚdigest_sizer   )r
   ŚdataŚ	algorithmZhash_ctxr   r   r   Ś_calculate_digest_and_algorithm!   s    


’r   c                 C   s   t | trtdd S )NzPrehashed is only supported in the sign and verify methods. It cannot be used with signer, verifier or recover_data_from_signature.)r   r   Ś	TypeError)Zsignature_algorithmr   r   r   Ś_check_not_prehashed2   s    
’r   c                   C   s   t jdtjdd d S )NzMsigner and verifier have been deprecated. Please use sign and verify instead.é   )Ś
stacklevel)ŚwarningsŚwarnr   ZPersistentlyDeprecated2017r   r   r   r   Ś_warn_sign_verify_deprecated;   s
    ür    )r   Zcryptographyr   Zcryptography.hazmat.primitivesr   Z/cryptography.hazmat.primitives.asymmetric.utilsr   r   r   r   r    r   r   r   r   Ś<module>   s   	