diff --git a/monero_utils/MyMoneroCoreBridge.js b/monero_utils/MyMoneroCoreBridge.js index 1ba9a76..6e57269 100644 --- a/monero_utils/MyMoneroCoreBridge.js +++ b/monero_utils/MyMoneroCoreBridge.js @@ -704,6 +704,22 @@ class MyMoneroCoreBridge const args_str = JSON.stringify(args, null, '') this.Module.send_funds(args_str); } + encrypt_payment_id(payment_id, public_key, private_key) + { + const args = + { + payment_id: payment_id, + Public_key: public_key, + private_key: private_key + }; + const args_str = JSON.stringify(args); + const ret_string = this.Module.encrypt_payment_id(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; + } } // module.exports = function(options) diff --git a/src/index.cpp b/src/index.cpp index 548b78b..9c30f47 100644 --- a/src/index.cpp +++ b/src/index.cpp @@ -66,6 +66,7 @@ EMSCRIPTEN_BINDINGS(my_module) emscripten::function("decodeRct", &serial_bridge::decodeRct); emscripten::function("decodeRctSimple", &serial_bridge::decodeRctSimple); emscripten::function("derivation_to_scalar", &serial_bridge::derivation_to_scalar); + emscripten::function("encrypt_payment_id", &serial_bridge::encrypt_payment_id); // } extern "C" diff --git a/tests/MyMoneroCoreCpp.node.js b/tests/MyMoneroCoreCpp.node.js index 46a5e7f..6a4daa8 100644 --- a/tests/MyMoneroCoreCpp.node.js +++ b/tests/MyMoneroCoreCpp.node.js @@ -261,6 +261,13 @@ function tests(Module) const args_str = JSON.stringify(args, null, '') Module.send_funds(args_str); } + { + console.time("encrypt_payment_id") + const args_str = '{"payment_id":"f0756322689f8299","public_key":"9c8bd8a9ff8703ddd5e28a36dc5c5586d2ec0b4bfd9190adeea825db5808ead2","secret_key":"74f277a60613a4efa33258b9814c78e0ff7a53cf8d2cd248ee921ac7f607f800"}' + const ret_string = Module.encrypt_payment_id(args_str) + console.timeEnd("encrypt_payment_id") + console.log("encrypt_payment_id ret", ret_string) + } } console.time("Load module") require('../monero_utils/MyMoneroCoreBridge')({asmjs: false}).then(function(instance) // this can be switched to manually test asmjs vs wasm - can be exposed to option