U q`@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 |||}|dkrt d|j ||dddS)Nzsize_t *rzunsigned char[]z1Null shared key derived from public/private pair.)Z_libZEVP_PKEY_CTX_newZ_ffiZNULLZopenssl_assertgcZEVP_PKEY_CTX_freeZEVP_PKEY_derive_initZEVP_PKEY_derive_set_peerZ _evp_pkeynewZEVP_PKEY_derive ValueErrorbuffer)backendZevp_pkeyZpeer_public_keyctxresZkeylenbufrQ/tmp/pip-target-nv4zd3e_/lib/python/cryptography/hazmat/backends/openssl/utils.py_evp_pkey_derive s   rcCsNt|ts*t||}|||}n|j}t||jkrFt d||fS)NzNThe provided data must be the same length as the hash algorithm's digest size.) isinstancerrZHashupdatefinalize _algorithmlen digest_sizer)r data algorithmZhash_ctxrrr_calculate_digest_and_algorithm!s    rcCst|trtddS)NzPrehashed is only supported in the sign and verify methods. It cannot be used with signer, verifier or recover_data_from_signature.)rr TypeError)Zsignature_algorithmrrr_check_not_prehashed2s rcCstjdtjdddS)NzMsigner and verifier have been deprecated. Please use sign and verify instead.) stacklevel)warningswarnrZPersistentlyDeprecated2017rrrr_warn_sign_verify_deprecated;s r ) rZ cryptographyrZcryptography.hazmat.primitivesrZ/cryptography.hazmat.primitives.asymmetric.utilsrrrrr rrrrs