a a} @ s: d dl mZmZmZ d dlmZmZ G dd dejZdS ) )InvalidSignatureUnsupportedAlgorithm_Reasons) constant_timehashesc @ sp e Zd ZdeejdddZeejdddZd ddd Z edd ddZ edd dZeddddZdS )_HMACContextN)key algorithmc C s || _ || _|d u r| jj }| j|| jjjk | jj|| jjj}| j |}|| jjjkrzt d|jt j| jj|}| jj||t||| jjj}| j|dk || _|| _d S )Nz*{} is not a supported hash on this backendr ) _algorithm_backend_libHMAC_CTX_newopenssl_assert_ffiNULLgc HMAC_CTX_freeZ_evp_md_from_algorithmr formatnamer ZUNSUPPORTED_HASHfrom_bufferZHMAC_Init_exlen_ctx_key)selfZbackendr r ctxZevp_mdZkey_ptrres r O/usr/lib64/python3.9/site-packages/cryptography/hazmat/backends/openssl/hmac.py__init__ s* z_HMACContext.__init__)returnc C s | j S )N)r )r r r r r * s z_HMACContext.algorithmc C sp | j j }| j || j jjk | j j|| j jj}| j j|| j }| j |dk t | j | j| j|dS )Nr )r ) r r r r r r r r Z HMAC_CTX_copyr r r r )r Z copied_ctxr r r r copy. s z_HMACContext.copy)datar c C s: | j j|}| j j| j|t|}| j |dk d S )Nr )r r r r ZHMAC_Updater r r )r r! Zdata_ptrr r r r update: s z_HMACContext.updatec C sz | j jd| j jj}| j jd}| j j| j||}| j |dk | j |d | jj k | j j |d |d S )Nzunsigned char[]zunsigned int *r )r r newr ZEVP_MAX_MD_SIZEZ HMAC_Finalr r r Zdigest_sizebuffer)r bufZoutlenr r r r finalize? s z_HMACContext.finalize) signaturer c C s | }t||stdd S )NzSignature did not match digest.)r&