Emacs gpg jabber.el
Ну шо, поцоны, на приём работает:
(defun jabber-chat-print-encrypted (xml-data who mode)
"Decrypts and prints encrypted message"
(let ((foundp nil))
(dolist (x (jabber-xml-node-children xml-data))
(when (and (listp x) (eq (jabber-xml-node-name x) 'x)
(string= (jabber-xml-get-xmlns x) "jabber:x:encrypted"))
(setq foundp t)
(when (eql mode :insert)
(let* ((enc-b64-multi (car (split-string (caddr x) "\n=")))
(enc-b64 (replace-regexp-in-string "\n" "" enc-b64-multi))
(enc (base64-decode-string enc-b64))
(context (epg-make-context epa-protocol))
(dec (epg-decrypt-string context enc)))
(insert "\n"
(jabber-propertize
"encrypted message: " 'face 'jabber-chat-prompt-system)
(format "%s" (jabber-unhex dec)))))))
foundp))
Немного переусложнённо, но блин, спасибо XEP-ам
Чтобы постоянно не спрашивал пароли — gpg-agent в помощь