U &Ì.eªã@sÚddlZddlmZz ddlZWnek r<dZdZYn Xe ej ƒZddl ZddlZ ddl Z edd„edƒDƒƒZedd„edƒDƒƒZdZGdd„dƒZd d „ZGd d „d e jƒZe  ¡rÄeZddd„Zdd„ZdS)éN)Ú_compare_digestccs|]}|dAVqdS)é\N©©Ú.0Úxrrú/usr/lib64/python3.8/hmac.pyÚ sr éccs|]}|dAVqdS)é6Nrrrrrr sc@sNeZdZdZddd„Zedd„ƒZdd „Zd d „Zd d „Z dd„Z dd„Z dS)ÚHMACé@NÚcsVt ¡rtdƒ‚t|ttfƒs0tdt|ƒjƒ‚ˆs?rzHMAC.__init__..cs ˆ |¡Sr©rrrrrrArÚ block_sizeéz:block_size of %d seems too small; using our default of %d.ézasz HMAC.namecCs t ¡rtdƒ‚|j |¡dS)Nz'hmac.HMAC is not available in FIPS mode)rr r!r,r6)r:r<rrrr6esz HMAC.updatecCs:|j |j¡}|j|_|j|_|j ¡|_|j ¡|_|Sr)Ú __class__Ú__new__r)r-r,Úcopyr+)r:ÚotherrrrrAks   z HMAC.copycCs|j ¡}| |j ¡¡|Sr)r+rAr6r,r4©r:ÚhrrrÚ_currentxs z HMAC._currentcCs| ¡}| ¡Sr)rEr4rCrrrr4�sz HMAC.digestcCs| ¡}| ¡Sr)rEÚ hexdigestrCrrrrF‹szHMAC.hexdigest)Nr) r'Ú __module__Ú __qualname__r1r=Úpropertyr>r6rArEr4rFrrrrr s >    r cCsHt|tƒr| ¡St|ƒr"|dƒ}t|tjƒs6tdƒ‚|j ¡ dd¡S)Nrz6Only OpenSSL hashlib hashes are accepted in FIPS mode.Ú_ú-) r"r*Úlowerr(rZHASHr%r>ÚreplacerrrrÚ_get_openssl_name‘s  ÿrNc@seZdZddd„ZdS)Ú HMAC_opensslNcCsLt|ttfƒs tdt|ƒjƒ‚t|ƒ}tjj |||d�}|rH|  |¡|S)Nrr) r"r#r$r%r&r'rNÚ _hmacopensslr r@r6)Úclsr;r<rr>Úresultrrrr@žs zHMAC_openssl.__new__)NN)r'rGrHr@rrrrrO�srOrcCs t|||ƒSr)r )r;r<rrrrr­srcsâtdk r(tˆtƒr(ˆtkr(t ||ˆ¡Stˆƒr6ˆ}n(tˆtƒrPd‡fdd„ }nd ‡fdd„ }|ƒ}|ƒ}t|ddƒ}t|ƒ|krŽ||ƒ ¡}|d|t|ƒ}|  |  t ¡¡|  |  t ¡¡|  |¡|  | ¡¡| ¡S) Nrcs t ˆ|¡Srrr©r4rrrÑrzdigest..cs ˆ |¡SrrrrSrrrÓrrr r)r)r) Ú _hashopensslr"r*Ú_openssl_md_methsZ hmac_digestr(Úgetattrr3r4r6r7r9r8)r;r<r4r)r,r+r1rrSrr4Ás, ÿÿ     r4)Nr)Úwarningsr/Ú _operatorrZcompare_digestrrTÚ ImportErrorrUÚ frozensetZopenssl_md_meth_namesZhashlibrrPr#Úranger8r9r-r rNrOr rr4rrrrÚs(    u