a ¹aÓã@sdddlZddlZddlmZddlmZmZddlmZm Z ddl m Z dd„Z Gdd „d e ƒZ dS) éN)Úutils)ÚAlreadyFinalizedÚ InvalidKey)Ú constant_timeÚhashes)ÚKeyDerivationFunctioncCs t d|¡S)Nz>I)ÚstructÚpack)Ún©r úP/usr/lib64/python3.9/site-packages/cryptography/hazmat/primitives/kdf/x963kdf.pyÚ _int_to_u32besr c@sNeZdZd ejeejeej dœdd„Z eedœdd„Z eeddœd d „Z dS) ÚX963KDFN)Ú algorithmÚlengthÚ sharedinfoÚbackendcCsP|jd}||kr td |¡ƒ‚|dur4t d|¡||_||_||_d|_dS)Nlÿÿz'Cannot derive keys larger than {} bits.rF) Z digest_sizeÚ ValueErrorÚformatrÚ _check_bytesÚ _algorithmÚ_lengthÚ _sharedinfoÚ_used)ÚselfrrrrZmax_lenr r r Ú__init__s ÿ zX963KDF.__init__)Ú key_materialÚreturncCsª|jr t‚d|_t d|¡dg}d}d}|j|kr–t |j¡}| |¡| t |ƒ¡|j durn| |j ¡|  |  ¡¡|t |dƒ7}|d7}q*d |¡d|j…S)NTrórééÿÿÿÿ)rrrZ_check_byteslikerrZHashrÚupdater rÚappendÚfinalizeÚlenÚjoin)rrÚoutputZoutlenZcounterÚhr r r Úderive+s"       zX963KDF.derive)rÚ expected_keyrcCst | |¡|¡st‚dS)N)rZbytes_eqr(r)rrr)r r r Úverify@szX963KDF.verify)N) Ú__name__Ú __module__Ú __qualname__rZ HashAlgorithmÚintÚtypingÚOptionalÚbytesÚAnyrr(r*r r r r rsûû r)rr/Z cryptographyrZcryptography.exceptionsrrZcryptography.hazmat.primitivesrrZ"cryptography.hazmat.primitives.kdfrr rr r r r Ús