a b@sdddlZddlmZddlmZmZddlmZmZddl m Z e e dddZ Gd d d e ZdS) N)utils)AlreadyFinalized InvalidKey) constant_timehashes)KeyDerivationFunction)nreturncCs|jdddS)Nbig)length byteorder)to_bytes)rrQ/tmp/pip-target-98j97qn4/lib/python/cryptography/hazmat/primitives/kdf/x963kdf.py _int_to_u32besrc@sNeZdZd ejeejeej dddZ eedddZ eeddd d Z dS) X963KDFN) algorithmr sharedinfobackendcCsP|jd}||kr td||dur4td|||_||_||_d|_dS)Nlz'Cannot derive keys larger than {} bits.rF) digest_size ValueErrorformatr _check_bytes _algorithm_length _sharedinfo_used)selfrr rrmax_lenrrr__init__s  zX963KDF.__init__) key_materialr cCs|jr td|_td|dg}d}d}|j|krt|j}|||t ||j durn||j | | |t |d7}|d7}q*d|d|jS)NTr!r)rrrZ_check_byteslikerrZHashrupdaterrappendfinalizelenjoin)rr!outputZoutlencounterhrrrderive*s"       zX963KDF.derive)r! expected_keyr cCst|||stdS)N)rZbytes_eqr-r)rr!r.rrrverify?szX963KDF.verify)N) __name__ __module__ __qualname__rZ HashAlgorithminttypingOptionalbytesAnyr r-r/rrrrrs r)r4Z cryptographyrZcryptography.exceptionsrrZcryptography.hazmat.primitivesrrZ"cryptography.hazmat.primitives.kdfrr3r6rrrrrrs