a a@sBddlZddlmZddlmZddlmZGdddejZdS)N)utils)AlreadyFinalized)hashesc@steZdZdeejejdddZe ejdddZ eddd d Z ddd d Z edd dZ eddddZdS)HMACN)key algorithmbackendcCsPt|tjstd||_||_|durFddlm}|||j |_ n||_ dS)Nz*Expected instance of hashes.HashAlgorithm.r)r) isinstancer HashAlgorithm TypeError _algorithm_keyZ,cryptography.hazmat.backends.openssl.backendrZcreate_hmac_ctxr_ctx)selfrrrctxZosslrI/usr/lib64/python3.9/site-packages/cryptography/hazmat/primitives/hmac.py__init__s  z HMAC.__init__)returncCs|jS)N)r rrrrr%szHMAC.algorithm)datarcCs.|jdurtdtd||j|dS)NContext was already finalized.r)rrrZ_check_byteslikeupdate)rrrrrr)s  z HMAC.updatecCs*|jdurtdt|j|j|jdS)Nr)r)rrrr rcopyrrrrr/s z HMAC.copycCs&|jdurtd|j}d|_|S)Nr)rrfinalize)rZdigestrrrr8s   z HMAC.finalize) signaturercCs:td||jdurtd|jd}|_||dS)Nrr)r _check_bytesrrverify)rrrrrrr?s   z HMAC.verify)NN)__name__ __module__ __qualname__bytesrr typingAnyrpropertyrrrrrrrrrrs  r) r"Z cryptographyrZcryptography.exceptionsrZcryptography.hazmat.primitivesrZ HashContextrrrrrs