aboutsummaryrefslogtreecommitdiff
path: root/pages
diff options
context:
space:
mode:
authortobtoht <tob@featherwallet.org>2026-07-01 17:41:58 +0000
committertobtoht <tob@featherwallet.org>2026-07-01 17:41:58 +0000
commit239a5350cf15b59278e3152a1982a0ac5cb185ff (patch)
tree76ddfab43ae3d9a07d6f79b8a6bfee6bdd13fe6c /pages
parent76d5f8cd68b39b5b744775cb04e8e86a0013760a (diff)
parent23930cb0e909a503171535a0a62b74debba1b885 (diff)
downloadmonzero-gui-239a5350cf15b59278e3152a1982a0ac5cb185ff.tar.gz
monzero-gui-239a5350cf15b59278e3152a1982a0ac5cb185ff.tar.xz
monzero-gui-239a5350cf15b59278e3152a1982a0ac5cb185ff.zip
Merge pull request #4618
23930cb Transfer, AddressBook: confirm unauthenticated OpenAlias (selsta) ACKs: plowsof
Diffstat (limited to 'pages')
-rw-r--r--pages/AddressBook.qml26
-rw-r--r--pages/Transfer.qml27
2 files changed, 53 insertions, 0 deletions
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);
}