diff --git a/native/cpp/CommonCpp/NativeModules/CommCoreModule.cpp b/native/cpp/CommonCpp/NativeModules/CommCoreModule.cpp --- a/native/cpp/CommonCpp/NativeModules/CommCoreModule.cpp +++ b/native/cpp/CommonCpp/NativeModules/CommCoreModule.cpp @@ -839,35 +839,59 @@ } catch (const std::exception &e) { error = e.what(); } + + folly::dynamic parsedPrimary = folly::parseJson(primaryKeysResult); + auto primaryCurve25519Cpp{parsedPrimary["curve25519"].asString()}; + auto primaryEd25519Cpp{parsedPrimary["ed25519"].asString()}; + + folly::dynamic parsedNotifications = + folly::parseJson(notificationsKeysResult); + auto notificationsCurve25519Cpp{ + parsedNotifications["curve25519"].asString()}; + auto notificationsEd25519Cpp{ + parsedNotifications["ed25519"].asString()}; + + folly::dynamic blobPayloadJSON = folly::dynamic::object( + "primaryIdentityPublicKeys", + folly::dynamic::object("ed25519", primaryEd25519Cpp)( + "curve25519", primaryCurve25519Cpp))( + "notificationIdentityPublicKeys", + folly::dynamic::object("ed25519", notificationsEd25519Cpp)( + "curve25519", notificationsCurve25519Cpp)); + + auto blobPayloadCpp = folly::toJson(blobPayloadJSON); + auto signatureCpp = this->cryptoModule->signMessage(blobPayloadCpp); + this->jsInvoker_->invokeAsync([=, &innerRt]() { if (error.size()) { promise->reject(error); return; } - folly::dynamic parsedPrimary = folly::parseJson(primaryKeysResult); - auto primaryCurve25519{jsi::String::createFromUtf8( - innerRt, parsedPrimary["curve25519"].asString())}; - auto primaryEd25519{jsi::String::createFromUtf8( - innerRt, parsedPrimary["ed25519"].asString())}; + auto primaryCurve25519{ + jsi::String::createFromUtf8(innerRt, primaryCurve25519Cpp)}; + auto primaryEd25519{ + jsi::String::createFromUtf8(innerRt, primaryEd25519Cpp)}; auto jsiPrimaryIdentityPublicKeys = jsi::Object(innerRt); jsiPrimaryIdentityPublicKeys.setProperty( innerRt, "ed25519", primaryEd25519); jsiPrimaryIdentityPublicKeys.setProperty( innerRt, "curve25519", primaryCurve25519); - folly::dynamic parsedNotifications = - folly::parseJson(notificationsKeysResult); auto notificationsCurve25519{jsi::String::createFromUtf8( - innerRt, parsedNotifications["curve25519"].asString())}; - auto notificationsEd25519{jsi::String::createFromUtf8( - innerRt, parsedNotifications["ed25519"].asString())}; + innerRt, notificationsCurve25519Cpp)}; + auto notificationsEd25519{ + jsi::String::createFromUtf8(innerRt, notificationsEd25519Cpp)}; auto jsiNotificationIdentityPublicKeys = jsi::Object(innerRt); jsiNotificationIdentityPublicKeys.setProperty( innerRt, "ed25519", notificationsEd25519); jsiNotificationIdentityPublicKeys.setProperty( innerRt, "curve25519", notificationsCurve25519); + auto blobPayload{ + jsi::String::createFromUtf8(innerRt, blobPayloadCpp)}; + auto signature{jsi::String::createFromUtf8(innerRt, signatureCpp)}; + auto jsiClientPublicKeys = jsi::Object(innerRt); jsiClientPublicKeys.setProperty( innerRt, @@ -877,6 +901,9 @@ innerRt, "notificationIdentityPublicKeys", jsiNotificationIdentityPublicKeys); + jsiClientPublicKeys.setProperty( + innerRt, "blobPayload", blobPayload); + jsiClientPublicKeys.setProperty(innerRt, "signature", signature); promise->resolve(std::move(jsiClientPublicKeys)); }); }; diff --git a/native/schema/CommCoreModuleSchema.js b/native/schema/CommCoreModuleSchema.js --- a/native/schema/CommCoreModuleSchema.js +++ b/native/schema/CommCoreModuleSchema.js @@ -33,6 +33,8 @@ +ed25519: string, +curve25519: string, }, + +blobPayload: string, + +signature: string, }; export interface Spec extends TurboModule {