Current File : //lib/python3/dist-packages/cryptography/hazmat/backends/openssl/__pycache__/utils.cpython-312.pyc |
�
�3Tf� � �p � d dl mZ d dlZd dlmZ d dlmZ ej rd dlm Z dd�Z
d d�Zy)
� )�annotationsN)�hashes)� Prehashed)�Backendc �L � | j j || j j � }| j || j j k7 � | j j || j j � }| j j |� }| j |dk( � | j j r(| j j ||j d� }n&| j j ||j � }| j |dk( � | j j d� }| j j || j j |� }| j |dk( � | j |d dkD � | j j d|d � }| j j |||� }|dk7 r| j � }t d|� �| j j! ||d � d d S )N� r zsize_t *zunsigned char[]zError computing shared key.)�_lib�EVP_PKEY_CTX_new�_ffi�NULL�openssl_assert�gc�EVP_PKEY_CTX_free�EVP_PKEY_derive_init�%Cryptography_HAS_EVP_PKEY_SET_PEER_EX�EVP_PKEY_derive_set_peer_ex� _evp_pkey�EVP_PKEY_derive_set_peer�new�EVP_PKEY_derive�_consume_errors�
ValueError�buffer)�backend�evp_pkey�peer_public_key�ctx�res�keylen�buf�errorss �L/usr/lib/python3/dist-packages/cryptography/hazmat/backends/openssl/utils.py�_evp_pkey_deriver# s� � �
�,�,�
'�
'��'�,�,�2C�2C�
D�C����3�'�,�,�"3�"3�3�4�
�,�,�/�/�#�w�|�|�=�=�
>�C�
�,�,�
+�
+�C�
0�C����3�!�8�$��|�|�9�9��l�l�6�6���*�*�A�
�� �l�l�3�3���*�*�
�� ���3�!�8�$�
�\�\�
�
�j�
)�F�
�,�,�
&�
&�s�G�L�L�,=�,=�v�
F�C����3�!�8�$����6�!�9�q�=�)�
�,�,�
�
�,�f�Q�i�
8�C�
�,�,�
&�
&�s�C��
8�C�
�a�x��(�(�*���6��?�?��<�<���s�F�1�I�.�q�1�1� c � � t |t � s7t j |� }|j | � |j � } n|j }t | � |j k7 rt d� �| |fS )NzNThe provided data must be the same length as the hash algorithm's digest size.)
�
isinstancer r �Hash�update�finalize�
_algorithm�len�digest_sizer )�data� algorithm�hash_ctxs r"