diff options
author | Tim Culverhouse <tim@timculverhouse.com> | 2022-04-25 08:30:44 -0500 |
---|---|---|
committer | Robin Jarry <robin@jarry.cc> | 2022-04-27 09:46:25 +0200 |
commit | 57699b1fa6367a42d5877afcfdb1504e52835ed9 (patch) | |
tree | b5000bfad3d62f01127f5831d64d27aac07872e1 /config | |
parent | d09636ee0b9957ed60fc01224ddfbb03c4f4b7fa (diff) | |
download | aerc-57699b1fa6367a42d5877afcfdb1504e52835ed9.tar.gz |
feat: add gpg integration
This commit adds gpg system integration. This is done through two new
packages: gpgbin, which handles the system calls and parsing; and gpg
which is mostly a copy of emersion/go-pgpmail with modifications to
interface with package gpgbin. gpg includes tests for many cases, and
by it's nature also tests package gpgbin. I separated these in case an
external dependency is ever used for the gpg sys-calls/parsing (IE we
mirror how go-pgpmail+openpgp currently are dependencies)
Two new config options are introduced:
* pgp-provider. If it is not explicitly set to "gpg", aerc will default to
it's internal pgp provider
* pgp-key-id: (Optionally) specify a key by short or long keyId
Signed-off-by: Tim Culverhouse <tim@timculverhouse.com>
Acked-by: Koni Marti <koni.marti@gmail.com>
Acked-by: Robin Jarry <robin@jarry.cc>
Diffstat (limited to 'config')
-rw-r--r-- | config/aerc.conf | 6 | ||||
-rw-r--r-- | config/config.go | 6 |
2 files changed, 11 insertions, 1 deletions
diff --git a/config/aerc.conf b/config/aerc.conf index 00c6c499..1a3c1f42 100644 --- a/config/aerc.conf +++ b/config/aerc.conf @@ -3,6 +3,12 @@ [general] # +# If set to "gpg", aerc will use system gpg binary and keystore for all crypto +# operations. Otherwise, the internal openpgp implemenation will be used. +# +# Default: internal +pgp-provider=internal + # By default, the file permissions of accounts.conf must be restrictive and # only allow reading by the file owner (0600). Set this option to true to # ignore this permission check. Use this with care as it may expose your diff --git a/config/config.go b/config/config.go index 0c9a40fd..8480f10a 100644 --- a/config/config.go +++ b/config/config.go @@ -104,6 +104,7 @@ type AccountConfig struct { SignatureCmd string EnableFoldersSort bool `ini:"enable-folders-sort"` FoldersSort []string `ini:"folders-sort" delim:","` + PgpKeyId string `ini:"pgp-key-id"` } type BindingConfig struct { @@ -248,6 +249,8 @@ func loadAccountConfig(path string) ([]AccountConfig, error) { account.Archive = val } else if key == "enable-folders-sort" { account.EnableFoldersSort, _ = strconv.ParseBool(val) + } else if key == "pgp-key-id" { + account.PgpKeyId = val } else if key != "name" { account.Params[key] = val } @@ -582,13 +585,14 @@ func validateBorderChars(section *ini.Section, config *UIConfig) error { func validatePgpProvider(section *ini.Section) error { m := map[string]bool{ + "gpg": true, "internal": true, } for key, val := range section.KeysHash() { switch key { case "pgp-provider": if !m[strings.ToLower(val)] { - return fmt.Errorf("%v must be 'internal'", key) + return fmt.Errorf("%v must be either 'gpg' or 'internal'", key) } } } |