| 2018 | } |
| 2019 | |
| 2020 | jsi::Value CommCoreModule::signMessageUsingAccount( |
| 2021 | jsi::Runtime &rt, |
| 2022 | jsi::String message, |
| 2023 | jsi::String pickledAccount, |
| 2024 | jsi::String pickleKey) { |
| 2025 | std::string messageStr = message.utf8(rt); |
| 2026 | std::string pickledAccountStr = pickledAccount.utf8(rt); |
| 2027 | std::string pickleKeyStr = pickleKey.utf8(rt); |
| 2028 | return createPromiseAsJSIValue( |
| 2029 | rt, [=](jsi::Runtime &innerRt, std::shared_ptr<Promise> promise) { |
| 2030 | taskType job = [=, &innerRt]() { |
| 2031 | std::string error; |
| 2032 | std::string signature; |
| 2033 | try { |
| 2034 | crypto::Persist persist; |
| 2035 | persist.account = crypto::OlmBuffer( |
| 2036 | pickledAccountStr.begin(), pickledAccountStr.end()); |
| 2037 | auto cryptoModule = new crypto::CryptoModule(pickleKeyStr, persist); |
| 2038 | signature = cryptoModule->signMessage(messageStr); |
| 2039 | } catch (const std::exception &e) { |
| 2040 | error = "signing message failed with: " + std::string(e.what()); |
| 2041 | } |
| 2042 | |
| 2043 | this->jsInvoker_->invokeAsync([=, &innerRt]() { |
| 2044 | if (error.size()) { |
| 2045 | promise->reject(error); |
| 2046 | return; |
| 2047 | } |
| 2048 | |
| 2049 | auto jsiSignature{jsi::String::createFromUtf8(innerRt, signature)}; |
| 2050 | promise->resolve(std::move(jsiSignature)); |
| 2051 | }); |
| 2052 | }; |
| 2053 | this->cryptoThread->scheduleTask(job); |
| 2054 | }); |
| 2055 | } |
| 2056 | |
| 2057 | jsi::Value CommCoreModule::verifySignature( |
| 2058 | jsi::Runtime &rt, |
nothing calls this directly
no test coverage detected