o
    )%a                     @   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rptd| j||d d d  S )N   zsize_t *r   zunsigned char[]z1Null shared key derived from public/private pair.)_libEVP_PKEY_CTX_new_ffiNULLopenssl_assertgcEVP_PKEY_CTX_freeEVP_PKEY_derive_initEVP_PKEY_derive_set_peer	_evp_pkeynewEVP_PKEY_derive
ValueErrorbuffer)backendevp_pkeypeer_public_keyctxreskeylen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r#t	d||fS )NzNThe provided data must be the same length as the hash algorithm's digest size.)

isinstancer   r   Hashupdatefinalize
_algorithmlendigest_sizer   )r   data	algorithmhash_ctxr   r   r   _calculate_digest_and_algorithm!   s   


r(   c                 C   s   t | tr	tdd S )NzPrehashed is only supported in the sign and verify methods. It cannot be used with signer, verifier or recover_data_from_signature.)r   r   	TypeError)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   PersistentlyDeprecated2017r   r   r   r   _warn_sign_verify_deprecated;   s
   
r1   )r.   cryptographyr   cryptography.hazmat.primitivesr   /cryptography.hazmat.primitives.asymmetric.utilsr   r   r(   r+   r1   r   r   r   r   <module>   s   	