U §Ãq`Èã@szddlZddlmZddlmZmZmZmZddlm Z ddl m Z ddl m Z ddlmZejdZGd d „d eƒZdS) éN)Úutils)ÚAlreadyFinalizedÚ InvalidKeyÚUnsupportedAlgorithmÚ_Reasons)Ú _get_backend)Ú ScryptBackend)Ú constant_time)ÚKeyDerivationFunctionéc@sFeZdZd eeeeedœdd„Zeedœdd„Zeeddœd d „ZdS) ÚScryptN)ÚsaltÚlengthÚnÚrÚpcCs˜t|ƒ}t|tƒstdtjƒ‚||_t d|¡|dksH||d@dkrPt dƒ‚|dkr`t dƒ‚|dkrpt dƒ‚d |_ ||_ ||_ ||_ ||_||_dS) Nz0Backend object does not implement ScryptBackend.r 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)rÚ isinstancerrrZBACKEND_MISSING_INTERFACEÚ_lengthrÚ _check_bytesÚ ValueErrorÚ_usedÚ_saltÚ_nÚ_rÚ_pÚ_backend)Úselfr rrrrÚbackend©rúP/tmp/pip-target-nv4zd3e_/lib/python/cryptography/hazmat/primitives/kdf/scrypt.pyÚ__init__s( þ zScrypt.__init__)Ú key_materialÚreturncCs@|jrtdƒ‚d|_t d|¡|j ||j|j|j|j |j ¡S)Nz'Scrypt instances can only be used once.Tr") rrrZ_check_byteslikerZ derive_scryptrrrrr)rr"rrr Úderive7s ÿz Scrypt.derive)r"Ú expected_keyr#cCs"| |¡}t ||¡stdƒ‚dS)NzKeys do not match.)r$r Zbytes_eqr)rr"r%Z derived_keyrrr ÚverifyAs  z Scrypt.verify)N)Ú__name__Ú __module__Ú __qualname__ÚbytesÚintr!r$r&rrrr r sÿÿ  r )ÚsysZ cryptographyrZcryptography.exceptionsrrrrZcryptography.hazmat.backendsrZ'cryptography.hazmat.backends.interfacesrZcryptography.hazmat.primitivesr Z"cryptography.hazmat.primitives.kdfr ÚmaxsizeZ _MEM_LIMITr rrrr Ús