From 66015103bbc8229bd64e20f533d82deb61c37ffc Mon Sep 17 00:00:00 2001 From: martgil <46025304+martgil@users.noreply.github.com> Date: Thu, 3 Apr 2025 15:11:57 +0800 Subject: [PATCH 1/3] refactor: add reliable checks for ambigious file extensions --- extension/js/common/core/attachment.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extension/js/common/core/attachment.ts b/extension/js/common/core/attachment.ts index 25909141051..f21dea9b1f4 100644 --- a/extension/js/common/core/attachment.ts +++ b/extension/js/common/core/attachment.ts @@ -204,7 +204,7 @@ export class Attachment { } else if (this.name === 'message' && isBodyEmpty) { // treat message as encryptedMsg when empty body for the 'message' attachment return 'encryptedMsg'; - } else if (this.name.match(/(\.pgp$)|(\.gpg$)|(\.[a-zA-Z0-9]{3,4}\.asc$)/g)) { + } else if (this.name.match(/(\.pgp$)|(\.gpg$)|(\.[a-zA-Z0-9]{3,4}\.asc$)/g) && !this.isPublicKey() && !this.isPrivateKey()) { // ends with one of .gpg, .pgp, .???.asc, .????.asc return 'encryptedFile'; // todo: after #4906 is done we should "decrypt" the encryptedFile here to see if it's a binary 'publicKey' (as in message 1869220e0c8f16dd) From 31e9213e02257d814fa3a26c67cb3c3cbb74da9a Mon Sep 17 00:00:00 2001 From: martgil <46025304+martgil@users.noreply.github.com> Date: Mon, 7 Apr 2025 13:35:36 +0800 Subject: [PATCH 2/3] test: add test --- .../message-export-1960e404123e1cbc.json | 157 ++++++++++++++++++ test/source/tests/decrypt.ts | 15 ++ 2 files changed, 172 insertions(+) create mode 100644 test/source/mock/google/exported-messages/message-export-1960e404123e1cbc.json diff --git a/test/source/mock/google/exported-messages/message-export-1960e404123e1cbc.json b/test/source/mock/google/exported-messages/message-export-1960e404123e1cbc.json new file mode 100644 index 00000000000..0ca7d23c6b3 --- /dev/null +++ b/test/source/mock/google/exported-messages/message-export-1960e404123e1cbc.json @@ -0,0 +1,157 @@ +{ + "acctEmail": "flowcrypt.compatibility@gmail.com", + "full": { + "id": "1960e404123e1cbc", + "threadId": "1960e404123e1cbc", + "labelIds": [ + "Label_2" + ], + "snippet": "From: XYZ Secure Mail To: sender@domain.com Please find my PGP public key attached.", + "payload": { + "partId": "", + "mimeType": "multipart/mixed", + "filename": "", + "headers": [ + { + "name": "Date", + "value": "Wed, 2 Apr 2025 04:15:42 +0200 (CEST)" + }, + { + "name": "From", + "value": "sender@domain.com" + }, + { + "name": "Reply-To", + "value": "securemail@domain.com" + }, + { + "name": "To", + "value": "flowcrypt.compatibility@gmail.com" + }, + { + "name": "Subject", + "value": "INFORMATION: Secure email PGP public key request response" + }, + { + "name": "MIME-Version", + "value": "1.0" + }, + { + "name": "Content-Type", + "value": "multipart/mixed; boundary=\"----=_Part_87311_665893808.1743560149859\"" + }, + { + "name": "X-Mailer", + "value": "Totemo_TrustMail_(Notification)" + }, + { + "name": "X-Totemo_TrustMail_Notification_Name", + "value": "UBSreplyCertInfoPGP" + } + ], + "body": { + "size": 0 + }, + "parts": [ + { + "partId": "0", + "mimeType": "multipart/alternative", + "filename": "", + "headers": [ + { + "name": "Content-Type", + "value": "multipart/alternative; boundary=\"----=_Part_87307_327781610.1743560142630\"" + } + ], + "body": { + "size": 0 + }, + "parts": [ + { + "partId": "0.0", + "mimeType": "text/plain", + "filename": "", + "headers": [ + { + "name": "Content-Type", + "value": "text/plain; charset=\"UTF-8\"" + }, + { + "name": "Content-Transfer-Encoding", + "value": "quoted-printable" + } + ], + "body": { + "size": 106, + "data": "RnJvbTpVQlMgU2VjdXJlIE1haWwgR2F0ZXdheVRvOnNpbW9uLnNoYW9AY2Fub3B5LmNsb3VkDQoNCg0KUGxlYXNlIGZpbmQgbXkgUEdQIHB1YmxpYyBrZXkgYXR0YWNoZWQuIA0KDQoNCg==" + } + }, + { + "partId": "0.1", + "mimeType": "text/html", + "filename": "", + "headers": [ + { + "name": "Content-Type", + "value": "text/html; charset=\"UTF-8\"" + }, + { + "name": "Content-Transfer-Encoding", + "value": "quoted-printable" + } + ], + "body": { + "size": 592, + "data": "IDxwDQogIHN0eWxlPSJmb250LWZhbWlseTogYXJpYWwgLCBoZWx2ZXRpY2EgLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZTogeC1zbWFsbDsiPg0KICAgIDx0YWJsZQ0KICAgIHN0eWxlPSJib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlO2JvcmRlcjogbm9uZTtmb250LWZhbWlseTogYXJpYWwgLCBoZWx2ZXRpY2EgLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZTogeC1zbWFsbDsiPiAgIDx0Ym9keT4NCiAgICAgIDx0cj4gIDx0ZD5Gcm9tOjwvdGQ-ICA8dGQgc3R5bGU9InBhZGRpbmctbGVmdDogNS4wcHg7Ij5VQlMgU2VjdXJlDQogICAgICAgICAgTWFpbCBHYXRld2F5PC90ZD4gICA8L3RyPg0KICAgICAgPHRyPiAgICAgPHRkPlRvOjwvdGQ-ICA8dGQNCiAgICAgICAgc3R5bGU9InBhZGRpbmctbGVmdDogNS4wcHg7Ij5zaW1vbi5zaGFvQGNhbm9weS5jbG91ZDwvdGQ-ICAgPC90cj4gPC90Ym9keT4NCiAgPC90YWJsZT4gPC9wPg0KIDxwDQogIHN0eWxlPSJmb250LWZhbWlseTogYXJpYWwgLCBoZWx2ZXRpY2EgLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZTogeC1zbWFsbDsiPg0KICBQbGVhc2UgZmluZCBteSBQR1AgcHVibGljIGtleSBhdHRhY2hlZC4gPC9wPg==" + } + } + ] + }, + { + "partId": "1", + "mimeType": "application/pgp-keys", + "filename": "piotr-za.wisniewski@ubs.com.asc", + "headers": [ + { + "name": "Content-Type", + "value": "application/pgp-keys; name=\"piotr-za.wisniewski@ubs.com.asc\"" + }, + { + "name": "Content-Transfer-Encoding", + "value": "7bit" + }, + { + "name": "Content-Disposition", + "value": "attachment; filename=\"piotr-za.wisniewski@ubs.com.asc\"" + } + ], + "body": { + "attachmentId": "ANGjdJ-uMdPYym4OHGhBVnL8hnt1vJMpGHf6iygGsasqWEQyPan6mJPGOUsfjhtnRjqDMRIz2sg6-408I8mZUCieTwKdUUanksx5gSrMSoyaVmOpNOBT-BQ0tx7ADmoUc3NHoRIqPq_F9_pF4a5bKBJjkt3HPsyYAL2mQxei-6wBAJ81duW2URxfNrEKyogKMUfd5YeudJietJZnFgrir-d9OVsGXz_mMNth1Pz9Q5tLcJIbjnXgesKxpEVILPKNwP0NmXzcxv2ooELbWndrGBjH1jfsKQwRT2s5RuMsO4iQxhUEOmb2hUJCbaOj_zNMgPuuGupuNlLqGaFHFnLAih60N0HoMCBhElI3ZCQz3dfBI6n1PEByTXCV673C4eA", + "size": 1801 + } + } + ] + }, + "sizeEstimate": 7938, + "historyId": "1478989", + "internalDate": "1743560142000" + }, + "attachments": { + "ANGjdJ-uMdPYym4OHGhBVnL8hnt1vJMpGHf6iygGsasqWEQyPan6mJPGOUsfjhtnRjqDMRIz2sg6-408I8mZUCieTwKdUUanksx5gSrMSoyaVmOpNOBT-BQ0tx7ADmoUc3NHoRIqPq_F9_pF4a5bKBJjkt3HPsyYAL2mQxei-6wBAJ81duW2URxfNrEKyogKMUfd5YeudJietJZnFgrir-d9OVsGXz_mMNth1Pz9Q5tLcJIbjnXgesKxpEVILPKNwP0NmXzcxv2ooELbWndrGBjH1jfsKQwRT2s5RuMsO4iQxhUEOmb2hUJCbaOj_zNMgPuuGupuNlLqGaFHFnLAih60N0HoMCBhElI3ZCQz3dfBI6n1PEByTXCV673C4eA": { + "data": "LS0tLS1CRUdJTiBQR1AgUFVCTElDIEtFWSBCTE9DSy0tLS0tDQpWZXJzaW9uOiBPcGVuUEdQIEtpdGV3b3Jrcw0KQ29tbWVudDogS2l0ZXdvcmtzIE9wZW5QR1AgLSBodHRwOi8vd3d3LnRvdGVtby5jb20NCg0KbVFFTkJHZGx6Y2dCQ0FEUGx2UUQxS2VQMmEvY1Z3OHpqWFdZVWhHWE01NUorRFhFOEo0d2lYS3FEWitIbmFtNA0KQ2FIWHZ2UWlSSmlPVjQwR2Fwb3RSd2J3YTg3ZFdsbEJFWWF0WVIyNmZpR0I1NWhHM281RDBkNHFhOU01c1NZbw0KSHFJV01FREd2MWlXTVhIdzMyMC8rakJ2Mzc3Zy9lQWMyUXI1aWZUdWRjQnNGcVdnaG1Ja1R2ejBydzRXcjJEYw0KUFZTc3RWaE1wc05PeE4rNFZYa0lUMVRiZUM4WjRyT29nZ2RCR3RtVlI4Z2Fpcm5CVitMUkpYZ1J1TGVhU0pYZQ0Kd1FNdVJlc2E4UUk1Ykt6VUxuY3MwY1VxTlRtOGVZZHNHVEVqbEpKdkVhb1FkSG1UZlAwdkZGM3ZhWmN4ckVWSA0KejFtU2VpYTA3eDJVNTRzdndGdzQ1Ykc3WTRoYmMvcEpvSUluQUJFQkFBRzBPWEJwYjNSeUxYcGhMbmRwYzI1cA0KWlhkemEybEFkV0p6TG1OdmJTQThjR2x2ZEhJdGVtRXVkMmx6Ym1sbGQzTnJhVUIxWW5NdVkyOXRQb2tDSEFRVA0KQVFnQUJnVUNaMlhOeUFBS0NSQ0toNFBLUTJRajRtL1lELzBjdktsMWVqWXRDSHFZZGRETHdYUXMrZXA3R1Noag0KQ2x0K1ZoVjFLTW9OODMxekNFeHUvNnlwQ004Wkd2OVFDbTNpdDBVWXBINzZGbURqVEhJZlZTY2FhYStRR3ZTTg0KWlVScStaVk4wenV5YnRJZzI4eTVlUGpES1ltdFFrMGJsK2EyVC9meTdGbWFaMjVFQyt2L1oya3FQVnBROTk0WQ0KdDZYaEhpb0ZwMk5BbExtSE9xanBCUXk2MmkwOXF5QlVZd3FuYUJPV2dMbDA0SG1LT2NqcS9wRFZ0aE56bmdsZw0KSkNoT0hoSUJJZmplQkh6MXVDUUVUSWw3YU9FdG1sT1FJY1YwWEhkVjBwb0xFcnByV2ZoYjAraTl0VnFLWU1FMg0Kbzh2WXhxVDRUd1ovVDkvMzFXeENiMk1ESmJEaEI2TlRZajE5T0hDclJvelM3MDUraWUybEZGcjQ0cjBwRk9FdA0KMWZtNnBuZm9GVHMvRnhqZTV3VkV0U0xrUk05MmtTRlJlVHUzN2R3SEFsdkJNZll3a1FjUGxocWNaUFI3QzBPVQ0KQWxnQy9QeVdlMWJ4eVdxREtuUURtRmVFdm4vMEk1T2hiMENKZEkyd3FIVDAwSm90RDhHcks3RWREVk5YWDNtUQ0KcmZzZmRvczFxV2h4Ukd5SGFJODVqYi9FRXVwajhjeGhjVWFhdjZKRHViVGQ5NS9DYXhOa3ZxSEppaWdWVkQ1Nw0KRXN5TXVDOWRVUjJtWmNNNWxJelpNQzRmVVBMUVJmZ2poaGpGVHk1L0lxeld1bENqU201RmI4dHIwczczU200SA0Kd0RNMzFGSnEycldKQjJhVm9oUEJZQ2lEREkzdytxOEZHTGoxQXZVRkozWm9WTXpYTHBadjYwbzFHSDdqK1UxQg0KbDVkSms4MGJ5RjhpbElrQk9RUVRBUWdBSXdVQ1oyWE55QVlMQ1FnSEF3SUVGUWdKQ2dRV0FnTUJBaDRCQWhzUA0KQlFrRHdtY0FBQW9KRUc4THJWVUlYN3h0ckpBSC8zTjRlR3ZJRWZ5ajlpUTJ3ZDNUWFNYQUZ3LzZCNGRQWGFqUA0KNGxTc2tjc25vMUpNNjhBVzdPbmVDckJuRjdIR2RVTWpoSjZxTjcvYmxYUzdYbW9DekN5MzhFYmRvN0tvQ2tIZw0KU0xOekJ6RDYySTBZRHhSNWcvL0VsYml6SllGMThDQ3hDUkloT0s4NW9GK0VBNmNSd1MxM1NaSTQ3Tkxia0UzNQ0KdVlHWTZWS1g0bllPTUtOc2pPZDNOUC8zOWFtOUs4Z0RGME5VU2hLeVNEMXArSDVvTDRTODB0dWFETHB0RzhmZA0KTVQwMTh3SXJUTW9JN01yL2Rmblh1dzdFUmwrd3U3bEw3MG85eHd1RkhOWlkxakgwY1hza2lLVEZ2cDcrMnRaTg0KdHR3NzRXYnI0cG5wcDdBbDBnd0U2NUpIN1dTc1VsZ01GdlJXdlBINW9Vc2tyY0FjbDVjPQ0KPTFBN0UNCi0tLS0tRU5EIFBHUCBQVUJMSUMgS0VZIEJMT0NLLS0tLS0NCg", + "size": 1801 + } + }, + "raw": { + "id": "1960e404123e1cbc", + "threadId": "1960e404123e1cbc", + "labelIds": [ + "Label_2" + ], + "snippet": "From: XYZ Secure Mail To: sender@domain.com Please find my PGP public key attached.", + "sizeEstimate": 7938, + "raw": "RGVsaXZlcmVkLVRvOiBzaW1vbi5zaGFvQGNhbm9weS5jbG91ZA0KUmVjZWl2ZWQ6IGJ5IDIwMDI6YTJlOjk2ZDM6MDpiMDozMGI6ZmU3Yjo2M2VmIHdpdGggU01UUCBpZCBkMTljc3AyNDkyNDM3bGpqOw0KICAgICAgICBUdWUsIDEgQXByIDIwMjUgMTk6MTU6NTAgLTA3MDAgKFBEVCkNClgtR29vZ2xlLVNtdHAtU291cmNlOiBBR0hUK0lFWVdjQ2lVU1AremxlN2IxcFM2ZnZ2U0tid0o2WnhPWXFiYTEybVJYS0ZCeE92M3pOUnlqY3lzTzU1V05sanJuSzFUMnJLDQpYLVJlY2VpdmVkOiBieSAyMDAyOmExNzo5MDc6OTdjNDpiMDphYzc6MThjOToyOTc1IHdpdGggU01UUCBpZCBhNjQwYzIzYTYyZjNhLWFjN2ExYWJkZTU4bXI0MjIwNjY2NmIuNDguMTc0MzU2MDE1MDQ5ODsNCiAgICAgICAgVHVlLCAwMSBBcHIgMjAyNSAxOToxNTo1MCAtMDcwMCAoUERUKQ0KQVJDLVNlYWw6IGk9MTsgYT1yc2Etc2hhMjU2OyB0PTE3NDM1NjAxNTA7IGN2PW5vbmU7DQogICAgICAgIGQ9Z29vZ2xlLmNvbTsgcz1hcmMtMjAyNDA2MDU7DQogICAgICAgIGI9YS9GQnJsZStNVGh5emI3K0hFcHZrU09vN1dKZVo0eERwUEordnErd3ViUnpkOFIrOG5KS1M3SW5oNVc4NFpBN0tTDQogICAgICAgICBvMVY3L09seHc0QUFSeXdETm5FVWJxVWpPeU5NY2JkcVRYN1F1cVFnT3RXdmFGSHpUQ1pvSlZldkNxWW9icDhSeTJGTg0KICAgICAgICAgMUJYV0FVdjB6SGoyZ0NRamlYQ1VpMVNSQWhCU0VHRllKbTVhaWdVYkRTT2IxNm5ZYTlabEVEY1IySktmR05wcVBGTVYNCiAgICAgICAgIDhyaVhqdjRUVDB5MDZjdUFnN3JRZjZOc0svV0dZUUxQNE9jNm5acm8xS3lTTXlGM3g5d3EyL3lsUFhRYU94SDZsMVhEDQogICAgICAgICBiaGVCRnVJN3FZaUZLenZqQVdYUkw4YjRsb1JMaVZUZDlHOU9lRWt5bzRwc1IwMTZzQjZxblBwWGZndEs2Z2xFNjkzSA0KICAgICAgICAgUWFKdz09DQpBUkMtTWVzc2FnZS1TaWduYXR1cmU6IGk9MTsgYT1yc2Etc2hhMjU2OyBjPXJlbGF4ZWQvcmVsYXhlZDsgZD1nb29nbGUuY29tOyBzPWFyYy0yMDI0MDYwNTsNCiAgICAgICAgaD1taW1lLXZlcnNpb246c3ViamVjdDptZXNzYWdlLWlkOnRvOnJlcGx5LXRvOmZyb206ZGF0ZQ0KICAgICAgICAgOmRraW0tc2lnbmF0dXJlOw0KICAgICAgICBiaD1HaXpLSEJ5clhoems3Z3d4T3lINVcxb2JPNUQyL09sS0FJbVhGc3drM2hRPTsNCiAgICAgICAgZmg9bFRhYXhhOXduYzBwMW5mam1VVUFBdjIySjYyeXI2QldTOGRkRWpnVDJsTT07DQogICAgICAgIGI9QmRtaEdwNm1tTXRMNGlCRHRHN3dpRVNEQnVIQ0pJYmpNOWN0OWRsUFZQQXZEK0FFNW5GSjdneGdXNGNZd3NvLzdNDQogICAgICAgICBJcXovNHRvZ1Nrekx1SUhCcEZCOW0wdjFISGs3V2hTelVGUDVZYXVJVGhDMlp5OTloNUEwYTVIWVBDdnFxa29PMmcyTg0KICAgICAgICAgL2hEaG5ZNjVFdzFsK1VDZlFoa2xSZzN6SXJiRXNPWU9RWmF2SDI2QkhIbUZ1OUtOUmJnaUZzZk0rY0JTYmRpcis3R1ANCiAgICAgICAgIFNQUTJxL2wwVnFnYndrZk5BbjRHZktEWDRhWW5aRzFoeHQwM0ZpWWxQejJyUTlHWFB3RDh4Y1doMlRuSjJxVHdrNUZTDQogICAgICAgICBpOXBtNkt2RFRpTWxNcjBPais0SXQ4MCs3SWxzWitXQk9RWHRDekFFVHpRaU12VGMrTXlFRlE4bXV0UVhIdE9abEo3aA0KICAgICAgICAgRllIZz09Ow0KICAgICAgICBkYXJhPWdvb2dsZS5jb20NCkFSQy1BdXRoZW50aWNhdGlvbi1SZXN1bHRzOiBpPTE7IG14Lmdvb2dsZS5jb207DQogICAgICAgZGtpbT1wYXNzIGhlYWRlci5pPUB1YnMuY29tIGhlYWRlci5zPXNyc2EyMDQ4IGhlYWRlci5iPUs3ZHBhQVhvOw0KICAgICAgIHNwZj1wYXNzIChnb29nbGUuY29tOiBkb21haW4gb2YgcGlvdHItemEud2lzbmlld3NraUB1YnMuY29tIGRlc2lnbmF0ZXMgMTY1LjIyMi41Ni4xNjAgYXMgcGVybWl0dGVkIHNlbmRlcikgc210cC5tYWlsZnJvbT1waW90ci16YS53aXNuaWV3c2tpQHVicy5jb207DQogICAgICAgZG1hcmM9cGFzcyAocD1SRUpFQ1Qgc3A9UkVKRUNUIGRpcz1OT05FKSBoZWFkZXIuZnJvbT11YnMuY29tDQpSZXR1cm4tUGF0aDogPHBpb3RyLXphLndpc25pZXdza2lAdWJzLmNvbT4NClJlY2VpdmVkOiBmcm9tIGRtei16dXItZ3cxLXdtLnVicy5jb20gKGRtei16dXItZ3cxLXdtLnVicy5jb20uIFsxNjUuMjIyLjU2LjE2MF0pDQogICAgICAgIGJ5IG14Lmdvb2dsZS5jb20gd2l0aCBFU01UUFMgaWQgYTY0MGMyM2E2MmYzYS1hYzcxOTY5MWQyYXNpODIwNDc5MDY2Yi43MjguMjAyNS4wNC4wMS4xOS4xNS41MA0KICAgICAgICBmb3IgPHNpbW9uLnNoYW9AY2Fub3B5LmNsb3VkPg0KICAgICAgICAodmVyc2lvbj1UTFMxXzMgY2lwaGVyPVRMU19BRVNfMjU2X0dDTV9TSEEzODQgYml0cz0yNTYvMjU2KTsNCiAgICAgICAgVHVlLCAwMSBBcHIgMjAyNSAxOToxNTo1MCAtMDcwMCAoUERUKQ0KUmVjZWl2ZWQtU1BGOiBwYXNzIChnb29nbGUuY29tOiBkb21haW4gb2YgcGlvdHItemEud2lzbmlld3NraUB1YnMuY29tIGRlc2lnbmF0ZXMgMTY1LjIyMi41Ni4xNjAgYXMgcGVybWl0dGVkIHNlbmRlcikgY2xpZW50LWlwPTE2NS4yMjIuNTYuMTYwOw0KQXV0aGVudGljYXRpb24tUmVzdWx0czogbXguZ29vZ2xlLmNvbTsNCiAgICAgICBka2ltPXBhc3MgaGVhZGVyLmk9QHVicy5jb20gaGVhZGVyLnM9c3JzYTIwNDggaGVhZGVyLmI9SzdkcGFBWG87DQogICAgICAgc3BmPXBhc3MgKGdvb2dsZS5jb206IGRvbWFpbiBvZiBwaW90ci16YS53aXNuaWV3c2tpQHVicy5jb20gZGVzaWduYXRlcyAxNjUuMjIyLjU2LjE2MCBhcyBwZXJtaXR0ZWQgc2VuZGVyKSBzbXRwLm1haWxmcm9tPXBpb3RyLXphLndpc25pZXdza2lAdWJzLmNvbTsNCiAgICAgICBkbWFyYz1wYXNzIChwPVJFSkVDVCBzcD1SRUpFQ1QgZGlzPU5PTkUpIGhlYWRlci5mcm9tPXVicy5jb20NClJlY2VpdmVkOiBmcm9tIGxvY2FsaG9zdCAobG9jYWxob3N0IFsxMjcuMC4wLjFdKQ0KCWJ5IHBvc3RmaXguYW1hdmlzZCAoUG9zdGZpeCkgd2l0aCBFU01UUCBpZCA0WlM3a3QweDNIellraFlODQoJZm9yIDxzaW1vbi5zaGFvQGNhbm9weS5jbG91ZD47IFdlZCwgIDIgQXByIDIwMjUgMDQ6MTU6NTAgKzAyMDAgKENFU1QpDQpES0lNLVNpZ25hdHVyZTogdj0xOyBhPXJzYS1zaGEyNTY7IGM9cmVsYXhlZC9yZWxheGVkOyBkPXVicy5jb207IGg9DQoJeC1tYWlsZXI6Y29udGVudC10eXBlOmNvbnRlbnQtdHlwZTptaW1lLXZlcnNpb246c3ViamVjdDpzdWJqZWN0DQoJOm1lc3NhZ2UtaWQ6cmVwbHktdG86ZnJvbTpmcm9tOmRhdGU6ZGF0ZTpyZWNlaXZlZDpyZWNlaXZlZDsgcz0NCglzcnNhMjA0ODsgdD0xNzQzNTYwMTUwOyBiaD1HaXpLSEJ5clhoems3Z3d4T3lINVcxb2JPNUQyL09sS0FJbVhGDQoJc3drM2hRPTsgYj1LN2RwYUFYb01aUjBoQ1pReGhDZVNCR2tPaGlCb211cUtWaU5zaS9Ta1Z0YzExeEVkdGVLTw0KCXdjTkd6TFRRZjNnRmowTTQ2cE15N3pYM1FNc0tNcEtuVWR2MHUwZ1FKV29EWDdJN2FaSTJnQko1TDJXLy9XNnoNCgltN2IrYkJRRTc3dDMrMXNSZHZYN1YzQzJ5aE5IbktTZ2U0bDk2V3BCZ1FKZVFJYjQwbFo3Y0JJM3lkNWdGYkVPDQoJRlhUbFI0SU9EVnoyUmVHUmxqYU1sZWM5VVQyQkZvRFc4S1pyNHQweFl1UTZKczdsSmRuQ0QyYTJBZFkwK3NaYg0KCXdvZVNzK01Xb0dBZkRCMDhrcXZUaFN2ejZteWpiVGI4TlAvendoeVByTWFTeEk0R0hBMGI5WDdvbFB1SzEwZ3INCgl2Si9KQit5NTJ3SEZ0aDU5YzJOSFEvRGlFbXdwOFdoSmc9PQ0KUmVjZWl2ZWQ6IGZyb20gZG16LXp1ci1ndzEtd20udWJzLmNvbSAoWzEyNy4wLjAuMV0pDQoJYnkgbG9jYWxob3N0IChhMzAyLTM2NDQtNzA0My56dXIudWJzLm5ldCBbMTI3LjAuMC4xXSkgKGFtYXZpc2QtbmV3LCBwb3J0IDEwMDI0KQ0KCXdpdGggRVNNVFAgaWQgUl9tcHp2WlNTRmphIGZvciA8c2ltb24uc2hhb0BjYW5vcHkuY2xvdWQ-Ow0KCVdlZCwgIDIgQXByIDIwMjUgMDQ6MTU6NTAgKzAyMDAgKENFU1QpDQpSZWNlaXZlZDogZnJvbSBUcnVzdE1haWw_QjJCLVBST0Q_T1VUR09JTkc_W3NtdHBdICh1bmtub3duIFsxMC4zOC4zLjM2XSkNCglieSBwb3N0Zml4LmJ5cGFzcyAoUG9zdGZpeCkgd2l0aCBTTVRQIGlkIDRaUzdrdDBWTXh6WWtoWU0NCglmb3IgPHNpbW9uLnNoYW9AY2Fub3B5LmNsb3VkPjsgV2VkLCAgMiBBcHIgMjAyNSAwNDoxNTo1MCArMDIwMCAoQ0VTVCkNCkRhdGU6IFdlZCwgMiBBcHIgMjAyNSAwNDoxNTo0MiArMDIwMCAoQ0VTVCkNCkZyb206ICJwaW90ci16YS53aXNuaWV3c2tpQHVicy5jb20iIDxwaW90ci16YS53aXNuaWV3c2tpQHVicy5jb20-DQpSZXBseS1Ubzogc2VjdXJlbWFpbEB1YnMuY29tDQpUbzogc2ltb24uc2hhb0BjYW5vcHkuY2xvdWQNCk1lc3NhZ2UtSUQ6IDw2Nzg5NDczNjcuODczMTAuMTc0MzU2MDE0MjYzMUB4enVyNTU5M3BhcC56dXIuc3dpc3NiYW5rLmNvbT4NClN1YmplY3Q6IElORk9STUFUSU9OOiBTZWN1cmUgZW1haWwgUEdQIHB1YmxpYyBrZXkgcmVxdWVzdCByZXNwb25zZQ0KTUlNRS1WZXJzaW9uOiAxLjANCkNvbnRlbnQtVHlwZTogbXVsdGlwYXJ0L21peGVkOyANCglib3VuZGFyeT0iLS0tLT1fUGFydF84NzMxMV82NjU4OTM4MDguMTc0MzU2MDE0OTg1OSINClgtTWFpbGVyOiBUb3RlbW9fVHJ1c3RNYWlsXyhOb3RpZmljYXRpb24pDQpYLVRvdGVtb19UcnVzdE1haWxfTm90aWZpY2F0aW9uX05hbWU6IFVCU3JlcGx5Q2VydEluZm9QR1ANCg0KLS0tLS0tPV9QYXJ0Xzg3MzExXzY2NTg5MzgwOC4xNzQzNTYwMTQ5ODU5DQpDb250ZW50LVR5cGU6IG11bHRpcGFydC9hbHRlcm5hdGl2ZTsgDQoJYm91bmRhcnk9Ii0tLS09X1BhcnRfODczMDdfMzI3NzgxNjEwLjE3NDM1NjAxNDI2MzAiDQoNCi0tLS0tLT1fUGFydF84NzMwN18zMjc3ODE2MTAuMTc0MzU2MDE0MjYzMA0KQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PSJVVEYtOCINCkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IHF1b3RlZC1wcmludGFibGUNCg0KRnJvbTpVQlMgU2VjdXJlIE1haWwgR2F0ZXdheVRvOnNpbW9uLnNoYW9AY2Fub3B5LmNsb3VkDQoNCg0KUGxlYXNlIGZpbmQgbXkgUEdQIHB1YmxpYyBrZXkgYXR0YWNoZWQuPTIwDQoNCg0KDQotLS0tLS09X1BhcnRfODczMDdfMzI3NzgxNjEwLjE3NDM1NjAxNDI2MzANCkNvbnRlbnQtVHlwZTogdGV4dC9odG1sOyBjaGFyc2V0PSJVVEYtOCINCkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IHF1b3RlZC1wcmludGFibGUNCg0KIDxwDQogIHN0eWxlPTNEImZvbnQtZmFtaWx5OiBhcmlhbCAsIGhlbHZldGljYSAsIHNhbnMtc2VyaWY7Zm9udC1zaXplOiB4LXNtYWxsOyI9DQo-DQogICAgPHRhYmxlDQogICAgc3R5bGU9M0QiYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTtib3JkZXI6IG5vbmU7Zm9udC1mYW1pbHk6IGFyaWFsICwgaGU9DQpsdmV0aWNhICwgc2Fucy1zZXJpZjtmb250LXNpemU6IHgtc21hbGw7Ij4gICA8dGJvZHk-DQogICAgICA8dHI-ICA8dGQ-RnJvbTo8L3RkPiAgPHRkIHN0eWxlPTNEInBhZGRpbmctbGVmdDogNS4wcHg7Ij5VQlMgU2VjdXJlDQogICAgICAgICAgTWFpbCBHYXRld2F5PC90ZD4gICA8L3RyPg0KICAgICAgPHRyPiAgICAgPHRkPlRvOjwvdGQ-ICA8dGQNCiAgICAgICAgc3R5bGU9M0QicGFkZGluZy1sZWZ0OiA1LjBweDsiPnNpbW9uLnNoYW9AY2Fub3B5LmNsb3VkPC90ZD4gICA8L3RyPj0NCiA8L3Rib2R5Pg0KICA8L3RhYmxlPiA8L3A-DQogPHANCiAgc3R5bGU9M0QiZm9udC1mYW1pbHk6IGFyaWFsICwgaGVsdmV0aWNhICwgc2Fucy1zZXJpZjtmb250LXNpemU6IHgtc21hbGw7Ij0NCj4NCiAgUGxlYXNlIGZpbmQgbXkgUEdQIHB1YmxpYyBrZXkgYXR0YWNoZWQuIDwvcD4NCi0tLS0tLT1fUGFydF84NzMwN18zMjc3ODE2MTAuMTc0MzU2MDE0MjYzMC0tDQoNCi0tLS0tLT1fUGFydF84NzMxMV82NjU4OTM4MDguMTc0MzU2MDE0OTg1OQ0KQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9wZ3Ata2V5czsgbmFtZT0icGlvdHItemEud2lzbmlld3NraUB1YnMuY29tLmFzYyINCkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDdiaXQNCkNvbnRlbnQtRGlzcG9zaXRpb246IGF0dGFjaG1lbnQ7IGZpbGVuYW1lPSJwaW90ci16YS53aXNuaWV3c2tpQHVicy5jb20uYXNjIg0KDQotLS0tLUJFR0lOIFBHUCBQVUJMSUMgS0VZIEJMT0NLLS0tLS0NClZlcnNpb246IE9wZW5QR1AgS2l0ZXdvcmtzDQpDb21tZW50OiBLaXRld29ya3MgT3BlblBHUCAtIGh0dHA6Ly93d3cudG90ZW1vLmNvbQ0KDQptUUVOQkdkbHpjZ0JDQURQbHZRRDFLZVAyYS9jVnc4empYV1lVaEdYTTU1SitEWEU4SjR3aVhLcURaK0huYW00DQpDYUhYdnZRaVJKaU9WNDBHYXBvdFJ3YndhODdkV2xsQkVZYXRZUjI2ZmlHQjU1aEczbzVEMGQ0cWE5TTVzU1lvDQpIcUlXTUVER3YxaVdNWEh3MzIwLytqQnYzNzdnL2VBYzJRcjVpZlR1ZGNCc0ZxV2dobUlrVHZ6MHJ3NFdyMkRjDQpQVlNzdFZoTXBzTk94Tis0VlhrSVQxVGJlQzhaNHJPb2dnZEJHdG1WUjhnYWlybkJWK0xSSlhnUnVMZWFTSlhlDQp3UU11UmVzYThRSTViS3pVTG5jczBjVXFOVG04ZVlkc0dURWpsSkp2RWFvUWRIbVRmUDB2RkYzdmFaY3hyRVZIDQp6MW1TZWlhMDd4MlU1NHN2d0Z3NDViRzdZNGhiYy9wSm9JSW5BQkVCQUFHME9YQnBiM1J5TFhwaExuZHBjMjVwDQpaWGR6YTJsQWRXSnpMbU52YlNBOGNHbHZkSEl0ZW1FdWQybHpibWxsZDNOcmFVQjFZbk11WTI5dFBva0NIQVFUDQpBUWdBQmdVQ1oyWE55QUFLQ1JDS2g0UEtRMlFqNG0vWUQvMGN2S2wxZWpZdENIcVlkZERMd1hRcytlcDdHU2hqDQpDbHQrVmhWMUtNb044MzF6Q0V4dS82eXBDTThaR3Y5UUNtM2l0MFVZcEg3NkZtRGpUSElmVlNjYWFhK1FHdlNODQpaVVJxK1pWTjB6dXlidElnMjh5NWVQakRLWW10UWswYmwrYTJUL2Z5N0ZtYVoyNUVDK3YvWjJrcVBWcFE5OTRZDQp0NlhoSGlvRnAyTkFsTG1IT3FqcEJReTYyaTA5cXlCVVl3cW5hQk9XZ0xsMDRIbUtPY2pxL3BEVnRoTnpuZ2xnDQpKQ2hPSGhJQklmamVCSHoxdUNRRVRJbDdhT0V0bWxPUUljVjBYSGRWMHBvTEVycHJXZmhiMCtpOXRWcUtZTUUyDQpvOHZZeHFUNFR3Wi9UOS8zMVd4Q2IyTURKYkRoQjZOVFlqMTlPSENyUm96UzcwNStpZTJsRkZyNDRyMHBGT0V0DQoxZm02cG5mb0ZUcy9GeGplNXdWRXRTTGtSTTkya1NGUmVUdTM3ZHdIQWx2Qk1mWXdrUWNQbGhxY1pQUjdDME9VDQpBbGdDL1B5V2UxYnh5V3FES25RRG1GZUV2bi8wSTVPaGIwQ0pkSTJ3cUhUMDBKb3REOEdySzdFZERWTlhYM21RDQpyZnNmZG9zMXFXaHhSR3lIYUk4NWpiL0VFdXBqOGN4aGNVYWF2NkpEdWJUZDk1L0NheE5rdnFISmlpZ1ZWRDU3DQpFc3lNdUM5ZFVSMm1aY001bEl6Wk1DNGZVUExRUmZnamhoakZUeTUvSXF6V3VsQ2pTbTVGYjh0cjBzNzNTbTRIDQp3RE0zMUZKcTJyV0pCMmFWb2hQQllDaURESTN3K3E4RkdMajFBdlVGSjNab1ZNelhMcFp2NjBvMUdIN2orVTFCDQpsNWRKazgwYnlGOGlsSWtCT1FRVEFRZ0FJd1VDWjJYTnlBWUxDUWdIQXdJRUZRZ0pDZ1FXQWdNQkFoNEJBaHNQDQpCUWtEd21jQUFBb0pFRzhMclZVSVg3eHRySkFILzNONGVHdklFZnlqOWlRMndkM1RYU1hBRncvNkI0ZFBYYWpQDQo0bFNza2Nzbm8xSk02OEFXN09uZUNyQm5GN0hHZFVNamhKNnFONy9ibFhTN1htb0N6Q3kzOEViZG83S29Da0hnDQpTTE56QnpENjJJMFlEeFI1Zy8vRWxiaXpKWUYxOENDeENSSWhPSzg1b0YrRUE2Y1J3UzEzU1pJNDdOTGJrRTM1DQp1WUdZNlZLWDRuWU9NS05zak9kM05QLzM5YW05SzhnREYwTlVTaEt5U0QxcCtINW9MNFM4MHR1YURMcHRHOGZkDQpNVDAxOHdJclRNb0k3TXIvZGZuWHV3N0VSbCt3dTdsTDcwbzl4d3VGSE5aWTFqSDBjWHNraUtURnZwNysydFpODQp0dHc3NFdicjRwbnBwN0FsMGd3RTY1Skg3V1NzVWxnTUZ2Uld2UEg1b1Vza3JjQWNsNWM9DQo9MUE3RQ0KLS0tLS1FTkQgUEdQIFBVQkxJQyBLRVkgQkxPQ0stLS0tLQ0KDQotLS0tLS09X1BhcnRfODczMTFfNjY1ODkzODA4LjE3NDM1NjAxNDk4NTktLQ0K", + "historyId": "1478989", + "internalDate": "1743560142000" + } +} \ No newline at end of file diff --git a/test/source/tests/decrypt.ts b/test/source/tests/decrypt.ts index 1046bcfd19c..7ef113a4e78 100644 --- a/test/source/tests/decrypt.ts +++ b/test/source/tests/decrypt.ts @@ -272,6 +272,21 @@ export const defineDecryptTests = (testVariant: TestVariant, testWithBrowser: Te }) ); + test( + `decrypt - render a plain text email with an ambiguous public key name as its attachment`, + testWithBrowser(async (t, browser) => { + const threadId = '1960e404123e1cbc'; + const { acctEmail } = await BrowserRecipe.setupCommonAcctWithAttester(t, browser, 'compatibility'); + const inboxPage = await browser.newExtensionPage(t, `chrome/settings/inbox/inbox.htm?acctEmail=${acctEmail}&threadId=${threadId}`); + await inboxPage.waitForSelTestState('ready'); + await inboxPage.waitAll('iframe'); + expect(await inboxPage.isElementPresent('@container-attachments')).to.equal(true); + const attachmentsContainer = await inboxPage.waitAny('@container-attachments'); + const attachments = await attachmentsContainer.$$('.pgp_block.publicKey'); + expect(attachments.length).to.equal(1); + }) + ); + test( `decrypt - outlook message with ATTxxxx encrypted email is correctly decrypted`, testWithBrowser(async (t, browser) => { From fc628e9871b5b4ff02d0696ac5d1fe66f21ab6bd Mon Sep 17 00:00:00 2001 From: martgil <46025304+martgil@users.noreply.github.com> Date: Mon, 7 Apr 2025 13:42:14 +0800 Subject: [PATCH 3/3] refactor: update test material info --- .../exported-messages/message-export-1960e404123e1cbc.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/test/source/mock/google/exported-messages/message-export-1960e404123e1cbc.json b/test/source/mock/google/exported-messages/message-export-1960e404123e1cbc.json index 0ca7d23c6b3..f125294a069 100644 --- a/test/source/mock/google/exported-messages/message-export-1960e404123e1cbc.json +++ b/test/source/mock/google/exported-messages/message-export-1960e404123e1cbc.json @@ -110,11 +110,11 @@ { "partId": "1", "mimeType": "application/pgp-keys", - "filename": "piotr-za.wisniewski@ubs.com.asc", + "filename": "peter.xyz@domain.com.asc", "headers": [ { "name": "Content-Type", - "value": "application/pgp-keys; name=\"piotr-za.wisniewski@ubs.com.asc\"" + "value": "application/pgp-keys; name=\"peter.xyz@domain.com.asc\"" }, { "name": "Content-Transfer-Encoding", @@ -122,7 +122,7 @@ }, { "name": "Content-Disposition", - "value": "attachment; filename=\"piotr-za.wisniewski@ubs.com.asc\"" + "value": "attachment; filename=\"peter.xyz@domain.com.asc\"" } ], "body": {