mirror of
https://github.com/kremalicious/metamask-extension.git
synced 2024-12-23 09:52:26 +01:00
6f47fece56
Implement `eth_decrypt` and `eth_getEncryptionPublicKey`. This allows decryption backed by the user's private key. The message decryption uses a confirmation flow similar to the messaging signing flow, where the message to be decrypted is also able to be decrypted inline for the user to read directly before confirming.
37 lines
1.6 KiB
JavaScript
37 lines
1.6 KiB
JavaScript
import { valuesFor } from '../app/helpers/utils/util'
|
|
import log from 'loglevel'
|
|
|
|
export default function txHelper (unapprovedTxs, unapprovedMsgs, personalMsgs, decryptMsgs, encryptionPublicKeyMsgs, typedMessages, network) {
|
|
log.debug('tx-helper called with params:')
|
|
log.debug({ unapprovedTxs, unapprovedMsgs, personalMsgs, decryptMsgs, encryptionPublicKeyMsgs, typedMessages, network })
|
|
|
|
const txValues = network ? valuesFor(unapprovedTxs).filter((txMeta) => txMeta.metamaskNetworkId === network) : valuesFor(unapprovedTxs)
|
|
log.debug(`tx helper found ${txValues.length} unapproved txs`)
|
|
|
|
const msgValues = valuesFor(unapprovedMsgs)
|
|
log.debug(`tx helper found ${msgValues.length} unsigned messages`)
|
|
let allValues = txValues.concat(msgValues)
|
|
|
|
const personalValues = valuesFor(personalMsgs)
|
|
log.debug(`tx helper found ${personalValues.length} unsigned personal messages`)
|
|
allValues = allValues.concat(personalValues)
|
|
|
|
const decryptValues = valuesFor(decryptMsgs)
|
|
log.debug(`tx helper found ${decryptValues.length} decrypt requests`)
|
|
allValues = allValues.concat(decryptValues)
|
|
|
|
const encryptionPublicKeyValues = valuesFor(encryptionPublicKeyMsgs)
|
|
log.debug(`tx helper found ${encryptionPublicKeyValues.length} encryptionPublicKey requests`)
|
|
allValues = allValues.concat(encryptionPublicKeyValues)
|
|
|
|
const typedValues = valuesFor(typedMessages)
|
|
log.debug(`tx helper found ${typedValues.length} unsigned typed messages`)
|
|
allValues = allValues.concat(typedValues)
|
|
|
|
allValues = allValues.sort((a, b) => {
|
|
return a.time - b.time
|
|
})
|
|
|
|
return allValues
|
|
}
|