Gnus development mailing list
 help / color / mirror / Atom feed
* Maybe encrypt message ?
@ 2015-11-24  6:10 Xavier Maillard
  2015-11-24 12:18 ` Uwe Brauer
                   ` (2 more replies)
  0 siblings, 3 replies; 11+ messages in thread
From: Xavier Maillard @ 2015-11-24  6:10 UTC (permalink / raw)
  To: ding

Hello,

what is the correct way to tell gnus/message to 'maybe' encrypt an outgoing
message ?

I previously set it via `message-setup-hook' by adding
`mml-secure-message-encrypt'. For a reason I do not understand, it encrypted
*ALL* outgoing messages (even on mailing-lists). That's lame since for some, I
remember having been asked to ignore encryption for recipient I did not have a
public key...

How do you practice PGP encryption/signing in Gnus ?

Thanks,

-- Xavier.



^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: Maybe encrypt message ?
  2015-11-24  6:10 Maybe encrypt message ? Xavier Maillard
@ 2015-11-24 12:18 ` Uwe Brauer
  2015-11-24 20:53   ` Xavier Maillard
  2015-11-24 16:22 ` Jens Lechtenboerger
  2015-11-24 21:17 ` Peter Münster
  2 siblings, 1 reply; 11+ messages in thread
From: Uwe Brauer @ 2015-11-24 12:18 UTC (permalink / raw)
  To: ding

>>> "Xavier" == Xavier Maillard <lists.emacs.gnus@xavier.maillard.im> writes:

    > Hello,
    > what is the correct way to tell gnus/message to 'maybe' encrypt an outgoing
    > message ?

    > I previously set it via `message-setup-hook' by adding
    > `mml-secure-message-encrypt'. For a reason I do not understand, it encrypted
    > *ALL* outgoing messages (even on mailing-lists). That's lame since for some, I
    > remember having been asked to ignore encryption for recipient I did not have a
    > public key...


    > How do you practice PGP encryption/signing in Gnus ?

There are three possiblities.

    -  if you reply to an email, you can sign/encrypt depending of
       whether the send did this also.
(add-hook 'gnus-message-setup-hook 'my-check-reply-encrypted)
;; that function is courtesy of Dave Goldberg
(defun my-check-reply-encrypted ()
  (interactive)
  (cond ((and gnus-article-reply
			  (message-with-reply-buffer
				(re-search-forward
   "^Content-Type.*application/\\(x-\\)?pkcs7-mime\\|protocol=\"application/pkcs7-signature\""
;				 "^Content-Type.*application/\\(x-\\)?pkcs7-mime"
				 nil t)))
		 (condition-case nil
			 (mml-secure-message-encrypt-smime nil)
		   (error
			(message "One or more recipients do not have certs"))))))


    -  You can use  have an entry in your  bbdb.
    For example
    encrypt: smime
    or
    encrypt: gpg
    than gnus encrypt using smime or gpg

     Or nothing gnus does not do anything.



    -  However if I also want to sign my message than this approach is
       too restrictive. So I have a yes-o-no function in my
       message-send-hook namely my-hook-encrypt-or-sign-smime

