summaryrefslogtreecommitdiff
path: root/lib/crypto/pgp
diff options
context:
space:
mode:
authorTim Culverhouse <tim@timculverhouse.com>2022-05-05 12:53:15 -0500
committerRobin Jarry <robin@jarry.cc>2022-05-06 11:02:50 +0200
commit32a16dcd8dc488c1f360553d9d9f6d121af1b367 (patch)
tree3662082ccfc1df962cb4d79aec005359925df367 /lib/crypto/pgp
parentbb400c7d88a08bc29fd635486dffbbad10f1835d (diff)
downloadaerc-32a16dcd8dc488c1f360553d9d9f6d121af1b367.zip
pgp: check encryption keys before sending message
Add check for public keys of all message recipients (to, cc, and bcc) before sending the message. Adds an OnFocusLost callback to header editors to facilitate a callback for checking keys whenever a new recipient is added (OnChange results in too many keyring checks). Once encryption is initially set, the callbacks are registered. If a public key is not available for any recipient, encryption is turned off. However, notably, the callbacks are still registered meaning as s soon as the user removes the recipients with missing keys, encryption is turned back on. Signed-off-by: Tim Culverhouse <tim@timculverhouse.com> Tested-by: Koni Marti <koni.marti@gmail.com>
Diffstat (limited to 'lib/crypto/pgp')
-rw-r--r--lib/crypto/pgp/pgp.go8
1 files changed, 8 insertions, 0 deletions
diff --git a/lib/crypto/pgp/pgp.go b/lib/crypto/pgp/pgp.go
index e0c5671..f0f3f65 100644
--- a/lib/crypto/pgp/pgp.go
+++ b/lib/crypto/pgp/pgp.go
@@ -263,6 +263,14 @@ func (m *Mail) GetSignerKeyId(s string) (string, error) {
return signerEntity.PrimaryKey.KeyIdString(), nil
}
+func (m *Mail) GetKeyId(s string) (string, error) {
+ entity, err := m.getEntityByEmail(s)
+ if err != nil {
+ return "", err
+ }
+ return entity.PrimaryKey.KeyIdString(), nil
+}
+
func handleSignatureError(e string) models.SignatureValidity {
if e == "openpgp: signature made by unknown entity" {
return models.UnknownEntity