MCPcopy Create free account
hub / github.com/CommE2E/comm / decrypt

Method decrypt

native/cpp/CommonCpp/NativeModules/CommCoreModule.cpp:1869–1910  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1867}
1868
1869jsi::Value CommCoreModule::decrypt(
1870 jsi::Runtime &rt,
1871 jsi::Object encryptedDataJSI,
1872 jsi::String deviceID) {
1873 size_t messageType =
1874 std::lround(encryptedDataJSI.getProperty(rt, "messageType").asNumber());
1875 std::string message =
1876 encryptedDataJSI.getProperty(rt, "message").asString(rt).utf8(rt);
1877 auto deviceIDCpp{deviceID.utf8(rt)};
1878
1879 std::optional<int> sessionVersion;
1880 if (encryptedDataJSI.hasProperty(rt, "sessionVersion")) {
1881 sessionVersion = std::lround(
1882 encryptedDataJSI.getProperty(rt, "sessionVersion").asNumber());
1883 }
1884
1885 return createPromiseAsJSIValue(
1886 rt, [=](jsi::Runtime &innerRt, std::shared_ptr<Promise> promise) {
1887 taskType job = [=, &innerRt]() {
1888 std::string error;
1889 std::string decryptedMessage;
1890 try {
1891 crypto::EncryptedData encryptedData{
1892 message, messageType, sessionVersion};
1893 decryptedMessage =
1894 this->contentCryptoModule->decrypt(deviceIDCpp, encryptedData);
1895 this->persistCryptoModules(true, std::nullopt);
1896 } catch (const std::exception &e) {
1897 error = e.what();
1898 }
1899 this->jsInvoker_->invokeAsync([=, &innerRt]() {
1900 if (error.size()) {
1901 promise->reject(error);
1902 return;
1903 }
1904 promise->resolve(
1905 jsi::String::createFromUtf8(innerRt, decryptedMessage));
1906 });
1907 };
1908 this->cryptoThread->scheduleTask(job);
1909 });
1910}
1911
1912jsi::Value CommCoreModule::decryptAndPersist(
1913 jsi::Runtime &rt,

Callers

nothing calls this directly

Calls 5

persistCryptoModulesMethod · 0.95
rejectMethod · 0.80
resolveMethod · 0.80
scheduleTaskMethod · 0.80
decryptMethod · 0.65

Tested by

no test coverage detected