Password input in a console application
Alessio Stalla
alessiostalla at gmail.com
Sun Mar 5 16:12:01 UTC 2023
Thank you very much, works like a charm!
On Sun, 12 Feb 2023 at 16:16, Raymond Wiker <rwiker at gmail.com> wrote:
>
> On 12 Feb 2023, at 11:47, Alessio Stalla <alessiostalla at gmail.com> wrote:
>
> Greetings everyone,
>
> is there a well-known way to do the thing in the subject, i.e. ask the
> user for a password in a console application, reading from the keyboard
> without echoing anything to the terminal? Using a library is fine, SBCL
> only is fine, limited to some OS is not so fine but better than nothing.
> Any idea?
>
>
>
> Here’s something that I’ve used for Lispworks and SBCL:
>
>
> #+sbcl
> (require :sb-posix)
>
> #+sbcl
> (defun echo-off ()
> (let ((tm (sb-posix:tcgetattr sb-sys:*tty*)))
> (setf (sb-posix:termios-lflag tm)
> (logandc2 (sb-posix:termios-lflag tm) sb-posix:echo))
> (sb-posix:tcsetattr sb-sys:*tty* sb-posix:tcsanow tm)))
>
> #+sbcl
> (defun echo-on ()
> (let ((tm (sb-posix:tcgetattr sb-sys:*tty*)))
> (setf (sb-posix:termios-lflag tm)
> (logior (sb-posix:termios-lflag tm) sb-posix:echo))
> (sb-posix:tcsetattr sb-sys:*tty* sb-posix:tcsanow tm)))
>
> #+sbcl
> (defun prompt-for-value (prompt)
> (format t "~&~a " prompt)
> (force-output)
> (read-line))
>
> #+sbcl
> (defun prompt-for-value/no-echo (prompt)
> (format t "~&~a " prompt)
> (force-output)
> (echo-off)
> (unwind-protect
> (read-line)
> (echo-on)))
>
> #+capi
> (defun prompt-for-value (prompt)
> (capi:prompt-for-string prompt))
>
> #+capi
> (defun prompt-for-value/no-echo (prompt)
> (capi:prompt-for-string prompt :pane-class 'capi:password-pane))
>
> (defun get-passphrase-from-user ()
> (prompt-for-value/no-echo "Passphrase?"))
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mailman.common-lisp.net/pipermail/pro/attachments/20230305/d0ec1d1b/attachment.html>
More information about the pro
mailing list