* 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).