diff options
author | Koni Marti <koni.marti@gmail.com> | 2021-12-30 10:25:08 +0100 |
---|---|---|
committer | Robin Jarry <robin@jarry.cc> | 2022-01-07 13:45:34 +0100 |
commit | 69d4e3895fd15f292036320d27bbe9b83651bb78 (patch) | |
tree | 23b63b721f93e7dd8025fe6e6e519f0d5b2cf9f1 /commands/compose | |
parent | 8813fadfe9ec33361314064a284c612e5e3fa784 (diff) | |
download | aerc-69d4e3895fd15f292036320d27bbe9b83651bb78.tar.gz |
pgp: PGP/MIME signing for outgoing emails
implements PGP/MIME signing with go-pgpmail. The Sign() function of go-pgpmail requires a private (signing) key. The signing key which matches the senders email address (from field in email header) is looked up in aerc's copy of the keyring. Private keys can be exported from gpg into aerc as follows: $ gpg --export-secret-keys >> ~/.local/share/aerc/keyring.asc A message is signed with the ":sign" command. The sign command sets a bool flag in the Composer struct. Using the command repeatedly will toggle the flag. References: https://todo.sr.ht/~rjarry/aerc/6 Signed-off-by: Koni Marti <koni.marti@gmail.com>
Diffstat (limited to 'commands/compose')
-rw-r--r-- | commands/compose/sign.go | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/commands/compose/sign.go b/commands/compose/sign.go new file mode 100644 index 0000000..eb985e9 --- /dev/null +++ b/commands/compose/sign.go @@ -0,0 +1,44 @@ +package compose + +import ( + "errors" + "time" + + "git.sr.ht/~rjarry/aerc/widgets" +) + +type Sign struct{} + +func init() { + register(Sign{}) +} + +func (Sign) Aliases() []string { + return []string{"sign"} +} + +func (Sign) Complete(aerc *widgets.Aerc, args []string) []string { + return nil +} + +func (Sign) Execute(aerc *widgets.Aerc, args []string) error { + if len(args) != 1 { + return errors.New("Usage: sign") + } + + composer, _ := aerc.SelectedTab().(*widgets.Composer) + + composer.SetSign(!composer.Sign()) + + var statusline string + + if composer.Sign() { + statusline = "Message will be signed." + } else { + statusline = "Message will not be signed." + } + + aerc.PushStatus(statusline, 10*time.Second) + + return nil +} |