U
    ēeØ]#	  ć                   @   sd   d dl mZmZmZ 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 )é    )Śabsolute_importŚdivisionŚprint_functionN)Ś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_keyZctxŚresZkeylenZbuf© r   śL/usr/lib/python3/dist-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ŚfinalizeZ
_algorithmŚlenZ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 )NzfPrehashed is only supported in the sign and verify methods. It cannot be used with signer or verifier.)r   r   Ś	TypeError)Zsignature_algorithmr   r   r   Ś_check_not_prehashed7   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   )Z
__future__r   r   r   r   Zcryptographyr   Zcryptography.hazmat.primitivesr   Z/cryptography.hazmat.primitives.asymmetric.utilsr   r   r   r   r   r   r   r   r   Ś<module>   s   