§
    pïg  ã                   ór   — d dl Z d dlmZmZmZ d dlmZmZ e j        rd dl	m
Z
  G d„ dej        ¦  «        ZdS )é    N)ÚInvalidSignatureÚUnsupportedAlgorithmÚ_Reasons)Úconstant_timeÚhashes)ÚBackendc                   óŠ   — e Zd Z	 ddddedej        fd„Zedej        fd„¦   «         Zdd	„Z	d
eddfd„Z
defd„Zdeddfd„ZdS )Ú_HMACContextNÚbackendr   ÚkeyÚ	algorithmc                 óò  — || _         || _        |�€W| j        j                             ¦   «         }| j                             || j        j        j        k    ¦  «         | j        j                             || j        j        j        ¦  «        }| j         	                    |¦  «        }|| j        j        j        k    r2t          d                     |j        ¦  «        t          j        ¦  «        ‚| j        j                             |¦  «        }| j        j                             ||t#          |¦  «        || j        j        j        ¦  «        }| j                             |dk    ¦  «         || _        || _        d S )Nz*{} is not a supported hash on this backendr   )Ú
_algorithmÚ_backendÚ_libÚHMAC_CTX_newÚopenssl_assertÚ_ffiÚNULLÚgcÚHMAC_CTX_freeÚ_evp_md_from_algorithmr   ÚformatÚnamer   ÚUNSUPPORTED_HASHÚfrom_bufferÚHMAC_Init_exÚlenÚ_ctxÚ_key)Úselfr   r   r   ÚctxÚevp_mdÚkey_ptrÚress           úK/usr/lib/python3/dist-packages/cryptography/hazmat/backends/openssl/hmac.pyÚ__init__z_HMACContext.__init__   sG  € ð $ˆŒØˆŒà‰;Ø”-Ô$×1Ò1Ñ3Ô3ˆCØŒM×(Ò(¨°´Ô0BÔ0GÒ)GÑHÔHÐHØ”-Ô$×'Ò'¨¨T¬]Ô-?Ô-MÑNÔNˆCØ”]×9Ò9¸)ÑDÔDˆFØ˜œÔ+Ô0Ò0Ð0Ý*Ø@×GÒGØ!œñô õ Ô-ñ	ô ð ð ”mÔ(×4Ò4°SÑ9Ô9ˆGØ”-Ô$×1Ò1Ø�W�c #™hœh¨°´Ô0BÔ0Gñô ˆCð ŒM×(Ò(¨°ªÑ2Ô2Ð2àˆŒ	ØˆŒ	ˆ	ˆ	ó    Úreturnc                 ó   — | j         S ©N)r   )r!   s    r&   r   z_HMACContext.algorithm3   s
   € àŒÐr(   c                 óÀ  — | j         j                             ¦   «         }| j                              || j         j        j        k    ¦  «         | j         j                             || j         j        j        ¦  «        }| j         j                             || j	        ¦  «        }| j                              |dk    ¦  «         t          | j         | j        | j        |¬¦  «        S )Nr   )r"   )r   r   r   r   r   r   r   r   ÚHMAC_CTX_copyr   r
   r    r   )r!   Ú
copied_ctxr%   s      r&   Úcopyz_HMACContext.copy7   sÀ   € Ø”]Ô'×4Ò4Ñ6Ô6ˆ
ØŒ×$Ò$ Z°4´=Ô3EÔ3JÒ%JÑKÔKÐKØ”]Ô'×*Ò*Ø˜œÔ*Ô8ñ
ô 
ˆ
ð ŒmÔ ×.Ò.¨z¸4¼9ÑEÔEˆØŒ×$Ò$ S¨A¢XÑ.Ô.Ð.ÝØŒM˜4œ9 d¤n¸*ð
ñ 
ô 
ð 	
r(   Údatac                 óæ   — | j         j                             |¦  «        }| j         j                             | j        |t          |¦  «        ¦  «        }| j                              |dk    ¦  «         d S )Nr   )r   r   r   r   ÚHMAC_Updater   r   r   )r!   r0   Údata_ptrr%   s       r&   Úupdatez_HMACContext.updateC   s^   € Ø”=Ô%×1Ò1°$Ñ7Ô7ˆØŒmÔ ×,Ò,¨T¬Y¸Å#ÀdÁ)Ä)ÑLÔLˆØŒ×$Ò$ S¨A¢XÑ.Ô.Ð.Ð.Ð.r(   c                 óÜ  — | j         j                             d| j         j        j        ¦  «        }| j         j                             d¦  «        }| j         j                             | j        ||¦  «        }| j                              |dk    ¦  «         | j                              |d         | j        j	        k    ¦  «         | j         j         
                    |¦  «        d |d         …         S )Nzunsigned char[]zunsigned int *r   )r   r   Únewr   ÚEVP_MAX_MD_SIZEÚ
HMAC_Finalr   r   r   Údigest_sizeÚbuffer)r!   ÚbufÚoutlenr%   s       r&   Úfinalizez_HMACContext.finalizeH   sÆ   € ØŒmÔ ×$Ò$Ø˜tœ}Ô1ÔAñ
ô 
ˆð ”Ô#×'Ò'Ð(8Ñ9Ô9ˆØŒmÔ ×+Ò+¨D¬I°s¸FÑCÔCˆØŒ×$Ò$ S¨A¢XÑ.Ô.Ð.ØŒ×$Ò$ V¨A¤Y°$´.Ô2LÒ%LÑMÔMÐMØŒ}Ô!×(Ò(¨Ñ-Ô-¨k°°q´	¨kÔ:Ð:r(   Ú	signaturec                 óv   — |                       ¦   «         }t          j        ||¦  «        st          d¦  «        ‚d S )NzSignature did not match digest.)r=   r   Úbytes_eqr   )r!   r>   Údigests      r&   Úverifyz_HMACContext.verifyR   s@   € Ø—’‘”ˆÝÔ% f¨iÑ8Ô8ð 	FÝ"Ð#DÑEÔEÐEð	Fð 	Fr(   r+   )r)   r
   )Ú__name__Ú
__module__Ú__qualname__Úbytesr   ÚHashAlgorithmr'   Úpropertyr   r/   r4   r=   rB   © r(   r&   r
   r
      sö   € € € € € ð ðð àðð ðð Ô'ð	ð ð ð ð> ð˜6Ô/ð ð ð ñ „Xðð

ð 

ð 

ð 

ð/˜5ð / Tð /ð /ð /ð /ð
;˜%ð ;ð ;ð ;ð ;ðF ð F¨$ð Fð Fð Fð Fð Fð Fr(   r
   )ÚtypingÚcryptography.exceptionsr   r   r   Úcryptography.hazmat.primitivesr   r   ÚTYPE_CHECKINGÚ,cryptography.hazmat.backends.openssl.backendr   ÚHashContextr
   rI   r(   r&   ú<module>rP      sÈ   ðð
 €€€ðð ð ð ð ð ð ð ð ð ð
 AÐ @Ð @Ð @Ð @Ð @Ð @Ð @ð 
Ôð EØDÐDÐDÐDÐDÐDðBFð BFð BFð BFð BF�6Ô%ñ BFô BFð BFð BFð BFr(   