You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
wowlet/src/dialog/signverifydialog.cpp

58 lines
2.0 KiB

// SPDX-License-Identifier: BSD-3-Clause
// Copyright (c) 2020-2021, The Monero Project.
#include "signverifydialog.h"
#include "ui_signverifydialog.h"
#include "utils/utils.h"
#include <QMessageBox>
SignVerifyDialog::SignVerifyDialog(Wallet *wallet, QWidget *parent)
: QDialog(parent)
, m_wallet(wallet)
, ui(new Ui::SignVerifyDialog)
{
ui->setupUi(this);
connect(ui->btn_Sign, &QPushButton::clicked, this, &SignVerifyDialog::signMessage);
connect(ui->btn_Verify, &QPushButton::clicked, this, &SignVerifyDialog::verifyMessage);
connect(ui->btn_Copy, &QPushButton::clicked, this, &SignVerifyDialog::copyToClipboard);
connect(ui->message, &QPlainTextEdit::textChanged, [this](){ui->btn_Copy->setVisible(false);});
connect(ui->address, &QLineEdit::textEdited, [this](){ui->btn_Copy->setVisible(false);});
connect(ui->signature, &QLineEdit::textEdited, [this](){ui->btn_Copy->setVisible(false);});
ui->address->setText(m_wallet->address(0, 0));
ui->address->setCursorPosition(0);
ui->btn_Copy->setVisible(false);
}
void SignVerifyDialog::signMessage() {
QString signature = m_wallet->signMessage(ui->message->toPlainText(), false, ui->address->text());
if (signature.isEmpty()) {
QMessageBox::information(this, "Information", m_wallet->errorString());
return;
}
ui->signature->setText(signature);
ui->btn_Copy->setVisible(true);
}
void SignVerifyDialog::verifyMessage() {
bool verified = m_wallet->verifySignedMessage(ui->message->toPlainText(), ui->address->text(), ui->signature->text());
verified ? QMessageBox::information(this, "Information", "Signature is valid")
: QMessageBox::warning(this, "Warning", "Signature failed to verify");
}
void SignVerifyDialog::copyToClipboard() {
QStringList sig;
sig << ui->message->toPlainText() << ui->address->text() << ui->signature->text();
Utils::copyToClipboard(sig.join("\n"));
}
SignVerifyDialog::~SignVerifyDialog()
{
delete ui;
}