mirror of
https://github.com/the-djmaze/snappymail.git
synced 2026-07-13 03:27:39 +03:00
Merge GnuPG and OpenPGP.js passphrases
This commit is contained in:
parent
8a8d1d756e
commit
b5ab175953
3 changed files with 14 additions and 11 deletions
1
dev/Storage/Passphrases.js
Normal file
1
dev/Storage/Passphrases.js
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
export const Passphrases = new Map();
|
||||||
|
|
@ -11,14 +11,15 @@ import { showScreenPopup } from 'Knoin/Knoin';
|
||||||
import { OpenPgpKeyPopupView } from 'View/Popup/OpenPgpKey';
|
import { OpenPgpKeyPopupView } from 'View/Popup/OpenPgpKey';
|
||||||
import { AskPopupView } from 'View/Popup/Ask';
|
import { AskPopupView } from 'View/Popup/Ask';
|
||||||
|
|
||||||
|
import { Passphrases } from 'Storage/Passphrases';
|
||||||
|
|
||||||
const
|
const
|
||||||
passphrases = new Map(),
|
|
||||||
askPassphrase = async (privateKey, btnTxt = 'LABEL_SIGN') => {
|
askPassphrase = async (privateKey, btnTxt = 'LABEL_SIGN') => {
|
||||||
const key = privateKey.id,
|
const key = privateKey.id,
|
||||||
pass = passphrases.has(key)
|
pass = Passphrases.has(key)
|
||||||
? {password:passphrases.get(key), remember:false}
|
? {password:Passphrases.get(key), remember:false}
|
||||||
: await AskPopupView.password('GnuPG key<br>' + key + ' ' + privateKey.emails[0], 'OPENPGP/'+btnTxt);
|
: await AskPopupView.password('GnuPG key<br>' + 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;
|
return pass.password;
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
@ -83,7 +84,7 @@ export const GnuPGUserStore = new class {
|
||||||
key.armor = oData.Result;
|
key.armor = oData.Result;
|
||||||
showScreenPopup(OpenPgpKeyPopupView, [key]);
|
showScreenPopup(OpenPgpKeyPopupView, [key]);
|
||||||
} else {
|
} else {
|
||||||
passphrases.delete(key.id);
|
Passphrases.delete(key.id);
|
||||||
}
|
}
|
||||||
}, {
|
}, {
|
||||||
keyId: key.id,
|
keyId: key.id,
|
||||||
|
|
@ -198,7 +199,7 @@ export const GnuPGUserStore = new class {
|
||||||
if (result?.Result && false !== result.Result.data) {
|
if (result?.Result && false !== result.Result.data) {
|
||||||
return result.Result;
|
return result.Result;
|
||||||
}
|
}
|
||||||
passphrases.delete(key.id);
|
Passphrases.delete(key.id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -12,22 +12,23 @@ import { showScreenPopup } from 'Knoin/Knoin';
|
||||||
import { OpenPgpKeyPopupView } from 'View/Popup/OpenPgpKey';
|
import { OpenPgpKeyPopupView } from 'View/Popup/OpenPgpKey';
|
||||||
import { AskPopupView } from 'View/Popup/Ask';
|
import { AskPopupView } from 'View/Popup/Ask';
|
||||||
|
|
||||||
|
import { Passphrases } from 'Storage/Passphrases';
|
||||||
|
|
||||||
const
|
const
|
||||||
findOpenPGPKey = (keys, query/*, sign*/) =>
|
findOpenPGPKey = (keys, query/*, sign*/) =>
|
||||||
keys.find(key =>
|
keys.find(key =>
|
||||||
key.emails.includes(query) || query == key.id || query == key.fingerprint
|
key.emails.includes(query) || query == key.id || query == key.fingerprint
|
||||||
),
|
),
|
||||||
|
|
||||||
passphrases = new Map(),
|
|
||||||
decryptKey = async (privateKey, btnTxt = 'LABEL_SIGN') => {
|
decryptKey = async (privateKey, btnTxt = 'LABEL_SIGN') => {
|
||||||
if (privateKey.key.isDecrypted()) {
|
if (privateKey.key.isDecrypted()) {
|
||||||
return privateKey.key;
|
return privateKey.key;
|
||||||
}
|
}
|
||||||
const key = privateKey.id,
|
const key = privateKey.id,
|
||||||
pass = passphrases.has(key)
|
pass = Passphrases.has(key)
|
||||||
? {password:passphrases.get(key), remember:false}
|
? {password:Passphrases.get(key), remember:false}
|
||||||
: await AskPopupView.password(
|
: await AskPopupView.password(
|
||||||
'OpenPGP.js key<br>' + privateKey.id + ' ' + privateKey.emails[0],
|
'OpenPGP.js key<br>' + key + ' ' + privateKey.emails[0],
|
||||||
'OPENPGP/'+btnTxt
|
'OPENPGP/'+btnTxt
|
||||||
);
|
);
|
||||||
if (pass) {
|
if (pass) {
|
||||||
|
|
@ -36,7 +37,7 @@ const
|
||||||
privateKey: privateKey.key,
|
privateKey: privateKey.key,
|
||||||
passphrase
|
passphrase
|
||||||
});
|
});
|
||||||
result && pass.remember && passphrases.set(key, passphrase);
|
result && pass.remember && Passphrases.set(key, passphrase);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue