/
lib
/
python3
/
dist-packages
/
cryptography
/
hazmat
/
backends
/
openssl
/
__pycache__
/
Upload File
HOME
� p�g� � � � d dl Z d dlmZ d dlmZ e j rd dlmZ dddefd�Z d ed e j eej f de j eej f fd�Z dS )� N)�hashes)� Prehashed)�Backend�backendr �returnc �� � | j � || j j � � }| � || j j k � � | j � || j j � � }| j � |� � }| � |dk � � | j � ||j � � }| � |dk � � | j � d� � }| j � || j j |� � }| � |dk � � | � |d dk � � | j � d|d � � }| j � |||� � }|dk r$| � � � }t d|� � �| j � ||d � � d d � S )N� zsize_t *r zunsigned char[]zError computing shared key.)�_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�_consume_errors_with_text� ValueError�buffer)r �evp_pkey�peer_public_key�ctx�res�keylen�buf�errors_with_texts �L/usr/lib/python3/dist-packages/cryptography/hazmat/backends/openssl/utils.py�_evp_pkey_deriver! s� � � �,� '� '��'�,�2C� D� D�C����3�'�,�"3�3�4�4�4� �,�/�/�#�w�|�=� >� >�C� �,� +� +�C� 0� 0�C����3�!�8�$�$�$� �,� /� /��_�5N� O� O�C����3�!�8�$�$�$� �\� � �j� )� )�F� �,� &� &�s�G�L�,=�v� F� F�C����3�!�8�$�$�$����6�!�9�q�=�)�)�)� �,� � �,�f�Q�i� 8� 8�C� �,� &� &�s�C�� 8� 8�C� �a�x�x�"�<�<�>�>���6�8H�I�I�I��<���s�F�1�I�.�.�q�q�q�1�1� �data� algorithmc � � t |t � � s>t j |� � }|� | � � |� � � } n|j }t | � � |j k 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 )r# r$ �hash_ctxs r �_calculate_digest_and_algorithmr. # s� � � �i��+�+� )��;�y�)�)���������� � �"�"����(� � �4�y�y�I�)�)�)�� '� � � � �)��r"