B \`L@sddlmZmZmZddlZddlmZddlmZm Z m Z m Z ddl m Z ddlmZmZddlmZeeGdd d eZeeGd d d eZdS) )absolute_importdivisionprint_functionN)utils)AlreadyFinalized InvalidKeyUnsupportedAlgorithm_Reasons) HMACBackend) constant_timehmac)KeyDerivationFunctionc@s,eZdZddZddZddZddZd S) HKDFcCslt|tstdtj||_|dks6t|ts6td|dkrJd|jj}||_ ||_ t |j||||_ dS)Nz.Backend object does not implement HMACBackend.zsalt must be bytes.) isinstancer rr BACKEND_MISSING_INTERFACE _algorithmbytes TypeError digest_size_salt_backend HKDFExpand _hkdf_expand)self algorithmlengthZsaltinfobackendrZ/opt/alt/python37/lib64/python3.7/site-packages/cryptography/hazmat/primitives/kdf/hkdf.py__init__s  z HKDF.__init__cCs(tj|j|j|jd}|||S)N)r)r HMACrrrupdatefinalize)r key_materialhrrr _extract)s z HKDF._extractcCs$t|tstd|j||S)Nzkey_material must be bytes.)rrrrderiver')rr%rrr r(.s z HKDF.derivecCst|||stdS)N)r bytes_eqr(r)rr% expected_keyrrr verify4sz HKDF.verifyN)__name__ __module__ __qualname__r!r'r(r+rrrr rsrc@s,eZdZddZddZddZddZd S) rcCs~t|tstdtj||_||_d|j}||krBtd |||_ |dksbt|t sbt d|dkrnd}||_ d|_dS)Nz.Backend object does not implement HMACBackend.z+Can not derive keys larger than {0} octets.zinfo must be bytes.F)rr rr rrrr ValueErrorformat_lengthrr_info_used)rrrrrZ max_lengthrrr r!;s$  zHKDFExpand.__init__cCsdg}d}xr|jjt|d|jkr|tj||j|jd}||d||j|t || | |d7}q Wd |d|jS)Nr0)r)rrlenr3r r"rr#r4sixZint2byteappendr$join)rr%outputZcounterr&rrr _expandZs  zHKDFExpand._expandcCs,t|tstd|jrtd|_||S)Nzkey_material must be bytes.T)rrrr5rr=)rr%rrr r(hs  zHKDFExpand.derivecCst|||stdS)N)r r)r(r)rr%r*rrr r+rszHKDFExpand.verifyN)r,r-r.r!r=r(r+rrrr r9s r)Z __future__rrrr9Z cryptographyrZcryptography.exceptionsrrrr Z'cryptography.hazmat.backends.interfacesr Zcryptography.hazmat.primitivesr r Z"cryptography.hazmat.primitives.kdfr Zregister_interfaceobjectrrrrrr s   &