From 9b1feed68bed615e105ace8e18ccabd0c8bf30a8 Mon Sep 17 00:00:00 2001 From: Jakub Date: Tue, 27 Feb 2024 14:43:06 +0100 Subject: [PATCH] feat(GODT-3214): encrypt only with primary key. --- internal/services/imapservice/connector.go | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/internal/services/imapservice/connector.go b/internal/services/imapservice/connector.go index 4c7c1e74..0c1621a0 100644 --- a/internal/services/imapservice/connector.go +++ b/internal/services/imapservice/connector.go @@ -677,13 +677,18 @@ func (s *Connector) importMessage( } if err := s.identityState.WithAddrKR(s.addrID, func(_, addrKR *crypto.KeyRing) error { + primaryKey, errKey := addrKR.FirstKey() + if errKey != nil { + return fmt.Errorf("failed to get primary key for import: %w", errKey) + } + var messageID string p, err2 := parser.New(bytes.NewReader(literal)) if err2 != nil { return fmt.Errorf("failed to parse literal: %w", err2) } if slices.Contains(labelIDs, proton.DraftsLabel) { - msg, err := s.createDraftWithParser(ctx, p, addrKR, addr) + msg, err := s.createDraftWithParser(ctx, p, primaryKey, addr) if err != nil { return fmt.Errorf("failed to create draft: %w", err) } @@ -699,7 +704,7 @@ func (s *Connector) importMessage( } literal = buf.Bytes() } - str, err := s.client.ImportMessages(ctx, addrKR, 1, 1, []proton.ImportReq{{ + str, err := s.client.ImportMessages(ctx, primaryKey, 1, 1, []proton.ImportReq{{ Metadata: proton.ImportMetadata{ AddressID: s.addrID, LabelIDs: labelIDs, @@ -726,7 +731,7 @@ func (s *Connector) importMessage( return fmt.Errorf("failed to fetch message: %w", err) } - if literal, err = message.DecryptAndBuildRFC822(addrKR, full.Message, full.AttData, defaultMessageJobOpts()); err != nil { + if literal, err = message.DecryptAndBuildRFC822(primaryKey, full.Message, full.AttData, defaultMessageJobOpts()); err != nil { return fmt.Errorf("failed to build message: %w", err) }