Mercurial > hgrepos > Python > apps > py-cutils
comparison cutils/genpwd.py @ 241:d4501acb0a7c
Implement a "bin-hex" password selection/repertoire
| author | Franz Glasner <fzglas.hg@dom66.de> |
|---|---|
| date | Sat, 08 Feb 2025 09:41:44 +0100 |
| parents | 32616df2732e |
| children | ae9bc3006efc |
comparison
equal
deleted
inserted
replaced
| 240:32616df2732e | 241:d4501acb0a7c |
|---|---|
| 18 | 18 |
| 19 from __future__ import (division, absolute_import, print_function) | 19 from __future__ import (division, absolute_import, print_function) |
| 20 | 20 |
| 21 import argparse | 21 import argparse |
| 22 import base64 | 22 import base64 |
| 23 import binascii | |
| 23 import os | 24 import os |
| 24 import sys | 25 import sys |
| 25 | 26 |
| 26 from . import (__version__, __revision__) | 27 from . import (__version__, __revision__) |
| 27 | 28 |
| 49 " that is to be read from random sources instead of output bytes") | 50 " that is to be read from random sources instead of output bytes") |
| 50 aparser.add_argument( | 51 aparser.add_argument( |
| 51 "--repertoire", "--type", "-t", | 52 "--repertoire", "--type", "-t", |
| 52 choices=("web", "web-safe", "web-safe2", | 53 choices=("web", "web-safe", "web-safe2", |
| 53 "bin-base64", "bin-urlsafe-base64", "bin-base32", | 54 "bin-base64", "bin-urlsafe-base64", "bin-base32", |
| 54 "bin-ascii85", ), | 55 "bin-ascii85", "bin-hex", ), |
| 55 default="web-safe2", | 56 default="web-safe2", |
| 56 help="Select the character repertoire. Default: web-safe2") | 57 help="Select the character repertoire. Default: web-safe2") |
| 57 aparser.add_argument( | 58 aparser.add_argument( |
| 58 "req_length", metavar="OUTPUT-LENGTH", type=int, | 59 "req_length", metavar="OUTPUT-LENGTH", type=int, |
| 59 help="The required length of the generated output") | 60 help="The required length of the generated output") |
| 78 encoder = base64.b32encode | 79 encoder = base64.b32encode |
| 79 pwd = gen_bin(opts.req_length, opts.use_bin_length, encoder, | 80 pwd = gen_bin(opts.req_length, opts.use_bin_length, encoder, |
| 80 rstrip_chars=b"=") | 81 rstrip_chars=b"=") |
| 81 elif opts.repertoire == "bin-ascii85": | 82 elif opts.repertoire == "bin-ascii85": |
| 82 encoder = base64.a85encode | 83 encoder = base64.a85encode |
| 84 pwd = gen_bin(opts.req_length, opts.use_bin_length, encoder) | |
| 85 elif opts.repertoire == "bin-hex": | |
| 86 encoder = binascii.hexlify | |
| 83 pwd = gen_bin(opts.req_length, opts.use_bin_length, encoder) | 87 pwd = gen_bin(opts.req_length, opts.use_bin_length, encoder) |
| 84 else: | 88 else: |
| 85 raise NotImplementedError("type not yet implemented: %s" | 89 raise NotImplementedError("type not yet implemented: %s" |
| 86 % opts.repertoire) | 90 % opts.repertoire) |
| 87 if opts.use_bin_length: | 91 if opts.use_bin_length: |
