({armored, keyringId, senderAddress, lookupKey})
| 249 | } |
| 250 | |
| 251 | export async function verifyMessage({armored, keyringId, senderAddress, lookupKey}) { |
| 252 | try { |
| 253 | const message = await readCleartextMessage(armored); |
| 254 | const signingKeyIds = message.getSigningKeyIDs(); |
| 255 | if (!signingKeyIds.length) { |
| 256 | throw new MvError('No signatures found'); |
| 257 | } |
| 258 | const keyring = await getPreferredKeyring(keyringId); |
| 259 | await syncPublicKeys({keyring, keyIds: signingKeyIds, keyringId}); |
| 260 | if (senderAddress) { |
| 261 | for (const signingKeyId of signingKeyIds) { |
| 262 | await acquireSigningKeys({senderAddress, keyring, lookupKey, keyId: signingKeyId}); |
| 263 | } |
| 264 | } |
| 265 | const {data, signatures} = await keyring.getPgpBackend().verify({armored, message, keyring}); |
| 266 | await updateKeyBinding(keyring, senderAddress, signatures); |
| 267 | await addSignatureDetails({signatures, keyring, senderAddress}); |
| 268 | return {data, signatures}; |
| 269 | } catch (e) { |
| 270 | throw new MvError(l10n.get('verify_error', [e]), 'VERIFY_ERROR'); |
| 271 | } |
| 272 | } |
| 273 | |
| 274 | export async function verifyDetachedSignature({plaintext, senderAddress, detachedSignature, keyringId, lookupKey}) { |
| 275 | try { |
no test coverage detected