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]