diff --git a/lib/crypto/gpg/gpgbin/encrypt.go b/lib/crypto/gpg/gpgbin/encrypt.go index 4cbac37..e72ba14 100644 --- a/lib/crypto/gpg/gpgbin/encrypt.go +++ b/lib/crypto/gpg/gpgbin/encrypt.go @@ -2,6 +2,7 @@ package gpgbin import ( "bytes" + "fmt" "io" "git.sr.ht/~rjarry/aerc/models" @@ -27,7 +28,10 @@ func Encrypt(r io.Reader, to []string, from string) ([]byte, error) { g.cmd.Run() outRdr := bytes.NewReader(g.stdout.Bytes()) var md models.MessageDetails - parse(outRdr, &md) + err := parse(outRdr, &md) + if err != nil { + return nil, fmt.Errorf("gpg: failure to encrypt: %v. check public key(s)", err) + } var buf bytes.Buffer io.Copy(&buf, md.Body) diff --git a/lib/crypto/gpg/gpgbin/gpgbin.go b/lib/crypto/gpg/gpgbin/gpgbin.go index bce3097..9f79e97 100644 --- a/lib/crypto/gpg/gpgbin/gpgbin.go +++ b/lib/crypto/gpg/gpgbin/gpgbin.go @@ -228,6 +228,8 @@ func parse(r io.Reader, md *models.MessageDetails) error { md.Micalg = micalgs[micalg] case "NODATA": md.SignatureError = "gpg: no signature packet found" + case "FAILURE": + return fmt.Errorf(strings.TrimPrefix(line, "[GNUPG:] ")) } } md.Body = bytes.NewReader(msgContent) diff --git a/widgets/compose.go b/widgets/compose.go index 49a8eff..2016abb 100644 --- a/widgets/compose.go +++ b/widgets/compose.go @@ -598,7 +598,10 @@ func (c *Composer) WriteMessage(header *mail.Header, writer io.Writer) error { if err != nil { return err } - cleartext.Close() + err = cleartext.Close() + if err != nil { + return err + } io.Copy(writer, &buf) return nil