3
l_ @ sd d dl mZmZmZ d dlZd dlmZ d dlmZ d dl m
Z
dd Zdd Zd
d Z
dd
ZdS ) )absolute_importdivisionprint_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|||}|dkrtd| 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_assertgcZEVP_PKEY_CTX_freeZEVP_PKEY_derive_initZEVP_PKEY_derive_set_peerZ _evp_pkeynewZEVP_PKEY_derive
ValueErrorbuffer)backendZevp_pkeyZpeer_public_keyZctxresZkeylenZbuf r /usr/lib64/python3.6/utils.py_evp_pkey_derive s r c C sN t |ts*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 ZHashupdatefinalizeZ
_algorithmlenZdigest_sizer )r
data algorithmZhash_ctxr r r _calculate_digest_and_algorithm" s
r c C s t | trtdd 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)warningswarnr 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