From 7f7ae37ff9301e72d6e86181fd780421069aa879 Mon Sep 17 00:00:00 2001 From: Limon Monte Date: Sat, 9 Oct 2021 20:58:38 +0300 Subject: [PATCH] issue #3943 Fix encrypted subject of Thunderbird messages --- extension/js/common/core/mime.ts | 6 +++++- test/source/tests/gmail.ts | 3 +++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/extension/js/common/core/mime.ts b/extension/js/common/core/mime.ts index 9c28e1da7ba..7add8867105 100644 --- a/extension/js/common/core/mime.ts +++ b/extension/js/common/core/mime.ts @@ -156,12 +156,16 @@ export class Mime { }; return await new Promise((resolve, reject) => { try { - parser.onend = () => { + parser.onend = async () => { try { for (const name of Object.keys(parser.node.headers)) { mimeContent.headers[name] = parser.node.headers[name][0].value; } mimeContent.rawSignedContent = Mime.retrieveRawSignedContent([parser.node]); + if (!mimeContent.subject && mimeContent.rawSignedContent) { + const rawSignedContentDecoded = await Mime.decode(Buf.fromUtfStr(mimeContent.rawSignedContent)); + mimeContent.subject = rawSignedContentDecoded.subject; + } for (const node of Object.values(leafNodes)) { if (Mime.getNodeType(node) === 'application/pgp-signature') { mimeContent.signature = node.rawContent; diff --git a/test/source/tests/gmail.ts b/test/source/tests/gmail.ts index afa37ed7284..898e0a5a905 100644 --- a/test/source/tests/gmail.ts +++ b/test/source/tests/gmail.ts @@ -246,6 +246,9 @@ export const defineGmailTests = (testVariant: TestVariant, testWithBrowser: Test ava.default('mail.google.com - pubkey gets rendered with new signed and encrypted Thunderbird signature', testWithBrowser('ci.tests.gmail', async (t, browser) => { const gmailPage = await openGmailPage(t, browser, '/FMfcgzGkbDZKPLBqWFzbgWqCrplTQdNz'); + const pgpBlockUrls = await gmailPage.getFramesUrls(['/chrome/elements/pgp_block.htm'], { sleep: 10, appearIn: 20 }); + const url = pgpBlockUrls[0].split('/chrome/elements/pgp_block.htm')[1]; + await BrowserRecipe.pgpBlockVerifyDecryptedContent(t, browser, { params: url, content: ['Encrypted Subject: [ci.test] Thunderbird html signed + encrypted', '1234'] }); const urls = await gmailPage.getFramesUrls(['/chrome/elements/pgp_pubkey.htm'], { sleep: 10, appearIn: 20 }); expect(urls.length).to.equal(1); await pageHasSecureReplyContainer(t, browser, gmailPage);