aboutsummaryrefslogtreecommitdiff
path: root/pinentry.sh
blob: f9aa4c9e0f9c33527c318cfdbad88cb62bb3a6ca (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
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 },