diff options
| author | Akshay Nair <phenax5@gmail.com> | 2020-07-05 21:53:07 +0530 |
|---|---|---|
| committer | Akshay Nair <phenax5@gmail.com> | 2020-07-05 21:53:07 +0530 |
| commit | c100450ad1b2e41e144fded28462277283874aef (patch) | |
| tree | 964fa5ba1d136ca5ee79f0fa056939de98a852bc | |
| download | anypinentry-c100450ad1b2e41e144fded28462277283874aef.tar.gz anypinentry-c100450ad1b2e41e144fded28462277283874aef.zip | |
Init commit that works like shit
| -rw-r--r-- | TODO.md | 6 | ||||
| -rwxr-xr-x | pinentry.sh | 70 |
2 files changed, 76 insertions, 0 deletions
@@ -0,0 +1,6 @@ +# TODO + - [ ] Cli arg to set password prompt command + - [ ] Cli arg to set confirmation prompt command + - [ ] Clear password support? + - [ ] Add repeat password support + - [ ] Add confirmation command diff --git a/pinentry.sh b/pinentry.sh new file mode 100755 index 0000000..f9aa4c9 --- /dev/null +++ b/pinentry.sh @@ -0,0 +1,70 @@ +#!/usr/bin/env bash + +VERSION="0.0"; + +if [[ -z "$DISPLAY" ]]; then + DISPLAY=":1"; + export DISPLAY; +fi + +title=""; +prompt=""; +description=""; +keyinfo=""; + +ask_password() { + dmenu -P -p "$prompt" 2> /dev/null; +} + +save_option() { + echo "OK"; +} + +get_info() { + case "$1" in + version) echo "D $VERSION" && echo "OK" ;; + pid) echo "D $BASHPID" && echo "OK" ;; + *) echo "ERR 280 IPC parameter error <Unspecified source>" ;; + esac; +} + +password_prompt() { + if pass=$(ask_password); then + [[ ! -z "$pass" ]] && echo "D $pass"; + echo "OK"; + else + echo "ERR 99 Operation cancelled <Unspecified source>"; + fi; +} + +echo "OK Pleased to meet you"; +while read line; do + cmd="$(echo "$line" | cut -d' ' -f1)"; + data="$(echo "$line" | cut -d' ' -f2-)"; + + case "$cmd" in + OPTION) save_option "$data" ;; + GETINFO) get_info "$data" ;; + SETTITLE) title="$data" && echo "OK" ;; + SETPROMPT) prompt="$data" && echo "OK" ;; + SETDESC) description="$data" && echo "OK" ;; + SETKEYINFO) keyinfo="$data" && echo "OK" ;; + GETPIN) password_prompt ;; + BYE) echo "OK closing connection" && exit 0; ;; + *) echo "OK" ;; + esac; +done; + + #{ "SETREPEAT", cmd_setrepeat }, + #{ "SETREPEATERROR", cmd_setrepeaterror }, + #{ "SETERROR", cmd_seterror }, + #{ "SETOK", cmd_setok }, + #{ "SETNOTOK", cmd_setnotok }, + #{ "SETCANCEL", cmd_setcancel }, + #{ "CONFIRM", cmd_confirm }, + #{ "MESSAGE", cmd_message }, + #{ "SETQUALITYBAR", cmd_setqualitybar }, + #{ "SETQUALITYBAR_TT", cmd_setqualitybar_tt }, + #{ "SETTIMEOUT", cmd_settimeout }, + #{ "CLEARPASSPHRASE", cmd_clear_passphrase }, + |
