;;; Auth --- Secret management extension for FG42 ;;; Commentary: ;;; Code: (require 'auth-source) (defvar auht/sources '((:sources "~/.authinfo.gpg"))) (defun auth/find-credential (host) "Find the credential for the given HOST. Return a list of credential pairs." (let (auth-list '()) (dolist (cred (auth-source-search :host host :require '(:user :secret))) (let ((user (plist-get cred :user)) (secret (plist-get cred :secret))) (add-to-list 'auth-list (list user (if (functionp secret) (funcall secret) secret))))) auth-list)) (defun utils/bold (text) "Make the TEXT appears in bold form." (propertize text 'face 'bold)) (defun auth/credential-for (args host) "Return the credential for the given HOST. ARGS should be ignored." (interactive "P\nsHost: ") (dolist (pair (auth/find-credential host)) (let* ((user (car pair)) (pass (car (cdr pair))) (msg (concat "User: " (utils/bold user) " Passowrd: " (utils/bold pass)))) (message msg)))) (defun extensions/irc-initialize () "Initialize the Auth extension." (setq auth-sources auth/sources)) (provide 'extensions/irc/init) ;;; init.el ends here