pgrddlZddlmZddlmZmZddlmZmZddl m Z de de fdZ Gd d e ZdS) N)utils)AlreadyFinalized InvalidKey) constant_timehashes)KeyDerivationFunctionnreturnc0|ddS)Nbig)length byteorder)to_bytes)r s L/usr/lib/python3/dist-packages/cryptography/hazmat/primitives/kdf/x963kdf.py _int_to_u32bers ::Q%: 0 00c xeZdZ d dejdedejedej fdZ dedefd Z ded eddfd Z dS) X963KDFN algorithmr sharedinfobackendc|jdz}||kr"td||tjd|||_||_||_d|_dS)Nlz'Cannot derive keys larger than {} bits.rF) digest_size ValueErrorformatr _check_bytes _algorithm_length _sharedinfo_used)selfrrrrmax_lens r__init__zX963KDF.__init__s{'95 G  9@@II   !  |Z 8 8 8# % r key_materialr c>|jrtd|_tjd|dg}d}d}|j|krt j|j}|||t||j ||j | | |t|dz }|dz }|j|kd|d|jS)NTr%rr)r!rr_check_byteslikerrHashrupdaterr appendfinalizelenjoin)r"r%outputoutlencounterhs rderivezX963KDF.derive*s  : #" "  ~|<<<lV## DO,,A HH\ " " " HH]7++ , , ,+)*** MM!**,, ' ' ' c&*oo %F qLGlV##xx$,//r expected_keycdtj|||stdSN)rbytes_eqr4r)r"r%r5s rverifyzX963KDF.verify?s3%dkk,&?&?NN    rr7) __name__ __module__ __qualname__r HashAlgorithminttypingOptionalbytesAnyr$r4r9rrrrs # 'OE*   (050U0000*5$rr)r? cryptographyrcryptography.exceptionsrrcryptography.hazmat.primitivesrr"cryptography.hazmat.primitives.kdfrr>rArrrCrrrHs  A@@@@@@@DDDDDD1S1U1111,,,,,#,,,,,r