
    _f                    \    d dl mZ d dlZd dlmZ d dlmZ ej        rd dlm	Z	 dd
Z
ddZdS )    )annotationsN)hashes)	Prehashed)Backendbackendr   returnbytesc                    | j                             || j        j                  }|                     || j        j        k               | j                            || j         j                  }| j                             |          }|                     |dk               | j         j        r"| j         	                    ||j
        d          }n | j                             ||j
                  }|                     |dk               | j                            d          }| j                             || j        j        |          }|                     |dk               |                     |d         dk               | j                            d|d                   }| j                             |||          }|dk    r$|                                 }t          d|          | j                            ||d                   d d          S )N   r   zsize_t *zunsigned char[]zError 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)r   evp_pkeypeer_public_keyctxreskeylenbuferrorss           \/var/www/html/env/lib/python3.11/site-packages/cryptography/hazmat/backends/openssl/utils.py_evp_pkey_deriver%      s   
,
'
'',2C
D
DC3',"33444
,//#w|=
>
>C
,
+
+C
0
0C3!8$$$|9 
l66*A
 
 l33*
 
 3!8$$$\j))F
,
&
&sGL,=v
F
FC3!8$$$6!9q=)))
,

,fQi
8
8C
,
&
&sC
8
8C
axx((**6???<sF1I..qqq11    data	algorithm-typing.Union[Prehashed, hashes.HashAlgorithm])typing.Tuple[bytes, hashes.HashAlgorithm]c                   t          |t                    s>t          j        |          }|                    |            |                                } n|j        }t          |           |j        k    rt          d          | |fS )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_algorithmr4   .   s     i++ );y))  ""(	
4yyI)))'
 
 	

 )r&   )r   r   r   r	   )r'   r	   r(   r)   r   r*   )
__future__r   typingcryptography.hazmat.primitivesr   /cryptography.hazmat.primitives.asymmetric.utilsr   TYPE_CHECKING,cryptography.hazmat.backends.openssl.backendr   r%   r4    r&   r$   <module>r<      s   
 # " " " " "  1 1 1 1 1 1 E E E E E E	 EDDDDDD2 2 2 2<     r&   