3 œäL]èã@sŽddlmZmZmZddlZddlmZddlmZm Z m Z m Z ddl m Z ddlmZmZddlmZdd „ZejeƒGd d „d eƒƒZdS) é)Úabsolute_importÚdivisionÚprint_functionN)Úutils)ÚAlreadyFinalizedÚ InvalidKeyÚUnsupportedAlgorithmÚ_Reasons)Ú HashBackend)Ú constant_timeÚhashes)ÚKeyDerivationFunctioncCs tjd|ƒS)Nz>I)ÚstructÚpack)Ún©rúT/tmp/pip-install-wfra5znf/cryptography/cryptography/hazmat/primitives/kdf/x963kdf.pyÚ _int_to_u32besrc@s$eZdZdd„Zdd„Zdd„ZdS)ÚX963KDFcCsl|jd }||kr tdj|ƒƒ‚|dk r4tjd|ƒ||_||_||_t|t ƒs\t dt j ƒ‚||_ d|_dS) Néé éz(Can not derive keys larger than {} bits.Ú sharedinfoz.Backend object does not implement HashBackend.Fllÿÿ)Ú digest_sizeÚ ValueErrorÚformatrÚ _check_bytesÚ _algorithmÚ_lengthÚ _sharedinfoÚ isinstancer rr ZBACKEND_MISSING_INTERFACEÚ_backendÚ_used)ÚselfÚ algorithmÚlengthrÚbackendÚmax_lenrrrÚ__init__s    zX963KDF.__init__cCs²|jr t‚d|_tjd|ƒdg}d}d}xr|j|krœtj|j|jƒ}|j |ƒ|j t |ƒƒ|j dk rt|j |j ƒ|j |j ƒƒ|t|dƒ7}|d7}q,Wdj|ƒd|j…S)NTÚ key_materialórréÿÿÿÿ)r"rrZ_check_byteslikerr ZHashrr!ÚupdaterrÚappendÚfinalizeÚlenÚjoin)r#r)ÚoutputZoutlenÚcounterÚhrrrÚderive-s"      zX963KDF.derivecCstj|j|ƒ|ƒst‚dS)N)r Zbytes_eqr4r)r#r)Z expected_keyrrrÚverifyBszX963KDF.verifyN)Ú__name__Ú __module__Ú __qualname__r(r4r5rrrrrsr)Ú __future__rrrrZ cryptographyrZcryptography.exceptionsrrrr Z'cryptography.hazmat.backends.interfacesr Zcryptography.hazmat.primitivesr r Z"cryptography.hazmat.primitives.kdfr rZregister_interfaceÚobjectrrrrrÚs