3
l�_ � @ sd d dl mZmZmZ d dlZd dlmZ d dlmZ d dl m
Z
dd� Zdd � Zd
d� Z
dd
� ZdS )� )�absolute_import�division�print_functionN)�utils)�hashes)� Prehashedc C s� | j j|| jj�}| j|| jjk� | jj|| j j�}| j j|�}| j|dk� | j j||j �}| j|dk� | jj
d�}| j j|| jj|�}| j|dk� | j|d dk� | jj
d|d �}| j j|||�}|dkr�td��| jj
||d �d d � S )N� zsize_t *r zunsigned char[]z1Null shared key derived from public/private pair.)Z_libZEVP_PKEY_CTX_newZ_ffiZNULLZopenssl_assert�gcZEVP_PKEY_CTX_freeZEVP_PKEY_derive_initZEVP_PKEY_derive_set_peerZ _evp_pkey�newZEVP_PKEY_derive�
ValueError�buffer)�backendZevp_pkeyZpeer_public_keyZctx�resZkeylenZbuf� r �/usr/lib64/python3.6/utils.py�_evp_pkey_derive s r c C sN t |t�s*tj|| �}|j|� |j� }n|j}t|�|jkrFt d��||fS )NzNThe provided data must be the same length as the hash algorithm's digest size.)
�
isinstancer r ZHash�update�finalizeZ
_algorithm�lenZdigest_sizer )r
�data� algorithmZhash_ctxr r r �_calculate_digest_and_algorithm" s
r c C s t | t�rtd��d S )NzfPrehashed is only supported in the sign and verify methods. It cannot be used with signer or verifier.)r r � TypeError)Zsignature_algorithmr r r �_check_not_prehashed3 s
r c C s t jdtjdd� d S )NzMsigner and verifier have been deprecated. Please use sign and verify instead.� )�
stacklevel)�warnings�warnr ZPersistentlyDeprecated2017r r r r �_warn_sign_verify_deprecated; s r )Z
__future__r r r r Zcryptographyr Zcryptography.hazmat.primitivesr Z/cryptography.hazmat.primitives.asymmetric.utilsr r r r r r r r r �