B \Úæ`Ìã@sŒddlmZmZmZddlZddlmZddlmZm Z m Z m Z ddl m Z ddlmZddlmZejdZe e¡Gd d „d eƒƒZdS) é)Úabsolute_importÚdivisionÚprint_functionN)Úutils)ÚAlreadyFinalizedÚ InvalidKeyÚUnsupportedAlgorithmÚ_Reasons)Ú ScryptBackend)Ú constant_time)ÚKeyDerivationFunctionéc@s$eZdZdd„Zdd„Zdd„ZdS)ÚScryptcCs–t|tƒstdtjƒ‚||_t|tƒs.tdƒ‚|dksF||d@dkrNtdƒ‚|dkr^tdƒ‚|dkrntdƒ‚d |_ ||_ ||_ ||_ ||_ ||_dS) Nz0Backend object does not implement ScryptBackend.zsalt must be bytes.r érz-n must be greater than 1 and be a power of 2.z%r must be greater than or equal to 1.z%p must be greater than or equal to 1.F)Ú isinstancer rr ZBACKEND_MISSING_INTERFACEÚ_lengthÚbytesÚ TypeErrorÚ ValueErrorÚ_usedÚ_saltÚ_nÚ_rÚ_pÚ_backend)ÚselfZsaltÚlengthÚnÚrÚpZbackend©r ú\/opt/alt/python37/lib64/python3.7/site-packages/cryptography/hazmat/primitives/kdf/scrypt.pyÚ__init__s&  zScrypt.__init__cCsF|jrtdƒ‚d|_t|tƒs&tdƒ‚|j ||j|j|j |j |j ¡S)Nz'Scrypt instances can only be used once.Tzkey_material must be bytes.) rrrrrrZ derive_scryptrrrrr)rÚ key_materialr r r!Úderive4s z Scrypt.derivecCs"| |¡}t ||¡stdƒ‚dS)NzKeys do not match.)r$r Zbytes_eqr)rr#Z expected_keyZ derived_keyr r r!Úverify?s  z Scrypt.verifyN)Ú__name__Ú __module__Ú __qualname__r"r$r%r r r r!rs r)Z __future__rrrÚsysZ cryptographyrZcryptography.exceptionsrrrr Z'cryptography.hazmat.backends.interfacesr Zcryptography.hazmat.primitivesr Z"cryptography.hazmat.primitives.kdfr ÚmaxsizeZ _MEM_LIMITZregister_interfaceÚobjectrr r r r!Ús