From b5ab175953fd3645fed398f4def556e661e44d41 Mon Sep 17 00:00:00 2001 From: the-djmaze <> Date: Mon, 20 Feb 2023 15:49:38 +0100 Subject: [PATCH] Merge GnuPG and OpenPGP.js passphrases --- dev/Storage/Passphrases.js | 1 + dev/Stores/User/GnuPG.js | 13 +++++++------ dev/Stores/User/OpenPGP.js | 11 ++++++----- 3 files changed, 14 insertions(+), 11 deletions(-) create mode 100644 dev/Storage/Passphrases.js diff --git a/dev/Storage/Passphrases.js b/dev/Storage/Passphrases.js new file mode 100644 index 000000000..4ecf6ccda --- /dev/null +++ b/dev/Storage/Passphrases.js @@ -0,0 +1 @@ +export const Passphrases = new Map(); diff --git a/dev/Stores/User/GnuPG.js b/dev/Stores/User/GnuPG.js index c85490921..5057ce25c 100644 --- a/dev/Stores/User/GnuPG.js +++ b/dev/Stores/User/GnuPG.js @@ -11,14 +11,15 @@ import { showScreenPopup } from 'Knoin/Knoin'; import { OpenPgpKeyPopupView } from 'View/Popup/OpenPgpKey'; import { AskPopupView } from 'View/Popup/Ask'; +import { Passphrases } from 'Storage/Passphrases'; + const - passphrases = new Map(), askPassphrase = async (privateKey, btnTxt = 'LABEL_SIGN') => { const key = privateKey.id, - pass = passphrases.has(key) - ? {password:passphrases.get(key), remember:false} + pass = Passphrases.has(key) + ? {password:Passphrases.get(key), remember:false} : await AskPopupView.password('GnuPG key
' + key + ' ' + privateKey.emails[0], 'OPENPGP/'+btnTxt); - pass && pass.remember && passphrases.set(key, pass.password); + pass && pass.remember && Passphrases.set(key, pass.password); return pass.password; }, @@ -83,7 +84,7 @@ export const GnuPGUserStore = new class { key.armor = oData.Result; showScreenPopup(OpenPgpKeyPopupView, [key]); } else { - passphrases.delete(key.id); + Passphrases.delete(key.id); } }, { keyId: key.id, @@ -198,7 +199,7 @@ export const GnuPGUserStore = new class { if (result?.Result && false !== result.Result.data) { return result.Result; } - passphrases.delete(key.id); + Passphrases.delete(key.id); } } } diff --git a/dev/Stores/User/OpenPGP.js b/dev/Stores/User/OpenPGP.js index fd649b3b3..49b6ab633 100644 --- a/dev/Stores/User/OpenPGP.js +++ b/dev/Stores/User/OpenPGP.js @@ -12,22 +12,23 @@ import { showScreenPopup } from 'Knoin/Knoin'; import { OpenPgpKeyPopupView } from 'View/Popup/OpenPgpKey'; import { AskPopupView } from 'View/Popup/Ask'; +import { Passphrases } from 'Storage/Passphrases'; + const findOpenPGPKey = (keys, query/*, sign*/) => keys.find(key => key.emails.includes(query) || query == key.id || query == key.fingerprint ), - passphrases = new Map(), decryptKey = async (privateKey, btnTxt = 'LABEL_SIGN') => { if (privateKey.key.isDecrypted()) { return privateKey.key; } const key = privateKey.id, - pass = passphrases.has(key) - ? {password:passphrases.get(key), remember:false} + pass = Passphrases.has(key) + ? {password:Passphrases.get(key), remember:false} : await AskPopupView.password( - 'OpenPGP.js key
' + privateKey.id + ' ' + privateKey.emails[0], + 'OpenPGP.js key
' + key + ' ' + privateKey.emails[0], 'OPENPGP/'+btnTxt ); if (pass) { @@ -36,7 +37,7 @@ const privateKey: privateKey.key, passphrase }); - result && pass.remember && passphrases.set(key, passphrase); + result && pass.remember && Passphrases.set(key, passphrase); return result; } },