From 8a338f132009c562305ec08d725343062438fdd9 Mon Sep 17 00:00:00 2001 From: Floris Bruynooghe Date: Thu, 14 Dec 2023 11:51:22 +0100 Subject: [PATCH] Use more characters for passwords (#124) This expands the character set used for passwords generated for new accounts. The set it taken from the set used by the pass tool. The special characters is the full GNU grep [:punct:] set. --- chatmaild/src/chatmaild/newemail.py | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/chatmaild/src/chatmaild/newemail.py b/chatmaild/src/chatmaild/newemail.py index 95fd4eb6..2c144582 100644 --- a/chatmaild/src/chatmaild/newemail.py +++ b/chatmaild/src/chatmaild/newemail.py @@ -4,16 +4,22 @@ import json import random +import secrets +import string from chatmaild.config import read_config, Config CONFIG_PATH = "/usr/local/lib/chatmaild/chatmail.ini" +ALPHANUMERIC = string.ascii_lowercase + string.digits +ALPHANUMERIC_PUNCT = string.ascii_letters + string.digits + string.punctuation def create_newemail_dict(config: Config): - alphanumeric = "abcdefghijklmnopqrstuvwxyz1234567890" - user = "".join(random.choices(alphanumeric, k=config.username_min_length)) - password = "".join(random.choices(alphanumeric, k=config.password_min_length + 3)) + user = "".join(random.choices(ALPHANUMERIC, k=config.username_min_length)) + password = "".join( + secrets.choice(ALPHANUMERIC_PUNCT) + for _ in range(config.password_min_length + 3) + ) return dict(email=f"{user}@{config.mail_domain}", password=f"{password}")