MCPcopy
hub / github.com/mailvelope/mailvelope / verifyDetachedSignature

Function verifyDetachedSignature

src/modules/pgpModel.js:274–292  ·  view source on GitHub ↗
({plaintext, senderAddress, detachedSignature, keyringId, lookupKey})

Source from the content-addressed store, hash-verified

272}
273
274export async function verifyDetachedSignature({plaintext, senderAddress, detachedSignature, keyringId, lookupKey}) {
275 try {
276 const keyring = await getPreferredKeyring(keyringId);
277 // determine issuer key id
278 const signature = await readSignature({armoredSignature: detachedSignature});
279 const sigPackets = signature.packets.filterByTag(enums.packet.signature);
280 const issuerKeyIDs = sigPackets.map(sigPacket => sigPacket.issuerKeyID);
281 // sync keys to preferred keyring
282 await syncPublicKeys({keyring, keyIds: issuerKeyIDs, keyringId});
283 // check if we have signing keys in local keyring and if not try key discovery
284 await Promise.all(issuerKeyIDs.map(keyId => acquireSigningKeys({senderAddress, keyring, lookupKey, keyId})));
285 const {signatures} = await keyring.getPgpBackend().verify({plaintext, detachedSignature, keyring});
286 await updateKeyBinding(keyring, senderAddress, signatures);
287 await addSignatureDetails({signatures, keyring, senderAddress});
288 return {signatures};
289 } catch (e) {
290 throw new MvError(l10n.get('verify_error', [e]), 'VERIFY_ERROR');
291 }
292}
293
294async function acquireSigningKeys({senderAddress, keyring, lookupKey, keyId}) {
295 let {[senderAddress]: signerKeys} = await keyring.getKeyByAddress(senderAddress, {keyId});

Callers 2

pgpModel-test.jsFile · 0.90
validateSignatureMethod · 0.90

Calls 8

getPreferredKeyringFunction · 0.90
syncPublicKeysFunction · 0.90
updateKeyBindingFunction · 0.90
acquireSigningKeysFunction · 0.85
addSignatureDetailsFunction · 0.85
verifyMethod · 0.80
getPgpBackendMethod · 0.45
getMethod · 0.45

Tested by

no test coverage detected