(defun my-hook-encrypt-or-sign-smime ()
  (interactive)
  (call-interactively 'my-select-encrypt-or-sign-smime))


(defun my-leave-the-TAG ()
  (interactive)
  (message "Left the TAG intact, since it is a pgp/(mime) message."))


(defun my-select-encrypt-or-sign-smime (ch) 
  (interactive "c1: encrypt, 2: encryt+sign, 3: sign 4: NO TAG 5: leave it: pgp/mime")
  (setq ch (downcase ch))
  (call-interactively (cond ((eql ch ?1) #'my-only-encrypt-smime)
                            ((eql ch ?2) #'my-encrypt-and-sign-smime)
                            ((eql ch ?3) #'mml-secure-message-sign-smime)         
                            ((eql ch ?4) #'my-mml-eliminate-smime-pgp-tag)
                            ((eql ch ?5) #'my-leave-the-TAG)
                            (t (error 'args-out-of-range '(1 2 3 4 5 ch))))))


You could do something similar for gpg instead of smime.

Uwe Brauer 




^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: Maybe encrypt message ?
  2015-11-24  6:10 Maybe encrypt message ? Xavier Maillard
  2015-11-24 12:18 ` Uwe Brauer
@ 2015-11-24 16:22 ` Jens Lechtenboerger
  2015-11-24 20:48   ` Xavier Maillard
  2015-11-24 21:17 ` Peter Münster
  2 siblings, 1 reply; 11+ messages in thread
From: Jens Lechtenboerger @ 2015-11-24 16:22 UTC (permalink / raw)
  To: ding

On 2015-11-24, at 07:10, Xavier Maillard wrote:

> How do you practice PGP encryption/signing in Gnus ?

I use DefaultEncrypt: http://www.emacswiki.org/emacs/DefaultEncrypt

Best wishes
Jens



^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: Maybe encrypt message ?
  2015-11-24 16:22 ` Jens Lechtenboerger
@ 2015-11-24 20:48   ` Xavier Maillard
  0 siblings, 0 replies; 11+ messages in thread
From: Xavier Maillard @ 2015-11-24 20:48 UTC (permalink / raw)
  To: ding

[-- Attachment #1: Type: text/plain, Size: 319 bytes --]

Jens Lechtenboerger <jens.lechtenboerger@fsfe.org> writes:

> On 2015-11-24, at 07:10, Xavier Maillard wrote:
>
>> How do you practice PGP encryption/signing in Gnus ?
>
> I use DefaultEncrypt: http://www.emacswiki.org/emacs/DefaultEncrypt

Seems nice. I already have seen it in action with mu(4e).

Thanks

-- Xavier.

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 495 bytes --]

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: Maybe encrypt message ?
  2015-11-24 12:18 ` Uwe Brauer
@ 2015-11-24 20:53   ` Xavier Maillard
  2015-11-25 11:03     ` Uwe Brauer
  0 siblings, 1 reply; 11+ messages in thread
From: Xavier Maillard @ 2015-11-24 20:53 UTC (permalink / raw)
  To: ding

[-- Attachment #1: Type: text/plain, Size: 2309 bytes --]

Uwe Brauer <oub@mat.ucm.es> writes:

>>>> "Xavier" == Xavier Maillard <lists.emacs.gnus@xavier.maillard.im> writes:
>
>     > Hello,
>     > what is the correct way to tell gnus/message to 'maybe' encrypt an outgoing
>     > message ?
>
>     > I previously set it via `message-setup-hook' by adding
>     > `mml-secure-message-encrypt'. For a reason I do not understand, it encrypted
>     > *ALL* outgoing messages (even on mailing-lists). That's lame since for some, I
>     > remember having been asked to ignore encryption for recipient I did not have a
>     > public key...
>
>     > How do you practice PGP encryption/signing in Gnus ?
>
> There are three possiblities.

[ ... cut ... ]

>     -  You can use  have an entry in your  bbdb.
>     For example
>     encrypt: smime
>     or
>     encrypt: gpg
>     than gnus encrypt using smime or gpg
>
>      Or nothing gnus does not do anything.

I remember that possibility now ! If I could sync my carddav with bbdb, maybe
I could get back to using it.

>     -  However if I also want to sign my message than this approach is
>        too restrictive. So I have a yes-o-no function in my
>        message-send-hook namely my-hook-encrypt-or-sign-smime
>
> (defun my-hook-encrypt-or-sign-smime ()
>   (interactive)
>   (call-interactively 'my-select-encrypt-or-sign-smime))
>
> (defun my-leave-the-TAG ()
>   (interactive)
>   (message "Left the TAG intact, since it is a pgp/(mime) message."))
>
> (defun my-select-encrypt-or-sign-smime (ch) 
>   (interactive "c1: encrypt, 2: encryt+sign, 3: sign 4: NO TAG 5: leave it: pgp/mime")
>   (setq ch (downcase ch))
>   (call-interactively (cond ((eql ch ?1) #'my-only-encrypt-smime)
>                             ((eql ch ?2) #'my-encrypt-and-sign-smime)
>                             ((eql ch ?3) #'mml-secure-message-sign-smime)         
>                             ((eql ch ?4) #'my-mml-eliminate-smime-pgp-tag)
>                             ((eql ch ?5) #'my-leave-the-TAG)
>                             (t (error 'args-out-of-range '(1 2 3 4 5 ch))))))
>
> You could do something similar for gpg instead of smime.

Isn't this too cumbersome ? For each of your outgoing message, you have to
make a choice, right ?

Thanks,

-- Xavier.

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 495 bytes --]

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: Maybe encrypt message ?
  2015-11-24  6:10 Maybe encrypt message ? Xavier Maillard
  2015-11-24 12:18 ` Uwe Brauer
  2015-11-24 16:22 ` Jens Lechtenboerger
@ 2015-11-24 21:17 ` Peter Münster
  2015-11-25 11:04   ` Uwe Brauer
  2015-11-26  5:00   ` Xavier Maillard
  2 siblings, 2 replies; 11+ messages in thread
From: Peter Münster @ 2015-11-24 21:17 UTC (permalink / raw)
  To: ding

On Tue, Nov 24 2015, Xavier Maillard wrote:

> How do you practice PGP encryption/signing in Gnus ?

I use jl-encrypt and "roles". When my role is not "list", I sign the
message and when public keys for all recipients are available I also
encrypt it. Here some lines of my setup:

--8<---------------cut here---------------start------------->8---
(require 'jl-encrypt)

(defun pm/message-send ()
  (unless (message-field-value gnus-delay-header)
    (unless (string-equal pm/role "list")
      (if (jl-epg-check-unique-keys (jl-mail-recipients))
          (mml-secure-message-sign-encrypt)
        (mml-secure-message-sign)))
    (pm/spell)))

(defun pm/gnus-article-receive-epg-keys ()
  "Fetch unknown keys from a signed message.
From http://article.gmane.org/gmane.emacs.gnus.user/15894"
  (interactive)
  (goto-char (point-min))
  (if (re-search-forward
       "\\[\\[PGP Signed Part:No public key for \\([A-F0-9]\\{16,16\\}\\) created at "
       nil 'noerror)
      (progn
        (epg-import-keys-from-server (epg-make-context 'OpenPGP)
                                     (list (match-string 1)))
        (gnus-summary-prev-article)
        (gnus-summary-next-article)
        (gnus-summary-select-article-buffer))
    (message "No unknown signed parts found.")))

(defun pm/update-role ()
  "Check current buffer and update pm/role accordingly."
  (let* ((address (mail-strip-quoted-names
                   (message-fetch-field "From")))
         (role (pm/addr->role address)))
    (when role (setq pm/role role))))

(setq
 mm-decrypt-option                 'always
 mm-verify-option                  'always
 mml2015-encrypt-to-self           t
 mml2015-sign-with-sender          t)

(add-hook 'gnus-message-setup-hook      'pm/message-setup)
(add-hook 'message-send-hook            'pm/message-send)
--8<---------------cut here---------------end--------------->8---

-- 
           Peter




^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: Maybe encrypt message ?
  2015-11-24 20:53   ` Xavier Maillard
@ 2015-11-25 11:03     ` Uwe Brauer
  0 siblings, 0 replies; 11+ messages in thread
From: Uwe Brauer @ 2015-11-25 11:03 UTC (permalink / raw)
  To: ding


    > Uwe Brauer <oub@mat.ucm.es> writes:

    > [ ... cut ... ]


    > I remember that possibility now ! If I could sync my carddav with
    > bbdb, maybe I could get back to using it.


    > Isn't this too cumbersome ? For each of your outgoing message, you
    > have to make a choice, right ?

At first yes, but I tried out all sort of rules and finally decided that
this is the most convenient. Other user might differ in their opinion. I
also have the difficulity that I use gpg with some users and smime with
others. And some of the users are not in my bbdb etc etc




^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: Maybe encrypt message ?
  2015-11-24 21:17 ` Peter Münster
@ 2015-11-25 11:04   ` Uwe Brauer
  2015-11-26  5:00   ` Xavier Maillard
  1 sibling, 0 replies; 11+ messages in thread
From: Uwe Brauer @ 2015-11-25 11:04 UTC (permalink / raw)
  To: ding

>>> "Peter" == Peter Münster <pmlists@free.fr> writes:

   > On Tue, Nov 24 2015, Xavier Maillard wrote:
   >> How do you practice PGP encryption/signing in Gnus ?

   > I use jl-encrypt and "roles". When my role is not "list", I sign the
   > message and when public keys for all recipients are available I also
   > encrypt it. Here some lines of my setup:

   > (require 'jl-encrypt)

That is only for gpg if I am not mistaken? Smime as nothing similar?




^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: Maybe encrypt message ?
  2015-11-24 21:17 ` Peter Münster
  2015-11-25 11:04   ` Uwe Brauer
@ 2015-11-26  5:00   ` Xavier Maillard
  2015-11-26 10:11     ` Peter Münster
  1 sibling, 1 reply; 11+ messages in thread
From: Xavier Maillard @ 2015-11-26  5:00 UTC (permalink / raw)
  To: ding

Peter Münster <pmlists@free.fr> writes:

> On Tue, Nov 24 2015, Xavier Maillard wrote:
>
>> How do you practice PGP encryption/signing in Gnus ?
>
> I use jl-encrypt and "roles". When my role is not "list", I sign the
> message and when public keys for all recipients are available I also
> encrypt it. Here some lines of my setup:

Thank you. Would you please share the logic of your "pm/role" ?

-- Xavier.



^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: Maybe encrypt message ?
  2015-11-26  5:00   ` Xavier Maillard
@ 2015-11-26 10:11     ` Peter Münster
  2015-11-26 14:44       ` Xavier Maillard
  0 siblings, 1 reply; 11+ messages in thread
From: Peter Münster @ 2015-11-26 10:11 UTC (permalink / raw)
  To: ding

On Thu, Nov 26 2015, Xavier Maillard wrote:

> Thank you. Would you please share the logic of your "pm/role" ?

Here is the relevant code of my gnus.el:

--8<---------------cut here---------------start------------->8---
;;;;;;;;;;;;;;;;;; Variables ;;;;;;;;;;;;;;;;;;
(defvar pm/language "fr"
  "Language of current buffer.")
(make-variable-buffer-local 'pm/language)

(defvar pm/role-history nil
  "History list for roles.")

(defvar pm/role         "private")
(make-variable-buffer-local 'pm/role)

(defvar pm/sig-level    0)
(make-variable-buffer-local 'pm/sig-level)

;;;;;;;;;;;;;;;;;; Functions ;;;;;;;;;;;;;;;;;;
(defun pm/alter-message-map ()
  (local-set-key [f6] 'pm/cycle-sigs))

(defun pm/addr->role (address)
  (cl-loop for item in pm/roles
           when (string-equal (plist-get item :address) address)
           return (plist-get item :id)))

(defun pm/role->addr (role)
  (cl-loop for item in pm/roles
           when (string-equal (plist-get item :id) role)
           return (plist-get item :address)))

(defun pm/update-role ()
  "Check current buffer and update pm/role accordingly."
  (let* ((address (mail-strip-quoted-names
                   (message-fetch-field "From")))
         (role (pm/addr->role address)))
    (when role (setq pm/role role))))

(defun pm/phone ()
  (cl-case (intern pm/language)
    ('fr "Tél.: 02 ...")
    (t "Tel.: +33/0 2...")))

(defun pm/address (prefix)
  (let ((address
         (cl-case (intern pm/role)
           ('private '("street" "town"))
           ('a '("a" "street" "town"))
           ('b '("b" "street" "town"))
           ('c '("c" "street" "town")))))
    (setq address (append address
                          (cl-case (intern pm/language)
                            ('en '("France"))
                            ('de '("Frankreich")))))
    (cl-loop for l in address concat prefix concat l concat "\n")))

(defun pm/make-signature ()
  "Check role, lang and level."
  (cl-case pm/sig-level
    (0 nil)
    (1 "           Peter")
    (2 "           Peter Münster")
    (3 (concat "           Peter Münster\n           " (pm/phone)))
    (4 (concat "           Peter Münster\n"
               (pm/address "           ")
               "           " (pm/phone)))
    (t
     (setq pm/sig-level 0)
     (pm/make-signature))))
    
(defun pm/cycle-sigs ()
  (interactive)
  (save-excursion
    (when (message-goto-signature)
      (forward-line -1)
      (delete-region (1- (point)) (point-max)))
    (incf pm/sig-level)
    (message-insert-signature)))

(defun pm/ask-role ()
  (let ((new-role
         (completing-read
          (format "Role [%s]: " pm/role)
          (mapcar (lambda (x) (plist-get x :id)) pm/roles)
          nil t nil 'pm/role-history pm/role)))
    (when (not (string-equal pm/role new-role))
      (setq pm/role new-role)
      (message-replace-header
       "From"
       (message-make-from nil (pm/role->addr pm/role))))))

(defun pm/update-lang ()
  "Check current buffer and update pm/language accordingly."
  (require 'auto-dictionary)
  (setq pm/language (adict--evaluate-buffer-find-lang nil)))

(defun pm/message-setup ()
  (cond (gnus-article-reply
         (pm/update-role)
         (pm/update-lang)
         (incf pm/sig-level)
         (save-excursion
           (message-insert-signature)))
        ((save-excursion (message-goto-signature))
         (pm/update-role)
         (pm/update-lang))
        (t
         (pm/ask-role)
         (let ((message-signature-insert-empty-line t))
           (incf pm/sig-level)
           (save-excursion
             (message-insert-signature))))))

;;;;;;;;;;;;;;;;;; Settings ;;;;;;;;;;;;;;;;;;
(setq
 message-signature                 'pm/make-signature
 message-signature-insert-empty-line    nil
 message-subscribed-address-functions   '(gnus-find-subscribed-addresses)
 pm/lists '((:name            "context.list"
             :list-identifier "\\[NTG-context\\]"
             :address         "ntg-context@ntg.nl")
            (:name            "..."
             :list-identifier "..."
             :address         "...") ... )
 pm/roles '((:id "private"      :address "private-address")
            (:id "list"         :address "pmlists@free.fr")
            (:id "a"            :address "a")
            (:id "b"            :address "b")
            (:id "c"            :address "c"))
 pm/other-addresses  '("x" "y" "z")
 pm/list-address     (pm/role->addr "list")
 user-mail-address   (plist-get (car pm/roles) :address)
 gnus-parameters
 `(("^[^.]*$" (gcc-self . t) (display . [not expire]))
   ,@(cl-loop for item in pm/lists collect
           `(,(pm/str->regexp (plist-get item :name))
             (subscribed . t) (gcc-self . none) (display . default)
             (to-list . ,(plist-get item :address))
             (pm/role "list") (pm/language "en")
             (posting-style (address ,pm/list-address)
                            (eval (setq pm/role "list"
                                        pm/language "en"))
                            (To ,(plist-get item :address)))
             (gnus-list-identifiers ,(plist-get item :list-identifier))))
   ("nntp+.*" (pm/role "list") (pm/language "en")
    (posting-style (address ,pm/list-address)
                   (eval (setq pm/role "list" pm/language "en")))))
 pm/addresses (append (list user-mail-address pm/list-address)
                      (cdr (cl-loop for i in pm/roles collect
                                    (plist-get i :address)))
                      pm/other-addresses)
 message-alternative-emails   (regexp-opt (cdr pm/addresses))
 message-dont-reply-to-names  (regexp-opt pm/addresses))

(add-hook 'gnus-article-mode-hook       'pm/alter-article-map)
(add-hook 'gnus-group-mode-hook         'pm/alter-group-map)
(add-hook 'gnus-message-setup-hook      'pm/message-setup)
(add-hook 'gnus-startup-hook            'pm/startup-addons)
(add-hook 'gnus-summary-mode-hook       'pm/alter-summary-map)
(add-hook 'message-mode-hook            'pm/alter-message-map)
(add-hook 'message-send-hook            'pm/message-send)
--8<---------------cut here---------------end--------------->8---

-- 
           Peter




^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: Maybe encrypt message ?
  2015-11-26 10:11     ` Peter Münster
@ 2015-11-26 14:44       ` Xavier Maillard
  0 siblings, 0 replies; 11+ messages in thread
From: Xavier Maillard @ 2015-11-26 14:44 UTC (permalink / raw)
  To: ding

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512

Peter Münster <pmlists@free.fr> writes:

> On Thu, Nov 26 2015, Xavier Maillard wrote:
>
>> Thank you. Would you please share the logic of your "pm/role" ?
>
> Here is the relevant code of my gnus.el:

Thank you. Reading it. It is like a bundle of `gnus-posting-styles' and
`gnus-alias'.

I will try it locally.

- -- Xavier.
-----BEGIN PGP SIGNATURE-----
Comment: GPGTools - https://gpgtools.org

iQEcBAEBCgAGBQJWVxrQAAoJEDy08nibbhJt4VMH/R0ORbt/108tbmGe7biYNs89
KvEdj0gIMU+s6ogr/l6hvEtC4B2RXfscFjKqNyfkwTczMFlUM8ME3G/ltF4iEHeT
HFzbSOjM9oAYsScZPBwS3N5bzxhWLW0/+Y4aJwwouQ/iQ90hit6PmGlpYlCXxRtm
/cFDvyWCg3yWK96eXKTpIvBS6tkuN3o3E8ya0INF2rXf9B1Hn1+4STsCjGUDXzy8
cGzyEiLVj8PjOq2d8QvgGCfKTng4upSJ4q0xPShFNSxHy7HVpqQdeGLG3hr+kEtM
CquJgFaX5YSfe906WXsppvaQGT7kqAa6qPL7I4eR3Xt4iIZqcWqFuDPfm4fx34Q=
=fziZ
-----END PGP SIGNATURE-----



^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2015-11-26 14:44 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-11-24  6:10 Maybe encrypt message ? Xavier Maillard
2015-11-24 12:18 ` Uwe Brauer
2015-11-24 20:53   ` Xavier Maillard
2015-11-25 11:03     ` Uwe Brauer
2015-11-24 16:22 ` Jens Lechtenboerger
2015-11-24 20:48   ` Xavier Maillard
2015-11-24 21:17 ` Peter Münster
2015-11-25 11:04   ` Uwe Brauer
2015-11-26  5:00   ` Xavier Maillard
2015-11-26 10:11     ` Peter Münster
2015-11-26 14:44       ` Xavier Maillard

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).