From eaba6b6363f4ac3a78895459f8c09ab716070c8b Mon Sep 17 00:00:00 2001 From: Jakub Date: Thu, 23 Nov 2023 14:54:20 +0100 Subject: [PATCH] fix(GODT-2797): encode attached key name and use same pubkey name as web-app. --- internal/services/smtp/smtp.go | 6 +++++- pkg/message/parser/parser.go | 10 ++++++---- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/internal/services/smtp/smtp.go b/internal/services/smtp/smtp.go index 73d14e95..9b0c1d65 100644 --- a/internal/services/smtp/smtp.go +++ b/internal/services/smtp/smtp.go @@ -138,7 +138,11 @@ func (s *Service) smtpSendMail(ctx context.Context, authID string, from string, return fmt.Errorf("failed to get public key: %w", err) } - parser.AttachPublicKey(pubKey, fmt.Sprintf("publickey - %v - %v", addrKR.GetIdentities()[0].Name, key.GetFingerprint()[:8])) + parser.AttachPublicKey(pubKey, fmt.Sprintf( + "publickey - %v - 0x%v", + addrKR.GetIdentities()[0].Name, + strings.ToUpper(key.GetFingerprint()[:8]), + )) } // Parse the message we want to send (after we have attached the public key). diff --git a/pkg/message/parser/parser.go b/pkg/message/parser/parser.go index e911c76b..a06e8655 100644 --- a/pkg/message/parser/parser.go +++ b/pkg/message/parser/parser.go @@ -18,8 +18,8 @@ package parser import ( - "fmt" "io" + "mime" "strings" "github.com/emersion/go-message" @@ -70,10 +70,12 @@ func (p *Parser) Root() *Part { } func (p *Parser) AttachPublicKey(key, keyName string) { - h := message.Header{} + encName := mime.QEncoding.Encode("utf-8", keyName+".asc") + params := map[string]string{"name": encName, "filename": encName} - 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 := message.Header{} + h.Set("Content-Type", mime.FormatMediaType("application/pgp-keys", params)) + h.Set("Content-Disposition", mime.FormatMediaType("attachment", params)) h.Set("Content-Transfer-Encoding", "base64") p.Root().AddChild(&Part{