From 43225940688cc98a02e2e2c7cdda691d118b255d Mon Sep 17 00:00:00 2001 From: woodser Date: Mon, 1 Jul 2019 12:28:30 -0400 Subject: [PATCH] implement importKeyImages() --- src/wallet/MoneroWallet.cpp | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/src/wallet/MoneroWallet.cpp b/src/wallet/MoneroWallet.cpp index 5e7757b..e3ceb1a 100644 --- a/src/wallet/MoneroWallet.cpp +++ b/src/wallet/MoneroWallet.cpp @@ -1091,7 +1091,29 @@ namespace monero { shared_ptr MoneroWallet::importKeyImages(const vector>& keyImages) { cout << "MoneroWallet::importKeyImages()" << endl; - throw runtime_error("Not implemented"); + + // validate and prepare key images for wallet2 + std::vector> ski; + ski.resize(keyImages.size()); + for (size_t n = 0; n < ski.size(); ++n) { + if (!epee::string_tools::hex_to_pod(keyImages[n]->hex.get(), ski[n].first)) { + throw runtime_error("failed to parse key image"); + } + if (!epee::string_tools::hex_to_pod(keyImages[n]->signature.get(), ski[n].second)) { + throw runtime_error("failed to parse signature"); + } + } + + // import key images + uint64_t spent = 0, unspent = 0; + uint64_t height = wallet2->import_key_images(ski, 0, spent, unspent); // TODO: use offset? refer to wallet_rpc_server::on_import_key_images() req.offset + + // translate results + shared_ptr result = shared_ptr(new MoneroKeyImageImportResult()); + result->height = height; + result->spentAmount = spent; + result->unspentAmount = unspent; + return result; } vector> MoneroWallet::sendSplit(const MoneroSendRequest& request) {