A generic autocrypt implementation for Emacs
Add default return value for autocrypt-make-function
Prevent signalling error when get-part is not defined


browse  log 



You can also use your local clone with git send-email.

#Autocrypt for Emacs

Autocrypt is cryptography protocol, for distributing and automatically encrypting emails. This package generically implements the protocol, for various Emacs MUAs (Mail User Agent).

Currently, it supports:

  • Rmail, as a viewer
  • Gnus, as a viewer
  • mu4e, as a viewer
  • message, as a composer

As of writing, this package doesn't fully implement the autocrypt protocol. It is currently still missing:

  • Composing the setup message
  • Parsing the setup message
  • Key-Gossip Parsing (although the logic has been implemented)

I will attempt to on these issues in time, but any contributions, both in terms of extending the support of the protocol, but also MUA integration is welcomed.

#How to use

This package is published on MELPA. Using setup, one might configure autocrypt.el to read headers using Rmail and inject headers using message-mode as follows:

(setup (:package autocrypt)
  (:hook-into rmail-mode message-mode))

Autocrypt recommends using a new or separate key pair for signing and encrypting. If you wish to do so, call the autocrypt-create-account command. In case you want to manually configure your setup, customise the autocrypt-accounts option. Note that configuring a key is necessary for autocrypt.el to function properly.

Bug reports and patches should be sent to my public inbox.

#Extending autocrypt.el

Autocrypt.el uses a custom extension mechanism, comparable to vc-mode. Each time a "generic" function is invoked, either autocrypt-backend-function is used to return the right function or autocrypt-backends is used to find a function.

Support for additional MUAs can be added to this package, but should preferably be part of the MUAs. An external MUA should either set autocrypt-backend-function in every buffer it handles, or modify autocrypt-backends to define a backend.

A backend is designated by a symbol. This is used together with a generic command to check for a function. For example, given the backend gnus and the command get-header, autocrypt would check if any of the following functions are defined:

  • autocrypt-gnus--get-header
  • gnus-autocrypt--get-header
  • gnus--autocrypt-get-header

and call the first one it finds. All a backend has to do is to define these functions and ensure that they are visible (e.g. by autoloading when necessary).


autocrypt.el is distributed under the CC0 1.0 Universal (CC0 1.0) Public Domain Dedication license.