From f4a784d8a4869f2db40e032628324a0b73856f61 Mon Sep 17 00:00:00 2001 From: James Houlahan Date: Mon, 5 Dec 2022 14:38:42 +0100 Subject: [PATCH] fix: Only use first key to encrypt attachments and drafts --- attachment.go | 9 +++++++-- message_send.go | 14 ++++++++++++-- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/attachment.go b/attachment.go index 3b0db61..faf15e8 100644 --- a/attachment.go +++ b/attachment.go @@ -19,12 +19,17 @@ func (c *Client) UploadAttachment(ctx context.Context, addrKR *crypto.KeyRing, r Attachment Attachment } - sig, err := addrKR.SignDetached(crypto.NewPlainMessage(req.Body)) + kr, err := addrKR.FirstKey() + if err != nil { + return res.Attachment, fmt.Errorf("failed to get first key: %w", err) + } + + sig, err := kr.SignDetached(crypto.NewPlainMessage(req.Body)) if err != nil { return Attachment{}, fmt.Errorf("failed to sign attachment: %w", err) } - enc, err := addrKR.EncryptAttachment(crypto.NewPlainMessage(req.Body), req.Filename) + enc, err := kr.EncryptAttachment(crypto.NewPlainMessage(req.Body), req.Filename) if err != nil { return Attachment{}, fmt.Errorf("failed to encrypt attachment: %w", err) } diff --git a/message_send.go b/message_send.go index 351f199..54936fd 100644 --- a/message_send.go +++ b/message_send.go @@ -13,7 +13,12 @@ func (c *Client) CreateDraft(ctx context.Context, addrKR *crypto.KeyRing, req Cr Message Message } - enc, err := addrKR.Encrypt(crypto.NewPlainMessageFromString(req.Message.Body), nil) + kr, err := addrKR.FirstKey() + if err != nil { + return Message{}, fmt.Errorf("failed to get first key: %w", err) + } + + enc, err := kr.Encrypt(crypto.NewPlainMessageFromString(req.Message.Body), nil) if err != nil { return Message{}, fmt.Errorf("failed to encrypt draft: %w", err) } @@ -40,7 +45,12 @@ func (c *Client) UpdateDraft(ctx context.Context, draftID string, addrKR *crypto } if req.Message.Body != "" { - enc, err := addrKR.Encrypt(crypto.NewPlainMessageFromString(req.Message.Body), nil) + kr, err := addrKR.FirstKey() + if err != nil { + return Message{}, fmt.Errorf("failed to get first key: %w", err) + } + + enc, err := kr.Encrypt(crypto.NewPlainMessageFromString(req.Message.Body), nil) if err != nil { return Message{}, fmt.Errorf("failed to encrypt draft: %w", err) }