diff --git a/ssh-askpass b/ssh-askpass index ef58c0c..440202e 100644 --- a/ssh-askpass +++ b/ssh-askpass @@ -7,22 +7,33 @@ function send() { read -p } +function getpin() { + send GETPIN + test "${REPLY:0:3}" = ERR && { coproc : ; exit 1 } + echo ${REPLY:2} +} + coproc $PINENTRY PINENTRY_PID=$! trap "kill -TERM $PINENTRY_PID" INT TERM read -p send SETDESC $@ +send SETPROMPT Password: case "$@" in "Confirm user presence"*) send SETOK Hide send CONFIRM --one-button ;; + *PIN*) + send SETPROMPT PIN: + send OPTION allow-external-password-cache + send SETKEYINFO ssh-askpass-pin + getpin + ;; *) - send GETPIN - test "${REPLY:0:3}" = ERR && { coproc : ; exit 1 } - echo ${REPLY:2} + getpin ;; esac