Mercurial > hgrepos > Python > apps > py-cutils
changeset 240:32616df2732e
Renamed algorithms/repertoire selection: use a "bin-" prefix when just the output of os.urandom() is encoded
| author | Franz Glasner <fzglas.hg@dom66.de> |
|---|---|
| date | Sat, 08 Feb 2025 09:37:48 +0100 |
| parents | 1eae57292c7c |
| children | d4501acb0a7c |
| files | cutils/genpwd.py |
| diffstat | 1 files changed, 13 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/cutils/genpwd.py Sat Feb 08 09:20:25 2025 +0100 +++ b/cutils/genpwd.py Sat Feb 08 09:37:48 2025 +0100 @@ -50,7 +50,8 @@ aparser.add_argument( "--repertoire", "--type", "-t", choices=("web", "web-safe", "web-safe2", - "base64", "urlsafe-base64", "urlsafe", "base32", "ascii85", ), + "bin-base64", "bin-urlsafe-base64", "bin-base32", + "bin-ascii85", ), default="web-safe2", help="Select the character repertoire. Default: web-safe2") aparser.add_argument( @@ -65,19 +66,19 @@ pwd = gen_from_repertoire(opts.req_length, WEB_SAFE_CHARS) elif opts.repertoire == "web-safe2": pwd = gen_from_repertoire(opts.req_length, WEB_SAFE2_CHARS) - elif opts.repertoire == "base64": + elif opts.repertoire == "bin-base64": encoder = base64.b64encode pwd = gen_bin(opts.req_length, opts.use_bin_length, encoder, rstrip_chars=b"=") - elif opts.repertoire in ("urlsafe-base64", "urlsafe"): + elif opts.repertoire == "bin-urlsafe-base64": encoder = base64.urlsafe_b64encode pwd = gen_bin(opts.req_length, opts.use_bin_length, encoder, rstrip_chars=b"=") - elif opts.repertoire == "base32": + elif opts.repertoire == "bin-base32": encoder = base64.b32encode pwd = gen_bin(opts.req_length, opts.use_bin_length, encoder, rstrip_chars=b"=") - elif opts.repertoire == "ascii85": + elif opts.repertoire == "bin-ascii85": encoder = base64.a85encode pwd = gen_bin(opts.req_length, opts.use_bin_length, encoder) else: @@ -95,6 +96,10 @@ def gen_from_repertoire(length, repertoire): + """Select `length` characters randomly from given character repertoire + `repertoire`. + + """ assert len(repertoire) <= 256 pwd = [] while len(pwd) < length: @@ -114,6 +119,9 @@ def gen_bin(length, use_bin_length, encoder, rstrip_chars=None): + """Generate from :func:`os.urandom` and just encode with given `encoder`. + + """ pwd = encoder(os.urandom(length)) return pwd.rstrip(rstrip_chars) if use_bin_length else pwd[:length]
