diff options
| author | Dusan Klinec <dusan.klinec@gmail.com> | 2020-04-11 12:43:21 +0200 |
|---|---|---|
| committer | Dusan Klinec <dusan.klinec@gmail.com> | 2020-05-08 18:40:17 +0200 |
| commit | 86d21a34baacb7d317b8774b3409781bb3dde037 (patch) | |
| tree | 2bb83dcc37e8fe0a77e8311824db75afd973d037 /components | |
| parent | 38612c1285889f59a8c94bb412354bb7bed4108a (diff) | |
| download | monzero-gui-86d21a34baacb7d317b8774b3409781bb3dde037.tar.gz monzero-gui-86d21a34baacb7d317b8774b3409781bb3dde037.tar.xz monzero-gui-86d21a34baacb7d317b8774b3409781bb3dde037.zip | |
trezor: support new passphrase entry mechanism
- passphrase can be prompted also when wallet is running (thus added to the wallet listener)
- device/host decision is now made on the host
Diffstat (limited to 'components')
| -rw-r--r-- | components/DevicePassphraseDialog.qml | 104 |
1 files changed, 104 insertions, 0 deletions
diff --git a/components/DevicePassphraseDialog.qml b/components/DevicePassphraseDialog.qml new file mode 100644 index 00000000..4bbe2fab --- /dev/null +++ b/components/DevicePassphraseDialog.qml @@ -0,0 +1,104 @@ +// Copyright (c) 2014-2020, The Monero Project +// +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without modification, are +// permitted provided that the following conditions are met: +// +// 1. Redistributions of source code must retain the above copyright notice, this list of +// conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright notice, this list +// of conditions and the following disclaimer in the documentation and/or other +// materials provided with the distribution. +// +// 3. Neither the name of the copyright holder nor the names of its contributors may be +// used to endorse or promote products derived from this software without specific +// prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL +// THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF +// THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +import QtQuick 2.9 +import "." as MoneroComponents + +Item { + id: root + + property var onAcceptedCallback + property var onWalletEntryCallback + property var onRejectedCallback + + function open(canEnterOnDevice_) { + var canEnterOnDevice = canEnterOnDevice_ !== null ? canEnterOnDevice_ : canEnterOnDevice + root.visible = true; + + if (canEnterOnDevice) { + entryChooserDialog.okText = qsTr("Hardware wallet") + entryChooserDialog.cancelText = qsTr("Computer") + entryChooserDialog.open() + } else { + openPassphraseDialog() + } + } + + function openPassphraseDialog() { + root.visible = true + passphraseDialog.openPassphraseDialog() + } + + function close() { + root.visible = false; + if (entryChooserDialog.visible) + entryChooserDialog.close() + if (passphraseDialog.visible) + passphraseDialog.close() + } + + StandardDialog { + id: entryChooserDialog + title: qsTr("Hardware wallet passphrase") + translationManager.emptyString + text: qsTr("Please select where you want to enter passphrase.\nIt is recommended to enter passphrase on the hardware wallet for better security.") + translationManager.emptyString + + onAccepted: { + if (onWalletEntryCallback){ + onWalletEntryCallback() + } + } + + onRejected: { + openPassphraseDialog() + } + + onCloseCallback: { + root.close() + } + } + + PasswordDialog { + id: passphraseDialog + anchors.fill: parent + passphraseDialogMode: true + + onAcceptedPassphrase: { + if (onAcceptedCallback) + onAcceptedCallback(passphraseDialog.password); + } + + onRejectedPassphrase: { + if (onRejectedCallback) + onRejectedCallback(); + } + + onCloseCallback: { + root.close() + } + } +} |
