
    +h                    p    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y)
    )annotationsN)hashes)	Prehashed)Backendc                L   | j                   j                  || j                  j                        }| j	                  || j                  j                  k7         | j                  j                  || j                   j                        }| j                   j                  |      }| j	                  |dk(         | j                   j                  r(| j                   j                  ||j                  d      }n&| j                   j                  ||j                        }| j	                  |dk(         | j                  j                  d      }| j                   j                  || j                  j                  |      }| j	                  |dk(         | j	                  |d   dkD         | j                  j                  d|d         }| j                   j                  |||      }|dk7  r| j                         }t        d|      | j                  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)backendevp_pkeypeer_public_keyctxreskeylenbuferrorss           ]/var/www/html/venv/lib/python3.12/site-packages/cryptography/hazmat/backends/openssl/utils.py_evp_pkey_deriver#      s   
,,
'
'',,2C2C
DC3',,"3"334
,,//#w||==
>C
,,
+
+C
0C3!8$||99ll66**A
 ll33**
 3!8$\\j)F
,,
&
&sGLL,=,=v
FC3!8$6!9q=)
,,

,fQi
8C
,,
&
&sC
8C
ax((*6??<<sF1I.q11    c                    t        |t              s7t        j                  |      }|j	                  |        |j                         } n|j                  }t        |       |j                  k7  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   )data	algorithmhash_ctxs      r"   _calculate_digest_and_algorithmr0   .   sr     i+;;y)  "((	
4yI)))'
 	

 )r$   )r   r   returnbytes)r-   r2   r.   z-typing.Union[Prehashed, hashes.HashAlgorithm]r1   z)typing.Tuple[bytes, hashes.HashAlgorithm])
__future__r   typingcryptography.hazmat.primitivesr   /cryptography.hazmat.primitives.asymmetric.utilsr   TYPE_CHECKING,cryptography.hazmat.backends.openssl.backendr   r#   r0    r$   r"   <module>r:      sC   
 #  1 E	D2<
< /r$   