o )%a@sPddlZddlmZddlmZddlmZddZddZd d Z d d Z dS) N)utils)hashes) PrehashedcCs|j||jj}|||jjk|j||jj}|j|}||dk|j||j }||dk|j d}|j ||jj|}||dk||ddk|j d|d}|j |||}|dkrpt d|j ||dddS)Nzsize_t *rzunsigned char[]z1Null shared key derived from public/private pair.)_libEVP_PKEY_CTX_new_ffiNULLopenssl_assertgcEVP_PKEY_CTX_freeEVP_PKEY_derive_initEVP_PKEY_derive_set_peer _evp_pkeynewEVP_PKEY_derive ValueErrorbuffer)backendevp_pkeypeer_public_keyctxreskeylenbufrL/usr/lib/python3/dist-packages/cryptography/hazmat/backends/openssl/utils.py_evp_pkey_derive s   rcCsNt|tst||}|||}n|j}t||jkr#t d||fS)NzNThe provided data must be the same length as the hash algorithm's digest size.) isinstancerrHashupdatefinalize _algorithmlen digest_sizer)rdata algorithmhash_ctxrrr_calculate_digest_and_algorithm!s    r(cCst|tr tddS)NzPrehashed is only supported in the sign and verify methods. It cannot be used with signer, verifier or recover_data_from_signature.)rr TypeError)signature_algorithmrrr_check_not_prehashed2s r+cCstjdtjdddS)NzMsigner and verifier have been deprecated. Please use sign and verify instead.) stacklevel)warningswarnrPersistentlyDeprecated2017rrrr_warn_sign_verify_deprecated;s  r1) r. cryptographyrcryptography.hazmat.primitivesr/cryptography.hazmat.primitives.asymmetric.utilsrrr(r+r1rrrrs