use gpg to generate passwords

This commit is contained in:
Dylan Araps 2019-02-26 08:12:18 +02:00
parent 02155b72ce
commit 8616243660
3 changed files with 7 additions and 40 deletions

View File

@ -55,7 +55,6 @@ OPTIONS
c Copy password to clipboard. c Copy password to clipboard.
l Length of generated passwords. l Length of generated passwords.
n Limit passwords to alphanumeric characters.
q Don't print password to stdout. q Don't print password to stdout.
-t Print list output as a tree. -t Print list output as a tree.
h Show usage and exit. h Show usage and exit.

40
pash
View File

@ -7,13 +7,14 @@ pw_add() {
case $REPLY in case $REPLY in
[yY]) [yY])
[[ $OSTYPE == linux* ]] && length=${length:=50}
check_entropy password=$("${gpg[0]}" --armor --gen-random 0 "$length")
password=${password:0:length}
pw_gen
;; ;;
*) read -rsp "Enter password: " password ;; *)
read -rsp "Enter password: " password
;;
esac esac
[[ $password ]] || [[ $password ]] ||
@ -60,33 +61,6 @@ pw_list() {
printf '└%s\b┘\n' "${nest//\//──┴}" printf '└%s\b┘\n' "${nest//\//──┴}"
} }
pw_gen() {
[[ -r /dev/urandom ]] ||
die "/dev/urandom is not readable."
mapfile -tn "${length:=50}" rand </dev/urandom
[[ $plain ]] &&
glob='[:alnum:]'
password=${rand[*]//[^${glob:-[:graph:]}]}
password=${password:0:$length}
}
check_entropy() {
kernel_path=/proc/sys/kernel/random
entropy_cur=$(< "${kernel_path}/entropy_avail")
entropy_min=$(< "${kernel_path}/read_wakeup_threshold")
[[ ${entropy_cur:=0} -lt ${entropy_min:=1} ]] && {
printf '%s\n' "warn: Not enough entropy to generate a secure password."
yn "warn: Continue anyway?"
[[ $REPLY != [yY] ]] &&
exit 1
}
}
yn() { yn() {
read -rn 1 -p "$1 [y/n]: " read -rn 1 -p "$1 [y/n]: "
printf '\n' printf '\n'
@ -113,7 +87,6 @@ usage: pash [add|del|show|list] [name] [flags]
-c Copy password to clipboard. -c Copy password to clipboard.
-l length Length of generated passwords. -l length Length of generated passwords.
-n Limit passwords to alphanumeric characters.
-q Don't print password to stdout. -q Don't print password to stdout.
-t Print list output as a tree. -t Print list output as a tree.
-h Print this message. -h Print this message.
@ -131,7 +104,6 @@ get_args() {
while getopts ":ncvqtl:" opt; do case $opt in while getopts ":ncvqtl:" opt; do case $opt in
c) clipboard=1 ;; c) clipboard=1 ;;
l) length=${OPTARG//[^0-9]} ;; l) length=${OPTARG//[^0-9]} ;;
n) plain=1 ;;
q) quiet=1 ;; q) quiet=1 ;;
t) tree=1 ;; t) tree=1 ;;
v) printf '%s\n' "pash 0.01"; exit ;; v) printf '%s\n' "pash 0.01"; exit ;;

6
pash.1
View File

@ -7,7 +7,7 @@ pash \- simple pasword manager
.B pash .B pash
[\fBadd|del|show|list\fR] [\fBadd|del|show|list\fR]
[name] [name]
[\fB-cnqthv\fR] [\fB-cqthv\fR]
[\fB-l\fR length] [\fB-l\fR length]
@ -48,10 +48,6 @@ Copy password to clipboard.
Length of generated passwords. Length of generated passwords.
.TP .TP
.BR \-n
Limit passwords to alphanumeric characters.
.TP
.BR \-q .BR \-q
Don't print password to stdout. Don't print password to stdout.
.TP .TP