From da751a38e3955b86bcbf433474026c37f9c20be2 Mon Sep 17 00:00:00 2001 From: James Houlahan Date: Wed, 2 Sep 2020 14:31:11 +0200 Subject: [PATCH] fix: public key names and content types --- internal/smtp/user.go | 3 ++- internal/store/user_message.go | 2 +- pkg/message/parser.go | 4 ++-- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/internal/smtp/user.go b/internal/smtp/user.go index caed8442..5b4901b4 100644 --- a/internal/smtp/user.go +++ b/internal/smtp/user.go @@ -21,6 +21,7 @@ package smtp import ( "encoding/base64" + "fmt" "io" "mime" "net/mail" @@ -179,7 +180,7 @@ func (su *smtpUser) Send(from string, to []string, messageReader io.Reader) (err return err } - attachedPublicKeyName = "publickey - " + kr.GetIdentities()[0].Name + attachedPublicKeyName = fmt.Sprintf("publickey - %v - %v", kr.GetIdentities()[0].Name, firstKey.GetFingerprint()) } message, mimeBody, plainBody, attReaders, err := message.Parse(messageReader, attachedPublicKey, attachedPublicKeyName) diff --git a/internal/store/user_message.go b/internal/store/user_message.go index 7ea629e1..e85a8322 100644 --- a/internal/store/user_message.go +++ b/internal/store/user_message.go @@ -63,7 +63,7 @@ func (store *Store) CreateDraft( attachmentReaders = append(attachmentReaders, strings.NewReader(attachedPublicKey)) publicKeyAttachment := &pmapi.Attachment{ Name: attachedPublicKeyName + ".asc", - MIMEType: "application/pgp-key", + MIMEType: "application/pgp-keys", Header: textproto.MIMEHeader{}, } attachments = append(attachments, publicKeyAttachment) diff --git a/pkg/message/parser.go b/pkg/message/parser.go index cd64ad79..db4c6d39 100644 --- a/pkg/message/parser.go +++ b/pkg/message/parser.go @@ -348,8 +348,8 @@ func getPlainBody(part *parser.Part) []byte { func attachPublicKey(p *parser.Part, key, keyName string) error { h := message.Header{} - h.Set("Content-Type", fmt.Sprintf(`application/pgp-key; name="%v"`, keyName)) - h.Set("Content-Disposition", fmt.Sprintf(`attachment; filename="%v.asc.pgp"`, keyName)) + h.Set("Content-Type", fmt.Sprintf(`application/pgp-keys; name="%v.asc"; filename="%v.asc"`, keyName, keyName)) + h.Set("Content-Disposition", fmt.Sprintf(`attachment; name="%v.asc"; filename="%v.asc"`, keyName, keyName)) h.Set("Content-Transfer-Encoding", "base64") body := new(bytes.Buffer)