Browse Source

WIP old-style privkey importing

pull/43/head
Jonathan "Duke" Leto 5 years ago
parent
commit
8128f5a5b8
  1. 9
      src/connection.cpp
  2. 37
      src/rpc.cpp

9
src/connection.cpp

@ -460,7 +460,7 @@ void ConnectionLoader::refreshZcashdState(Connection* connection, std::function<
connection->doRPC(payload,
[=] (auto) {
// Success
main->logger->write("hushd is online.");
main->logger->write("hushd is online!");
// Delay 1 second to ensure loading (splash) is seen at least 1 second.
QTimer::singleShot(1000, [=]() { this->doRPCSetConnection(connection); });
},
@ -696,6 +696,9 @@ void Connection::doRPC(const json& payload, const std::function<void(json)>& cb,
return;
}
qDebug() << "RPC: " << QString::fromStdString(payload["method"]);
qDebug() << "< payload " << QString::fromStdString(payload.dump());
QNetworkReply *reply = restclient->post(*request, QByteArray::fromStdString(payload.dump()));
QObject::connect(reply, &QNetworkReply::finished, [=] {
@ -724,7 +727,7 @@ void Connection::doRPC(const json& payload, const std::function<void(json)>& cb,
void Connection::doRPCWithDefaultErrorHandling(const json& payload, const std::function<void(json)>& cb) {
doRPC(payload, cb, [=] (auto reply, auto parsed) {
if (!parsed.is_discarded() && !parsed["error"]["message"].is_null()) {
this->showTxError(QString::fromStdString(parsed["error"]["message"]));
this->showTxError(QString::fromStdString(parsed["error"]["message"]));
} else {
this->showTxError(reply->errorString());
}
@ -746,7 +749,7 @@ void Connection::showTxError(const QString& error) {
return;
shown = true;
QMessageBox::critical(main, QObject::tr("Transaction Error"), QObject::tr("There was an error sending the transaction. The error was:") + "\n\n"
QMessageBox::critical(main, QObject::tr("Transaction Error"), QObject::tr("There was an error! : ") + "\n\n"
+ error, QMessageBox::StandardButton::Ok);
shown = false;
}

37
src/rpc.cpp

@ -190,26 +190,43 @@ void RPC::getTPrivKey(QString addr, const std::function<void(json)>& cb) {
conn->doRPCWithDefaultErrorHandling(payload, cb);
}
void RPC::importZPrivKey(QString addr, bool rescan, const std::function<void(json)>& cb) {
void RPC::importZPrivKey(QString privkey, bool rescan, const std::function<void(json)>& cb) {
json payload = {
{"jsonrpc", "1.0"},
{"id", "someid"},
{"method", "z_importkey"},
{"params", { addr.toStdString(), (rescan? "yes" : "no") }},
{"params", { privkey.toStdString(), (rescan? "yes" : "no") }},
};
conn->doRPCWithDefaultErrorHandling(payload, cb);
}
void RPC::importTPrivKey(QString addr, bool rescan, const std::function<void(json)>& cb) {
json payload = {
{"jsonrpc", "1.0"},
{"id", "someid"},
{"method", "importprivkey"},
{"params", { addr.toStdString(), (rescan? "yes" : "no") }},
};
// TODO: support rescan height and prefix
void RPC::importTPrivKey(QString privkey, bool rescan, const std::function<void(json)>& cb) {
json payload;
// If privkey starts with 5, K or L, use old-style Hush params, same as BTC+ZEC
if( privkey.startsWith("5") || privkey.startsWith("K") || privkey.startsWith("L") ) {
qDebug() << "Detected old-style HUSH WIF";
payload = {
{"jsonrpc", "1.0"},
{"id", "someid"},
{"method", "importprivkey"},
{"params", { privkey.toStdString(), "", "false", "0", "128" }},
};
} else {
qDebug() << "Detected new-style HUSH WIF";
payload = {
{"jsonrpc", "1.0"},
{"id", "someid"},
{"method", "importprivkey"},
{"params", { privkey.toStdString(), (rescan? "yes" : "no") }},
};
}
qDebug() << "Importing WIF with rescan=" << rescan;
conn->doRPCWithDefaultErrorHandling(payload, cb);
}

Loading…
Cancel
Save