3Tf2 ddlmZddlZddlZddlmZddlmZmZm Z ddl m Z ddl mZddlmZej"dzZGd d eZy) ) annotationsN)utils)AlreadyFinalized InvalidKeyUnsupportedAlgorithm)openssl) constant_time)KeyDerivationFunctionc>eZdZ d ddZddZddZy) ScryptNc<ddlm}|js td||_t j d||dks ||dz zdk7r td|dkr td|dkr td d |_||_ ||_ ||_ ||_ y) Nr)backendz/This version of OpenSSL does not support scryptsaltr z-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) ,cryptography.hazmat.backends.openssl.backendrscrypt_supportedr_lengthr _check_bytes ValueError_used_salt_n_r_p)selfrlengthnrprossls K/usr/lib/python3/dist-packages/cryptography/hazmat/primitives/kdf/scrypt.py__init__zScrypt.__init__s $$&&A   64( q5Q!a%[Q&LM M q5DE E q5DE E  c  |jr tdd|_tjd|tj j ||j|j|j|jt|jS)Nz'Scrypt instances can only be used once.T key_material) rrr_check_byteslike rust_opensslkdf derive_scryptrrrr _MEM_LIMITr)rr&s r"derivez Scrypt.derive<sn ::"#LM M  ~|<--  JJ GG GG GG  LL  r$ch|j|}tj||s tdy)NzKeys do not match.)r,r bytes_eqr)rr& expected_key derived_keys r"verifyz Scrypt.verifyMs2kk,/ %%k<@12 2Ar$)N) rbytesrintrr3rr3r r3rz typing.Any)r&r2returnr2)r&r2r/r2r4None)__name__ __module__ __qualname__r#r,r1r$r"r r sQ#          D "3r$r ) __future__rsystyping cryptographyrcryptography.exceptionsrrr"cryptography.hazmat.bindings._rustrr(cryptography.hazmat.primitivesr "cryptography.hazmat.primitives.kdfr maxsizer+r r9r$r"rCsF #  G8D[[A  73 "73r$