a ¹a“ ã @ sP d dl Z d dlmZ d dlmZ d dlmZ dd„ Zdd„ Zd d „ Z dd„ Z dS ) é N)Úutils)Úhashes)Ú Prehashedc C s | j || jj¡}| || jjk¡ | j || j j¡}| j |¡}| |dk¡ | j ||j ¡}| |dk¡ | j d¡}| j || jj|¡}| |dk¡ | |d dk¡ | j d|d ¡}| j |||¡}|dkrê| ¡ }t d|ƒ‚| j ||d ¡d d … S )Né zsize_t *r zunsigned char[]zError computing shared key.)Z_libZEVP_PKEY_CTX_newZ_ffiZNULLZopenssl_assertÚgcZEVP_PKEY_CTX_freeZEVP_PKEY_derive_initZEVP_PKEY_derive_set_peerZ _evp_pkeyÚnewZEVP_PKEY_deriveZ_consume_errors_with_textÚ ValueErrorÚbuffer)ÚbackendZevp_pkeyZpeer_public_keyÚctxÚresZkeylenÚbufZerrors_with_text© r úP/usr/lib64/python3.9/site-packages/cryptography/hazmat/backends/openssl/utils.pyÚ_evp_pkey_derive s" r c C sN t |tƒs*t || ¡}| |¡ | ¡ }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 )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)Zsignature_algorithmr r r Ú_check_not_prehashed3 s ÿr c C s t jdtjdd d S )Nz¯signer and verifier have been deprecated since 2.1. Please use sign and verify instead. Support for these functions will be dropped in the next release of cryptography (37.0).é )Ú stacklevel)ÚwarningsÚwarnr ZPersistentlyDeprecated2017r r r r Ú_warn_sign_verify_deprecated<