• 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 в помощь

Replies (8)

  • @a13, эм. А де шобы слать?
  • @Avatar, пока не сделал, работу работать надо :)
    может чуть пожжей
  • @a13, шоб не забыть
    gpg-agent --daemon
    emacsclient -e "(setenv \"GPG_AGENT_INFO\" \"$GPG_AGENT_INFO\")"
  • @a13, > cat ~/.config/systemd/user/gnome-keyring-env.service
    [Unit]
    Description=Setup gnome keyring environment

    [Service]
    Type=oneshot
    ExecStart=/bin/sh -c "for env in $(gnome-keyring-daemon -s); do systemctl --user set-environment $env; done"
    ExecStop=/bin/sh -c "for env in GNOME_KEYRING_CONTROL SSH_AUTH_SOCK GPG_AGENT_INFO; do systemctl --no-block --user unset-environment $env; done"
    RemainAfterExit=true

    [Install]
    WantedBy=env.target

    ;)
  • @Avatar, свят-свят-свят, упаси сотона от поттеринга и творений его!

    а что, gnome-keyring-daemon тоже через gpg-agent работает?
  • @a13, Не, он может быть gpg-agent'ом :]
  • @Avatar, ясно, опять велосипеды
  • @a13, Та не, наоборот клёво. Хотя не очень секьюрно, надо будет зафиксить. Суть в том, что делается анлок во время логина через pam, и больше никаких дурацких паролей