Ë
    ýQµiŽ  ã                  ó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           ú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  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Ó)ˆØ�‰˜ÔØ× Ñ Ó"‰à×(Ñ(ˆ	ä
ˆ4ƒy�I×)Ñ)Ò)Üð'ó
ð 	
ð
 �)ÐÐ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$   