diff options
| author | selsta <selsta@sent.at> | 2026-06-26 02:14:03 +0200 |
|---|---|---|
| committer | selsta <selsta@sent.at> | 2026-06-26 02:14:03 +0200 |
| commit | 23930cb0e909a503171535a0a62b74debba1b885 (patch) | |
| tree | 85f0c72f0b35029152b6e468d14bbef0fdc3a042 | |
| parent | 003e667576f38812e27cbb79125a0ba96036225d (diff) | |
| download | monzero-gui-23930cb0e909a503171535a0a62b74debba1b885.tar.gz monzero-gui-23930cb0e909a503171535a0a62b74debba1b885.tar.xz monzero-gui-23930cb0e909a503171535a0a62b74debba1b885.zip | |
Transfer, AddressBook: confirm unauthenticated OpenAlias
| -rw-r--r-- | js/TxUtils.js | 1 | ||||
| -rw-r--r-- | pages/AddressBook.qml | 26 | ||||
| -rw-r--r-- | pages/Transfer.qml | 27 |
3 files changed, 54 insertions, 0 deletions
diff --git a/js/TxUtils.js b/js/TxUtils.js index 110342e8..28c1147a 100644 --- a/js/TxUtils.js +++ b/js/TxUtils.js @@ -100,6 +100,7 @@ function handleOpenAliasResolution(address, descriptionText) { if (isAddressValid) { return { address: resolvedAddress, + confirm: true, message: qsTr("Address found, but the DNSSEC signatures could not be verified, so this address may be spoofed"), }; } else { diff --git a/pages/AddressBook.qml b/pages/AddressBook.qml index 396f6bed..65e315e2 100644 --- a/pages/AddressBook.qml +++ b/pages/AddressBook.qml @@ -387,8 +387,20 @@ Rectangle { visible: TxUtils.isValidOpenAliasAddress(addressLine.text) enabled : visible onClicked: { + const openAlias = addressLine.text; const response = TxUtils.handleOpenAliasResolution(addressLine.text, descriptionLine.text); if (response) { + if (response.confirm && response.address) { + const resolvedAddress = response.address; + const resolvedDescription = response.description; + oa_confirm(openAlias, resolvedAddress, function() { + addressLine.text = resolvedAddress; + if (resolvedDescription) { + descriptionLine.text = resolvedDescription; + } + }); + return; + } if (response.message) { oa_message(response.message); } @@ -532,6 +544,20 @@ Rectangle { oaPopup.open() } + function oa_confirm(openAlias, resolvedAddress, onAccepted) { + confirmationDialog.title = qsTr("OpenAlias warning") + translationManager.emptyString + confirmationDialog.text = qsTr("Address found, but the DNSSEC signatures could not be verified, so this address may be spoofed.") + "\n\n" + + qsTr("OpenAlias: ") + openAlias + "\n\n" + + qsTr("Resolved address: ") + resolvedAddress + "\n\n" + + qsTr("Only use this address if you trust this OpenAlias result.") + translationManager.emptyString + confirmationDialog.icon = StandardIcon.Question + confirmationDialog.cancelText = qsTr("Cancel") + translationManager.emptyString + confirmationDialog.okText = qsTr("Use address") + translationManager.emptyString + confirmationDialog.onAcceptedCallback = onAccepted + confirmationDialog.onRejectedCallback = null + confirmationDialog.open() + } + MoneroComponents.StandardDialog { // dynamically change onclose handler property var onCloseCallback diff --git a/pages/Transfer.qml b/pages/Transfer.qml index 48ce4b82..9641139f 100644 --- a/pages/Transfer.qml +++ b/pages/Transfer.qml @@ -105,6 +105,20 @@ Rectangle { oaPopup.open() } + function oa_confirm(openAlias, resolvedAddress, onAccepted) { + confirmationDialog.title = qsTr("OpenAlias warning") + translationManager.emptyString + confirmationDialog.text = qsTr("Address found, but the DNSSEC signatures could not be verified, so this address may be spoofed.") + "\n\n" + + qsTr("OpenAlias: ") + openAlias + "\n\n" + + qsTr("Resolved address: ") + resolvedAddress + "\n\n" + + qsTr("Only use this address if you trust this OpenAlias result.") + translationManager.emptyString + confirmationDialog.icon = StandardIcon.Question + confirmationDialog.cancelText = qsTr("Cancel") + translationManager.emptyString + confirmationDialog.okText = qsTr("Use address") + translationManager.emptyString + confirmationDialog.onAcceptedCallback = onAccepted + confirmationDialog.onRejectedCallback = null + confirmationDialog.open() + } + function fillPaymentDetails(address, payment_id, amount, tx_description, recipient_name) { if (recipientModel.count > 0) { const last = recipientModel.count - 1; @@ -428,8 +442,21 @@ Rectangle { text: qsTr("Resolve") + translationManager.emptyString visible: TxUtils.isValidOpenAliasAddress(address) onClicked: { + const openAlias = address; const response = TxUtils.handleOpenAliasResolution(address, descriptionLine.text); if (response) { + if (response.confirm && response.address) { + const resolvedAddress = response.address; + const resolvedDescription = response.description; + oa_confirm(openAlias, resolvedAddress, function() { + recipientRepeater.itemAt(index).children[1].children[0].text = resolvedAddress; + if (resolvedDescription) { + descriptionLine.text = resolvedDescription; + descriptionCheckbox.checked = true; + } + }); + return; + } if (response.message) { oa_message(response.message); } |
