def scrypt(*, password: str, salt: str, n: int, r: int, p: int, dklen: int) -> bytes: if n >= 2**(128 * r / 8): raise ValueError( "The given `n` should be less than `2**(128 * r / 8)`." f"\tGot `n={n}`, r={r}, 2**(128 * r / 8)={2**(128 * r / 8)}") res = _scrypt(password=password, salt=salt, key_len=dklen, N=n, r=r, p=p) return res if isinstance( res, bytes) else res[0] # PyCryptodome can return Tuple[bytes]
def scrypt(*, password: str, salt: str, n: int, r: int, p: int, dklen: int) -> bytes: if n * r * p < 2**20: # 128 MB memory usage raise ValueError("The Scrypt parameters chosen are not secure.") if n >= 2**(128 * r / 8): raise ValueError( "The given `n` should be less than `2**(128 * r / 8)`." f"\tGot `n={n}`, r={r}, 2**(128 * r / 8)={2**(128 * r / 8)}") res = _scrypt(password=password, salt=salt, key_len=dklen, N=n, r=r, p=p) return res if isinstance( res, bytes) else res[0] # PyCryptodome can return Tuple[bytes]
def scrypt(*, password: str, salt: str, n: int, r: int, p: int, dklen: int) -> bytes: assert (n < 2**(128 * r / 8)) res = _scrypt(password=password, salt=salt, key_len=dklen, N=n, r=r, p=p) return res if isinstance( res, bytes) else res[0] # PyCryptodome can return Tuple[bytes]