def test_wordset(self): """'wordset' & 'words' options""" # wordset option results = genphrase(words=simple_words, returns=5000) self.assertResultContents(results, 5000, simple_words) # words option results = genphrase(length=3, words=simple_words, returns=5000) self.assertResultContents(results, 5000, simple_words, unique=3 ** 3) # words + wordset self.assertRaises(TypeError, genphrase, words=simple_words, wordset='bip39')
def test_wordset(self): """'wordset' & 'words' options""" # wordset option results = genphrase(words=simple_words, returns=5000) self.assertResultContents(results, 5000, simple_words) # words option results = genphrase(length=3, words=simple_words, returns=5000) self.assertResultContents(results, 5000, simple_words, unique=3**3) # words + wordset self.assertRaises(TypeError, genphrase, words=simple_words, wordset='bip39')
def test_returns(self): """'returns' keyword""" # returns=int option results = genphrase(returns=1000, words=simple_words) self.assertResultContents(results, 1000, simple_words) # returns=iter option gen = genphrase(returns=iter, words=simple_words) results = [next(gen) for _ in range(1000)] self.assertResultContents(results, 1000, simple_words) # invalid returns option self.assertRaises(TypeError, genphrase, returns='invalid-type')
def register(): form = RegisterForm(request.form) if form.validate_on_submit(): ret = handle_register(form) if ret: return ret return render_template("users/register.html", form=form, suggested_password=genphrase(entropy=52, wordset="bip39"))
def test_entropy(self): """'length' & 'entropy' keywords""" # custom entropy result = genphrase(entropy=70) self.assertEqual(len(result.split(" ")), 6) # 70 / log(7776, 2) ~= 5.4 -> 6 # custom length result = genphrase(length=3) self.assertEqual(len(result.split(" ")), 3) # custom length < entropy result = genphrase(length=3, entropy=48) self.assertEqual(len(result.split(" ")), 4) # custom length > entropy result = genphrase(length=4, entropy=12) self.assertEqual(len(result.split(" ")), 4)
def test_general(self): """general behavior""" # basic usage result = genphrase() self.assertEqual(len(result.split(" ")), 4) # 48 / log(7776, 2) ~= 3.7 -> 4 # malformed keyword should have useful error. self.assertRaisesRegex(TypeError, "(?i)unexpected keyword.*badkwd", genphrase, badkwd=True)
def change_password(): form = ChangePasswordForm(request.form) if form.validate_on_submit(): if check_password_hash(current_user.password, form.old_password.data): ret = handle_set_password(form) if ret: return ret else: flash("Old password is incorrect", "danger") return render_template("users/change_set_password.html", form=form, suggested_password=genphrase(entropy=52, wordset="bip39"))
def set_password(): if current_user.password: return redirect(url_for("users.change_password")) form = SetPasswordForm(request.form) if current_user.email is None: form.email.validators = [InputRequired(), Email()] if form.validate_on_submit(): ret = handle_set_password(form) if ret: return ret return render_template("users/change_set_password.html", form=form, optional=request.args.get("optional"), suggested_password=genphrase(entropy=52, wordset="bip39"))
def generate(self): # password or passphrase if self.opts.get('pwd_type') == "phrase": passwd = pwd.genphrase(entropy=self.opts.get('pwd_entropy'), length=self.opts.get('pwd_length'), returns=None, words=self.opts.get('pwd_words'), wordset=self.opts.get('pwd_wordset'), sep=self.opts.get('pwd_sep')) else: passwd = pwd.genword(entropy=self.opts.get('pwd_entropy'), length=self.opts.get('pwd_length'), returns=None, chars=self.opts.get('pwd_words'), charset=self.opts.get('pwd_charset')) # return result return passwd
def suggest(): """ Suggest a new, 16 word brain key. """ return genphrase(length=16, wordset='bip39')