From c100450ad1b2e41e144fded28462277283874aef Mon Sep 17 00:00:00 2001 From: Akshay Nair Date: Sun, 5 Jul 2020 21:53:07 +0530 Subject: Init commit that works like shit --- TODO.md | 6 ++++++ pinentry.sh | 70 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 76 insertions(+) create mode 100644 TODO.md create mode 100755 pinentry.sh diff --git a/TODO.md b/TODO.md new file mode 100644 index 0000000..0508427 --- /dev/null +++ b/TODO.md @@ -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 " ;; + esac; +} + +password_prompt() { + if pass=$(ask_password); then + [[ ! -z "$pass" ]] && echo "D $pass"; + echo "OK"; + else + echo "ERR 99 Operation cancelled "; + 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 }, + -- cgit v1.3.1