diff --git a/monero_utils/MyMoneroCoreBridge.js b/monero_utils/MyMoneroCoreBridge.js index 9b3a25d..8c9076d 100644 --- a/monero_utils/MyMoneroCoreBridge.js +++ b/monero_utils/MyMoneroCoreBridge.js @@ -412,6 +412,21 @@ class MyMoneroCoreBridge } return ret.retVal; } + derivation_to_scalar(derivation, output_index) + { + const args = + { + derivation: derivation, + output_index: output_index, + }; + const args_str = JSON.stringify(args); + const ret_string = this.Module.derivation_to_scalar(args_str); + const ret = JSON.parse(ret_string); + if (typeof ret.err_msg !== 'undefined' && ret.err_msg) { + return { err_msg: ret.err_msg }; + } + return ret.retVal; + } decodeRct(rv, sk, i) { const ecdhInfo = []; // should obvs be plural but just keeping exact names in-tact @@ -774,4 +789,4 @@ module.exports = function(options) }, 1) } }); -}; \ No newline at end of file +}; diff --git a/src/index.cpp b/src/index.cpp index 58187ff..bd298f7 100644 --- a/src/index.cpp +++ b/src/index.cpp @@ -63,6 +63,7 @@ EMSCRIPTEN_BINDINGS(my_module) emscripten::function("derive_public_key", &serial_bridge::derive_public_key); emscripten::function("derive_subaddress_public_key", &serial_bridge::derive_subaddress_public_key); emscripten::function("decodeRct", &serial_bridge::decodeRct); + emscripten::function("derivation_to_scalar", &serial_bridge::derivation_to_scalar); // } extern "C" diff --git a/tests/MyMoneroCoreCpp.node.js b/tests/MyMoneroCoreCpp.node.js index ee84fe9..26b8aec 100644 --- a/tests/MyMoneroCoreCpp.node.js +++ b/tests/MyMoneroCoreCpp.node.js @@ -161,6 +161,13 @@ function tests(Module) console.timeEnd("derive_subaddress_public_key") console.log("derive_subaddress_public_key ret", ret_string) } + { + console.time("derivation_to_scalar") + const args_str = '{"derivation":"7a4c13a037d4bd2a7dd99a8c24669e9e04ca4e8a90e5b6703e88e87ad51c1849","output_index":1}' + const ret_string = Module.derivation_to_scalar(args_str) + console.timeEnd("derivation_to_scalar") + console.log("derivation_to_scalar ret", ret_string) + } { console.time("decodeRct") const args_str = '{"i":"1","sk":"9b1529acb638f497d05677d7505d354b4ba6bc95484008f6362f93160ef3e503","rv":{"type":"1","ecdhInfo":[{"mask":"3ad9d0b3398691b94558e0f750e07e5e0d7d12411cd70b3841159e6c6b10db02","amount":"b3189d8adb5a26568e497eb8e376a7d7d946ebb1daef4c2c87a2c30b65915506"},{"mask":"97b00af8ecba3cb71b9660cc9e1ac110abd21a4c5e50a2c125f964caa96bef0c","amount":"60269d8adb5a26568e497eb8e376a7d7d946ebb1daef4c2c87a2c30b65915506"},{"mask":"db67f5066d9455db404aeaf435ad948bc9f27344bc743e3a32583a9e6695cb08","amount":"b3189d8adb5a26568e497eb8e376a7d7d946ebb1daef4c2c87a2c30b65915506"}],"outPk":[{"mask":"9adc531a9c79a49a4257f24e5e5ea49c2fc1fb4eef49e00d5e5aba6cb6963a7d"},{"mask":"89f40499d6786a4027a24d6674d0940146fd12d8bc6007d338f19f05040e7a41"},{"mask":"f413d28bd5ffdc020528bcb2c19919d7484fbc9c3dd30de34ecff5b8a904e7f6"}]}}' @@ -250,4 +257,4 @@ require('../monero_utils/MyMoneroCoreBridge')({asmjs: false}).then(function(inst }).catch(function(e) { console.error("Exception while loading module:", e) -}) \ No newline at end of file +}) diff --git a/webpack.browser.dev.config.js b/webpack.browser.dev.config.js index 9cbadc8..b753d91 100644 --- a/webpack.browser.dev.config.js +++ b/webpack.browser.dev.config.js @@ -36,4 +36,4 @@ module.exports = merge(common, { // devServer: { // contentBase: './browser_build' // } -}) \ No newline at end of file +})