Get PGP verify message working using Promise.

#89
This commit is contained in:
the-djmaze 2022-01-24 13:43:53 +01:00
parent 1d3673f117
commit ce971de919
5 changed files with 74 additions and 58 deletions

View file

@ -21,6 +21,7 @@ export class OpenPgpUserSettings /*extends AbstractViewSettings*/ {
this.canOpenPGP = !!PgpUserStore.openpgpKeyring;
// this.canOpenPGP = Settings.capa(Capa.OpenPGP);
this.canMailvelope = !!window.mailvelope;
this.allowDraftAutosave = SettingsUserStore.allowDraftAutosave;
@ -41,6 +42,11 @@ export class OpenPgpUserSettings /*extends AbstractViewSettings*/ {
}
}
onBuild() {
window.mailvelope
&& mailvelope.createSettingsContainer('#mailvelope-settings'/*[, keyring], options*/);
}
/**
* @param {OpenPgpKeyModel} openPgpKeyToRemove
* @returns {void}

View file

@ -270,21 +270,24 @@ export const PgpUserStore = new class {
* @returns {void}
*/
deleteKey(openPgpKeyToRemove) {
if (openPgpKeyToRemove && openPgpKeyToRemove.deleteAccess() && this.openpgpKeyring) {
let findedItem = this.openpgpPublicKeys.find(key => openPgpKeyToRemove === key);
if (findedItem) {
this.openpgpPublicKeys.remove(findedItem);
this.openpgpKeyring.publicKeys.removeForId(findedItem.guid);
} else {
findedItem = this.openpgpPrivateKeys.find(key => openPgpKeyToRemove === key);
if (findedItem) {
this.openpgpPrivateKeys.remove(findedItem);
this.openpgpKeyring.privateKeys.removeForId(findedItem.guid);
const openpgpKeyring = this.openpgpKeyring;
if (openPgpKeyToRemove && openPgpKeyToRemove.deleteAccess() && openpgpKeyring) {
let items = [
this.openpgpPrivateKeys.find(key => openPgpKeyToRemove === key),
this.openpgpPublicKeys.find(key => openPgpKeyToRemove === key)
];
if (items[0]) {
this.openpgpPrivateKeys.remove(items[0]);
openpgpKeyring.privateKeys.removeForId(items[0].guid);
delegateRunOnDestroy(items[0]);
}
if (items[1]) {
this.openpgpPublicKeys.remove(items[1]);
openpgpKeyring.publicKeys.removeForId(items[1].guid);
delegateRunOnDestroy(items[1]);
}
if (findedItem) {
delegateRunOnDestroy(findedItem);
this.openpgpKeyring.store();
if (items[0] || items[1]) {
openpgpKeyring.store();
}
// this.reloadOpenPgpKeys();
}

View file

@ -635,7 +635,7 @@ export class MailMessageView extends AbstractViewRight {
pgpVerify(self) {
const message = self.message();
if (message && PgpUserStore.isSupported()) {
const mode = PgpUserStore.hasPublicKeyForEmails([message.from[0].email()]);
PgpUserStore.hasPublicKeyForEmails([message.from[0].email]).then(mode => {
if ('gnupg' === mode) {
let params = message.pgpSigned(); // { BodyPartId: "1", SigPartId: "2", MicAlg: "pgp-sha256" }
if (params) {
@ -654,6 +654,7 @@ export class MailMessageView extends AbstractViewRight {
} else if ('openpgp' === mode) {
let text = null;
try {
// TODO: if message.pgpSigned().SigPartId then fetch raw from server
text = PgpUserStore.openpgp.cleartext.readArmored(message.plain);
} catch (e) {
console.error(e);
@ -681,6 +682,7 @@ export class MailMessageView extends AbstractViewRight {
// controlsHelper(dom, this, false, i18n('PGP_NOTIFICATIONS/DECRYPTION_ERROR'));
}
}
});
}
}

View file

@ -602,7 +602,7 @@ class GnuPG
return $this->GPG->verify($signed_text, $signature, $plaintext);
}
if ($this->Crypt_GPG) {
return $this->Crypt_GPG->verify($signed_text, $signature = '');
return $this->Crypt_GPG->verify($signed_text, $signature);
}
return false;
}
@ -619,7 +619,7 @@ class GnuPG
return $this->GPG->verifyFile($filename, $signature, $plaintext);
}
if ($this->Crypt_GPG) {
return $this->Crypt_GPG->verifyFile($filename, $signature = '');
return $this->Crypt_GPG->verifyFile($filename, $signature);
}
return false;
}

View file

@ -83,3 +83,8 @@
</tr>
</tbody>
</table>
<!-- ko if: canMailvelope -->
<h1>Mailvelope</h1>
<div id="mailvelope-settings" style="height:40em"></div>
<!-- /ko -->