From 15c79df378db97b713150d92390a013e63044128 Mon Sep 17 00:00:00 2001 From: Jaquee Date: Thu, 12 Jan 2017 20:53:27 +0100 Subject: GUI cold signing --- src/libwalletqt/UnsignedTransaction.cpp | 89 +++++++++++++++++++++++++++++++++ 1 file changed, 89 insertions(+) create mode 100644 src/libwalletqt/UnsignedTransaction.cpp (limited to 'src/libwalletqt/UnsignedTransaction.cpp') diff --git a/src/libwalletqt/UnsignedTransaction.cpp b/src/libwalletqt/UnsignedTransaction.cpp new file mode 100644 index 00000000..a1c472f2 --- /dev/null +++ b/src/libwalletqt/UnsignedTransaction.cpp @@ -0,0 +1,89 @@ +#include "UnsignedTransaction.h" +#include +#include + +UnsignedTransaction::Status UnsignedTransaction::status() const +{ + return static_cast(m_pimpl->status()); +} + +QString UnsignedTransaction::errorString() const +{ + return QString::fromStdString(m_pimpl->errorString()); +} + +quint64 UnsignedTransaction::amount(int index) const +{ + std::vector arr = m_pimpl->amount(); + if(index > arr.size() - 1) + return 0; + return arr[index]; +} + +quint64 UnsignedTransaction::fee(int index) const +{ + std::vector arr = m_pimpl->fee(); + if(index > arr.size() - 1) + return 0; + return arr[index]; +} + +quint64 UnsignedTransaction::mixin(int index) const +{ + std::vector arr = m_pimpl->mixin(); + if(index > arr.size() - 1) + return 0; + return arr[index]; +} + +quint64 UnsignedTransaction::txCount() const +{ + return m_pimpl->txCount(); +} + +quint64 UnsignedTransaction::minMixinCount() const +{ + return m_pimpl->minMixinCount(); +} + +QString UnsignedTransaction::confirmationMessage() const +{ + return QString::fromStdString(m_pimpl->confirmationMessage()); +} + +QStringList UnsignedTransaction::paymentId() const +{ + QList list; + for (const auto &t: m_pimpl->paymentId()) + list.append(QString::fromStdString(t)); + return list; +} + +QStringList UnsignedTransaction::recipientAddress() const +{ + QList list; + for (const auto &t: m_pimpl->recipientAddress()) + list.append(QString::fromStdString(t)); + return list; +} + +bool UnsignedTransaction::sign(const QString &fileName) const +{ + return m_pimpl->sign(fileName.toStdString()); +} + +void UnsignedTransaction::setFilename(const QString &fileName) +{ + m_fileName = fileName; +} + +UnsignedTransaction::UnsignedTransaction(Monero::UnsignedTransaction *pt, QObject *parent) + : QObject(parent), m_pimpl(pt) +{ + +} + +UnsignedTransaction::~UnsignedTransaction() +{ + delete m_pimpl; +} -- cgit v1.2.3 From ae5c21ef17b5585e1c90423a9f45b62b3b678f46 Mon Sep 17 00:00:00 2001 From: Jaquee Date: Fri, 13 Jan 2017 23:43:34 +0100 Subject: export/import key images when cold signing --- src/libwalletqt/UnsignedTransaction.cpp | 9 ++++++--- src/libwalletqt/UnsignedTransaction.h | 3 ++- src/libwalletqt/Wallet.cpp | 7 +++++-- 3 files changed, 13 insertions(+), 6 deletions(-) (limited to 'src/libwalletqt/UnsignedTransaction.cpp') diff --git a/src/libwalletqt/UnsignedTransaction.cpp b/src/libwalletqt/UnsignedTransaction.cpp index a1c472f2..47dca57b 100644 --- a/src/libwalletqt/UnsignedTransaction.cpp +++ b/src/libwalletqt/UnsignedTransaction.cpp @@ -69,7 +69,10 @@ QStringList UnsignedTransaction::recipientAddress() const bool UnsignedTransaction::sign(const QString &fileName) const { - return m_pimpl->sign(fileName.toStdString()); + if(!m_pimpl->sign(fileName.toStdString())) + return false; + // export key images + return m_walletImpl->exportKeyImages(fileName.toStdString() + "_keyImages"); } void UnsignedTransaction::setFilename(const QString &fileName) @@ -77,8 +80,8 @@ void UnsignedTransaction::setFilename(const QString &fileName) m_fileName = fileName; } -UnsignedTransaction::UnsignedTransaction(Monero::UnsignedTransaction *pt, QObject *parent) - : QObject(parent), m_pimpl(pt) +UnsignedTransaction::UnsignedTransaction(Monero::UnsignedTransaction *pt, Monero::Wallet *walletImpl, QObject *parent) + : QObject(parent), m_pimpl(pt), m_walletImpl(walletImpl) { } diff --git a/src/libwalletqt/UnsignedTransaction.h b/src/libwalletqt/UnsignedTransaction.h index 49391e45..749445a2 100644 --- a/src/libwalletqt/UnsignedTransaction.h +++ b/src/libwalletqt/UnsignedTransaction.h @@ -47,12 +47,13 @@ public: Q_INVOKABLE void setFilename(const QString &fileName); private: - explicit UnsignedTransaction(Monero::UnsignedTransaction * pt, QObject *parent = 0); + explicit UnsignedTransaction(Monero::UnsignedTransaction * pt, Monero::Wallet *walletImpl, QObject *parent = 0); ~UnsignedTransaction(); private: friend class Wallet; Monero::UnsignedTransaction * m_pimpl; QString m_fileName; + Monero::Wallet * m_walletImpl; }; #endif // UNSIGNEDTRANSACTION_H diff --git a/src/libwalletqt/Wallet.cpp b/src/libwalletqt/Wallet.cpp index f8c6bb1d..6147e1cb 100644 --- a/src/libwalletqt/Wallet.cpp +++ b/src/libwalletqt/Wallet.cpp @@ -327,14 +327,17 @@ UnsignedTransaction * Wallet::loadTxFile(const QString &fileName) { qDebug() << "Trying to sign " << fileName; Monero::UnsignedTransaction * ptImpl = m_walletImpl->loadUnsignedTx(fileName.toStdString()); - UnsignedTransaction * result = new UnsignedTransaction(ptImpl, this); + UnsignedTransaction * result = new UnsignedTransaction(ptImpl, m_walletImpl, this); return result; } bool Wallet::submitTxFile(const QString &fileName) const { qDebug() << "Trying to submit " << fileName; - return m_walletImpl->submitTransaction(fileName.toStdString()); + if (!m_walletImpl->submitTransaction(fileName.toStdString())) + return false; + // import key images + return m_walletImpl->importKeyImages(fileName.toStdString() + "_keyImages"); } void Wallet::disposeTransaction(PendingTransaction *t) -- cgit v1.2.3