B \Úæ`; ã@sŽddlmZmZmZddlZddlmZddlmZm Z m Z m Z ddl m Z ddlmZmZddlmZdd „Ze e¡Gd d „d eƒƒZdS) é)Úabsolute_importÚdivisionÚprint_functionN)Úutils)ÚAlreadyFinalizedÚ InvalidKeyÚUnsupportedAlgorithmÚ_Reasons)Ú HashBackend)Ú constant_timeÚhashes)ÚKeyDerivationFunctioncCs t d|¡S)Nz>I)ÚstructÚpack)Ún©rú]/opt/alt/python37/lib64/python3.7/site-packages/cryptography/hazmat/primitives/kdf/x963kdf.pyÚ _int_to_u32besrc@s$eZdZdd„Zdd„Zdd„ZdS)ÚX963KDFcCsr|jd}||kr td |¡ƒ‚|dks:t|tƒs:tdƒ‚||_||_||_t|t ƒsbt dt j ƒ‚||_ d|_dS)Nlÿÿz)Can not derive keys larger than {0} bits.zsharedinfo must be bytes.z.Backend object does not implement HashBackend.F)Z digest_sizeÚ ValueErrorÚformatÚ isinstanceÚbytesÚ TypeErrorÚ _algorithmÚ_lengthÚ _sharedinfor rr ZBACKEND_MISSING_INTERFACEÚ_backendÚ_used)ÚselfÚ algorithmÚlengthZ sharedinfoZbackendZmax_lenrrrÚ__init__s   zX963KDF.__init__cCs¸|jr t‚d|_t|tƒs"tdƒ‚dg}d}d}xr|j|kr¢t |j|j ¡}|  |¡|  t |ƒ¡|j dk rz|  |j ¡|  | ¡¡|t|dƒ7}|d7}q2Wd |¡d|j…S)NTzkey_material must be bytes.órééÿÿÿÿ)rrrrrrr ZHashrrÚupdaterrÚappendZfinalizeÚlenÚjoin)rÚ key_materialÚoutputZoutlenZcounterÚhrrrÚderive,s$      zX963KDF.derivecCst | |¡|¡st‚dS)N)r Zbytes_eqr-r)rr*Z expected_keyrrrÚverifyDszX963KDF.verifyN)Ú__name__Ú __module__Ú __qualname__r"r-r.rrrrrsr)Z __future__rrrrZ cryptographyrZcryptography.exceptionsrrrr Z'cryptography.hazmat.backends.interfacesr Zcryptography.hazmat.primitivesr r Z"cryptography.hazmat.primitives.kdfr rZregister_interfaceÚobjectrrrrrÚs