3TfpddlmZddlZddlmZddlmZejrddlm Z ddZ d dZ y) ) annotationsN)hashes) Prehashed)BackendcL|jj||jj}|j ||jjk7|jj ||jj }|jj|}|j |dk(|jjr(|jj||jd}n&|jj||j}|j |dk(|jjd}|jj||jj|}|j |dk(|j |ddkD|jjd|d}|jj|||}|dk7r|j}td||jj!||dddS)Nrzsize_t *zunsigned char[]zError computing shared key.)_libEVP_PKEY_CTX_new_ffiNULLopenssl_assertgcEVP_PKEY_CTX_freeEVP_PKEY_derive_init%Cryptography_HAS_EVP_PKEY_SET_PEER_EXEVP_PKEY_derive_set_peer_ex _evp_pkeyEVP_PKEY_derive_set_peernewEVP_PKEY_derive_consume_errors ValueErrorbuffer)backendevp_pkeypeer_public_keyctxreskeylenbuferrorss L/usr/lib/python3/dist-packages/cryptography/hazmat/backends/openssl/utils.py_evp_pkey_deriver#s ,, ' '',,2C2C DC 3',,"3"334 ,,//#w||== >C ,, + +C 0C 3!8$||99ll66 **A ll33 **  3!8$ \\  j )F ,, & &sGLL,=,=v FC 3!8$ 6!9q=) ,,  ,fQi 8C ,, & &sC 8C ax((*6?? <<  sF1I .q 11ct|ts7tj|}|j ||j }n |j }t||jk7r td||fS)NzNThe provided data must be the same length as the hash algorithm's digest size.) isinstancerrHashupdatefinalize _algorithmlen digest_sizer)data algorithmhash_ctxs r"_calculate_digest_and_algorithmr0.sr i +;;y)  "((  4yI))) '  ) r$)rrreturnbytes)r-r2r.z-typing.Union[Prehashed, hashes.HashAlgorithm]r1z)typing.Tuple[bytes, hashes.HashAlgorithm]) __future__rtypingcryptography.hazmat.primitivesr/cryptography.hazmat.primitives.asymmetric.utilsr TYPE_CHECKING,cryptography.hazmat.backends.openssl.backendrr#r0r$r"r:sC # 1E D2< </r$