diff --git a/lib/components/peer-olm-session-creator-provider.react.js b/lib/components/peer-olm-session-creator-provider.react.js --- a/lib/components/peer-olm-session-creator-provider.react.js +++ b/lib/components/peer-olm-session-creator-provider.react.js @@ -45,7 +45,6 @@ const deadDevices = useSelector(getPeersDeadDeviceIDs); const refetchDeviceList = useGetAndUpdateDeviceListsForUsers(); - const auxUserInfos = useSelector(state => state.auxUserStore.auxUserInfos); const createOlmSessionsWithUserCallback = React.useCallback( async ( @@ -57,20 +56,11 @@ runningPromises.current[userID] = {}; } - const filteredDevices = devices - .filter( - request => - !runningPromises.current[userID][request.deviceID] && - !deadDevices.has(request.deviceID), - ) - .map(request => ({ - ...request, - // `devicesPlatformDetails` is defined because otherwise, this device - // is going to be included in dead devices and filtered out, see - // `getPeersDeadDeviceIDs`. - platformDetails: - auxUserInfos[userID]?.devicesPlatformDetails?.[request.deviceID], - })); + const filteredDevices = devices.filter( + request => + !runningPromises.current[userID][request.deviceID] && + !deadDevices.has(request.deviceID), + ); const promise = (async () => { const authMetadata = await getAuthMetadata(); @@ -115,11 +105,10 @@ }, [ deadDevices, - auxUserInfos, getAuthMetadata, identityClient, - sendMessageToDevice, olmDebugLog, + sendMessageToDevice, refetchDeviceList, ], ); diff --git a/lib/keyserver-conn/keyserver-auth.js b/lib/keyserver-conn/keyserver-auth.js --- a/lib/keyserver-conn/keyserver-auth.js +++ b/lib/keyserver-conn/keyserver-auth.js @@ -103,18 +103,10 @@ keyserverKeys.identityKeysBlob.notificationIdentityPublicKeys, keyserverKeys.notifInitializationInfo, keyserverID, - // Assuming the keyserver is always running on the newest - // version, Olm compatibility is not required unlike for other - // clients that might not be updated yet. - false, ), olmAPI.contentOutboundSessionCreator( keyserverKeys.identityKeysBlob.primaryIdentityPublicKeys, keyserverKeys.contentInitializationInfo, - // Assuming the keyserver is always running on the newest - // version, Olm compatibility is not required unlike for other - // clients that might not be updated yet. - false, ), getAuthMetadata(), ]); diff --git a/lib/shared/crypto-utils.js b/lib/shared/crypto-utils.js --- a/lib/shared/crypto-utils.js +++ b/lib/shared/crypto-utils.js @@ -72,10 +72,6 @@ notificationIdentityPublicKeys, notifInitializationInfo, keyserverID, - // Assuming the keyserver is always running on the newest - // version, Olm compatibility is not required unlike for other - // clients that might not be updated yet. - false, ); }, [ diff --git a/lib/types/crypto-types.js b/lib/types/crypto-types.js --- a/lib/types/crypto-types.js +++ b/lib/types/crypto-types.js @@ -173,7 +173,6 @@ +contentOutboundSessionCreator: ( contentIdentityKeys: OLMIdentityKeys, contentInitializationInfo: OlmSessionInitializationInfo, - olmCompatibilityMode: boolean, ) => Promise, +isContentSessionInitialized: (deviceID: string) => Promise, +keyserverNotificationsSessionCreator: ( @@ -181,13 +180,11 @@ notificationsIdentityKeys: OLMIdentityKeys, notificationsInitializationInfo: OlmSessionInitializationInfo, keyserverID: string, - olmCompatibilityMode: boolean, ) => Promise, +notificationsOutboundSessionCreator: ( deviceID: string, notificationsIdentityKeys: OLMIdentityKeys, notificationsInitializationInfo: OlmSessionInitializationInfo, - olmCompatibilityMode: boolean, ) => Promise, +isDeviceNotificationsSessionInitialized: ( deviceID: string, diff --git a/lib/utils/crypto-utils.js b/lib/utils/crypto-utils.js --- a/lib/utils/crypto-utils.js +++ b/lib/utils/crypto-utils.js @@ -5,7 +5,6 @@ import { getConfig } from './config.js'; import { getMessageForException } from './errors.js'; -import { olmSupportRequired } from './olm-support-required.js'; import { primaryIdentityPublicKeyRegex } from './siwe-utils.js'; import { tRegex, tShape } from './validation-utils.js'; import type { OlmDebugLog } from '../components/debug-logs-context.js'; @@ -17,10 +16,7 @@ OutboundSessionCreationResult, SignedIdentityKeysBlob, } from '../types/crypto-types.js'; -import type { - IdentityPlatformDetails, - IdentityServiceClient, -} from '../types/identity-service-types'; +import type { IdentityServiceClient } from '../types/identity-service-types'; import { type OutboundSessionCreation, peerToPeerMessageTypes, @@ -81,13 +77,10 @@ const recipientDeviceID = primaryIdentityPublicKeys.ed25519; try { - // This function is used for testing purposes only, available to staff - // users, so Olm support is hardcoded to false. const { sessionVersion, encryptedData } = await olmAPI.contentOutboundSessionCreator( primaryIdentityPublicKeys, keys.contentInitializationInfo, - false, ); const sessionCreationMessage: OutboundSessionCreation = { @@ -124,10 +117,6 @@ +deviceID: string, +sessionCreationOptions?: SessionCreationOptions, }; -type DeviceSessionCreationRequestWithPlatformDetails = { - ...DeviceSessionCreationRequest, - platformDetails: ?IdentityPlatformDetails, -}; export type SessionCreationResult = { +deviceKeysMissing: boolean, }; @@ -136,7 +125,7 @@ identityClient: IdentityServiceClient, sendMessage: (message: TunnelbrokerClientMessageToDevice) => Promise, userID: string, - devices: $ReadOnlyArray, + devices: $ReadOnlyArray, source: 'session_reset' | 'session_not_exists', olmDebugLog: (olmLog: OlmDebugLog) => mixed, ): Promise { @@ -158,7 +147,6 @@ +deviceID: string, +hasContentSession: boolean, +hasNotifsSession: boolean, - +olmSupport: boolean, }> = await Promise.all( devices.map(request => (async () => { @@ -182,7 +170,6 @@ deviceID: request.deviceID, hasContentSession, hasNotifsSession, - olmSupport: olmSupportRequired(request.platformDetails), }; })(), ), @@ -206,8 +193,7 @@ success = false, sessionVersionResult = -1; try { - const { deviceID, hasContentSession, hasNotifsSession, olmSupport } = - sessionRequest; + const { deviceID, hasContentSession, hasNotifsSession } = sessionRequest; const deviceKeysResponse = keysResponse.find( keys => keys.deviceID === deviceID, ); @@ -229,7 +215,6 @@ recipientDeviceID, notificationIdentityPublicKeys, keys.notifInitializationInfo, - olmSupport, ); success = true; return; @@ -242,7 +227,6 @@ await olmAPI.contentOutboundSessionCreator( primaryIdentityPublicKeys, keys.contentInitializationInfo, - olmSupport, ); } else { resultDescription = 'creating content and notif session'; @@ -250,13 +234,11 @@ await olmAPI.contentOutboundSessionCreator( primaryIdentityPublicKeys, keys.contentInitializationInfo, - olmSupport, ), olmAPI.notificationsOutboundSessionCreator( recipientDeviceID, notificationIdentityPublicKeys, keys.notifInitializationInfo, - olmSupport, ), ]); } diff --git a/native/cpp/CommonCpp/CryptoTools/CryptoModule.h b/native/cpp/CommonCpp/CryptoTools/CryptoModule.h --- a/native/cpp/CommonCpp/CryptoTools/CryptoModule.h +++ b/native/cpp/CommonCpp/CryptoTools/CryptoModule.h @@ -64,8 +64,7 @@ const std::string &idKeys, const std::string &preKeys, const std::string &preKeySignature, - const std::optional &oneTimeKey, - bool olmCompatibilityMode); + const std::optional &oneTimeKey); bool hasSessionFor(const std::string &targetDeviceId); std::shared_ptr getSessionByDeviceId(const std::string &deviceId); void removeSessionByDeviceId(const std::string &deviceId); diff --git a/native/cpp/CommonCpp/CryptoTools/CryptoModule.cpp b/native/cpp/CommonCpp/CryptoTools/CryptoModule.cpp --- a/native/cpp/CommonCpp/CryptoTools/CryptoModule.cpp +++ b/native/cpp/CommonCpp/CryptoTools/CryptoModule.cpp @@ -238,8 +238,7 @@ const std::string &idKeys, const std::string &preKeys, const std::string &preKeySignature, - const std::optional &oneTimeKey, - bool olmCompatibilityMode) { + const std::optional &oneTimeKey) { int newSessionVersion = 1; if (this->hasSessionFor(targetDeviceId)) { std::shared_ptr existingSession = @@ -257,7 +256,7 @@ preKeys, preKeySignature, oneTimeKey, - olmCompatibilityMode); + true); // olmCompatibilityMode = true newSession->setVersion(newSessionVersion); this->sessions.insert(make_pair(targetDeviceId, std::move(newSession))); diff --git a/native/cpp/CommonCpp/NativeModules/CommCoreModule.h b/native/cpp/CommonCpp/NativeModules/CommCoreModule.h --- a/native/cpp/CommonCpp/NativeModules/CommCoreModule.h +++ b/native/cpp/CommonCpp/NativeModules/CommCoreModule.h @@ -107,8 +107,7 @@ jsi::String prekey, jsi::String prekeySignature, std::optional oneTimeKey, - jsi::String keyserverID, - bool olmCompatibilityMode) override; + jsi::String keyserverID) override; virtual jsi::Value isNotificationsSessionInitialized(jsi::Runtime &rt) override; virtual jsi::Value isDeviceNotificationsSessionInitialized( @@ -134,8 +133,7 @@ jsi::String prekey, jsi::String prekeySignature, std::optional oneTimeKey, - jsi::String deviceID, - bool olmCompatibilityMode) override; + jsi::String deviceID) override; virtual jsi::Value initializeContentInboundSession( jsi::Runtime &rt, jsi::String identityKeys, @@ -151,8 +149,7 @@ jsi::String prekey, jsi::String prekeySignature, std::optional oneTimeKey, - jsi::String deviceID, - bool olmCompatibilityMode) override; + jsi::String deviceID) override; virtual jsi::Value encrypt(jsi::Runtime &rt, jsi::String message, jsi::String deviceID) override; virtual jsi::Value encryptNotification( 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 @@ -1152,8 +1152,7 @@ jsi::String prekey, jsi::String prekeySignature, std::optional oneTimeKey, - jsi::String keyserverID, - bool olmCompatibilityMode) { + jsi::String keyserverID) { auto identityKeysCpp{identityKeys.utf8(rt)}; auto prekeyCpp{prekey.utf8(rt)}; auto prekeySignatureCpp{prekeySignature.utf8(rt)}; @@ -1182,8 +1181,7 @@ identityKeysCpp, prekeyCpp, prekeySignatureCpp, - oneTimeKeyCpp, - olmCompatibilityMode); + oneTimeKeyCpp); result = notifsCryptoModuleWithPicklingKey.value().first->encrypt( keyserverIDCpp, @@ -1528,8 +1526,7 @@ jsi::String prekey, jsi::String prekeySignature, std::optional oneTimeKey, - jsi::String deviceID, - bool olmCompatibilityMode) { + jsi::String deviceID) { auto identityKeysCpp{identityKeys.utf8(rt)}; auto prekeyCpp{prekey.utf8(rt)}; auto prekeySignatureCpp{prekeySignature.utf8(rt)}; @@ -1553,8 +1550,7 @@ identityKeysCpp, prekeyCpp, prekeySignatureCpp, - oneTimeKeyCpp, - olmCompatibilityMode); + oneTimeKeyCpp); const std::string initMessage = "{\"type\": \"init\"}"; initialEncryptedData = @@ -1671,8 +1667,7 @@ jsi::String prekey, jsi::String prekeySignature, std::optional oneTimeKey, - jsi::String deviceID, - bool olmCompatibilityMode) { + jsi::String deviceID) { auto identityKeysCpp{identityKeys.utf8(rt)}; auto prekeyCpp{prekey.utf8(rt)}; auto prekeySignatureCpp{prekeySignature.utf8(rt)}; @@ -1700,8 +1695,7 @@ identityKeysCpp, prekeyCpp, prekeySignatureCpp, - oneTimeKeyCpp, - olmCompatibilityMode); + oneTimeKeyCpp); result = notifsCryptoModuleWithPicklingKey.value().first->encrypt( deviceIDCpp, diff --git a/native/cpp/CommonCpp/_generated/commJSI-generated.cpp b/native/cpp/CommonCpp/_generated/commJSI-generated.cpp --- a/native/cpp/CommonCpp/_generated/commJSI-generated.cpp +++ b/native/cpp/CommonCpp/_generated/commJSI-generated.cpp @@ -55,7 +55,7 @@ return static_cast(&turboModule)->validateAndUploadPrekeys(rt, args[0].asString(rt), args[1].asString(rt), args[2].asString(rt)); } static jsi::Value __hostFunction_CommCoreModuleSchemaCxxSpecJSI_initializeNotificationsSession(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) { - return static_cast(&turboModule)->initializeNotificationsSession(rt, args[0].asString(rt), args[1].asString(rt), args[2].asString(rt), args[3].isNull() || args[3].isUndefined() ? std::nullopt : std::make_optional(args[3].asString(rt)), args[4].asString(rt), args[5].asBool()); + return static_cast(&turboModule)->initializeNotificationsSession(rt, args[0].asString(rt), args[1].asString(rt), args[2].asString(rt), args[3].isNull() || args[3].isUndefined() ? std::nullopt : std::make_optional(args[3].asString(rt)), args[4].asString(rt)); } static jsi::Value __hostFunction_CommCoreModuleSchemaCxxSpecJSI_isNotificationsSessionInitialized(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) { return static_cast(&turboModule)->isNotificationsSessionInitialized(rt); @@ -82,7 +82,7 @@ return static_cast(&turboModule)->getUnreadThickThreadIDsFromNotifsStorage(rt); } static jsi::Value __hostFunction_CommCoreModuleSchemaCxxSpecJSI_initializeContentOutboundSession(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) { - return static_cast(&turboModule)->initializeContentOutboundSession(rt, args[0].asString(rt), args[1].asString(rt), args[2].asString(rt), args[3].isNull() || args[3].isUndefined() ? std::nullopt : std::make_optional(args[3].asString(rt)), args[4].asString(rt), args[5].asBool()); + return static_cast(&turboModule)->initializeContentOutboundSession(rt, args[0].asString(rt), args[1].asString(rt), args[2].asString(rt), args[3].isNull() || args[3].isUndefined() ? std::nullopt : std::make_optional(args[3].asString(rt)), args[4].asString(rt)); } static jsi::Value __hostFunction_CommCoreModuleSchemaCxxSpecJSI_initializeContentInboundSession(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) { return static_cast(&turboModule)->initializeContentInboundSession(rt, args[0].asString(rt), args[1].asObject(rt), args[2].asString(rt), args[3].asNumber(), args[4].asBool()); @@ -91,7 +91,7 @@ return static_cast(&turboModule)->isContentSessionInitialized(rt, args[0].asString(rt)); } static jsi::Value __hostFunction_CommCoreModuleSchemaCxxSpecJSI_initializeNotificationsOutboundSession(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) { - return static_cast(&turboModule)->initializeNotificationsOutboundSession(rt, args[0].asString(rt), args[1].asString(rt), args[2].asString(rt), args[3].isNull() || args[3].isUndefined() ? std::nullopt : std::make_optional(args[3].asString(rt)), args[4].asString(rt), args[5].asBool()); + return static_cast(&turboModule)->initializeNotificationsOutboundSession(rt, args[0].asString(rt), args[1].asString(rt), args[2].asString(rt), args[3].isNull() || args[3].isUndefined() ? std::nullopt : std::make_optional(args[3].asString(rt)), args[4].asString(rt)); } static jsi::Value __hostFunction_CommCoreModuleSchemaCxxSpecJSI_encrypt(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) { return static_cast(&turboModule)->encrypt(rt, args[0].asString(rt), args[1].asString(rt)); @@ -266,7 +266,7 @@ methodMap_["getOneTimeKeys"] = MethodMetadata {1, __hostFunction_CommCoreModuleSchemaCxxSpecJSI_getOneTimeKeys}; methodMap_["validateAndGetPrekeys"] = MethodMetadata {0, __hostFunction_CommCoreModuleSchemaCxxSpecJSI_validateAndGetPrekeys}; methodMap_["validateAndUploadPrekeys"] = MethodMetadata {3, __hostFunction_CommCoreModuleSchemaCxxSpecJSI_validateAndUploadPrekeys}; - methodMap_["initializeNotificationsSession"] = MethodMetadata {6, __hostFunction_CommCoreModuleSchemaCxxSpecJSI_initializeNotificationsSession}; + methodMap_["initializeNotificationsSession"] = MethodMetadata {5, __hostFunction_CommCoreModuleSchemaCxxSpecJSI_initializeNotificationsSession}; methodMap_["isNotificationsSessionInitialized"] = MethodMetadata {0, __hostFunction_CommCoreModuleSchemaCxxSpecJSI_isNotificationsSessionInitialized}; methodMap_["isDeviceNotificationsSessionInitialized"] = MethodMetadata {1, __hostFunction_CommCoreModuleSchemaCxxSpecJSI_isDeviceNotificationsSessionInitialized}; methodMap_["isNotificationsSessionInitializedWithDevices"] = MethodMetadata {1, __hostFunction_CommCoreModuleSchemaCxxSpecJSI_isNotificationsSessionInitializedWithDevices}; @@ -275,10 +275,10 @@ methodMap_["getDataFromNotifStorage"] = MethodMetadata {1, __hostFunction_CommCoreModuleSchemaCxxSpecJSI_getDataFromNotifStorage}; methodMap_["updateUnreadThickThreadsInNotifsStorage"] = MethodMetadata {1, __hostFunction_CommCoreModuleSchemaCxxSpecJSI_updateUnreadThickThreadsInNotifsStorage}; methodMap_["getUnreadThickThreadIDsFromNotifsStorage"] = MethodMetadata {0, __hostFunction_CommCoreModuleSchemaCxxSpecJSI_getUnreadThickThreadIDsFromNotifsStorage}; - methodMap_["initializeContentOutboundSession"] = MethodMetadata {6, __hostFunction_CommCoreModuleSchemaCxxSpecJSI_initializeContentOutboundSession}; + methodMap_["initializeContentOutboundSession"] = MethodMetadata {5, __hostFunction_CommCoreModuleSchemaCxxSpecJSI_initializeContentOutboundSession}; methodMap_["initializeContentInboundSession"] = MethodMetadata {5, __hostFunction_CommCoreModuleSchemaCxxSpecJSI_initializeContentInboundSession}; methodMap_["isContentSessionInitialized"] = MethodMetadata {1, __hostFunction_CommCoreModuleSchemaCxxSpecJSI_isContentSessionInitialized}; - methodMap_["initializeNotificationsOutboundSession"] = MethodMetadata {6, __hostFunction_CommCoreModuleSchemaCxxSpecJSI_initializeNotificationsOutboundSession}; + methodMap_["initializeNotificationsOutboundSession"] = MethodMetadata {5, __hostFunction_CommCoreModuleSchemaCxxSpecJSI_initializeNotificationsOutboundSession}; methodMap_["encrypt"] = MethodMetadata {2, __hostFunction_CommCoreModuleSchemaCxxSpecJSI_encrypt}; methodMap_["encryptNotification"] = MethodMetadata {2, __hostFunction_CommCoreModuleSchemaCxxSpecJSI_encryptNotification}; methodMap_["encryptAndPersist"] = MethodMetadata {3, __hostFunction_CommCoreModuleSchemaCxxSpecJSI_encryptAndPersist}; diff --git a/native/cpp/CommonCpp/_generated/commJSI.h b/native/cpp/CommonCpp/_generated/commJSI.h --- a/native/cpp/CommonCpp/_generated/commJSI.h +++ b/native/cpp/CommonCpp/_generated/commJSI.h @@ -33,7 +33,7 @@ virtual jsi::Value getOneTimeKeys(jsi::Runtime &rt, double oneTimeKeysAmount) = 0; virtual jsi::Value validateAndGetPrekeys(jsi::Runtime &rt) = 0; virtual jsi::Value validateAndUploadPrekeys(jsi::Runtime &rt, jsi::String authUserID, jsi::String authDeviceID, jsi::String authAccessToken) = 0; - virtual jsi::Value initializeNotificationsSession(jsi::Runtime &rt, jsi::String identityKeys, jsi::String prekey, jsi::String prekeySignature, std::optional oneTimeKey, jsi::String keyserverID, bool olmCompatibilityMode) = 0; + virtual jsi::Value initializeNotificationsSession(jsi::Runtime &rt, jsi::String identityKeys, jsi::String prekey, jsi::String prekeySignature, std::optional oneTimeKey, jsi::String keyserverID) = 0; virtual jsi::Value isNotificationsSessionInitialized(jsi::Runtime &rt) = 0; virtual jsi::Value isDeviceNotificationsSessionInitialized(jsi::Runtime &rt, jsi::String deviceID) = 0; virtual jsi::Value isNotificationsSessionInitializedWithDevices(jsi::Runtime &rt, jsi::Array deviceIDs) = 0; @@ -42,10 +42,10 @@ virtual jsi::Value getDataFromNotifStorage(jsi::Runtime &rt, jsi::Array ids) = 0; virtual jsi::Value updateUnreadThickThreadsInNotifsStorage(jsi::Runtime &rt, jsi::Array unreadThickThreadIDs) = 0; virtual jsi::Value getUnreadThickThreadIDsFromNotifsStorage(jsi::Runtime &rt) = 0; - virtual jsi::Value initializeContentOutboundSession(jsi::Runtime &rt, jsi::String identityKeys, jsi::String prekey, jsi::String prekeySignature, std::optional oneTimeKey, jsi::String deviceID, bool olmCompatibilityMode) = 0; + virtual jsi::Value initializeContentOutboundSession(jsi::Runtime &rt, jsi::String identityKeys, jsi::String prekey, jsi::String prekeySignature, std::optional oneTimeKey, jsi::String deviceID) = 0; virtual jsi::Value initializeContentInboundSession(jsi::Runtime &rt, jsi::String identityKeys, jsi::Object encryptedContent, jsi::String deviceID, double sessionVersion, bool overwrite) = 0; virtual jsi::Value isContentSessionInitialized(jsi::Runtime &rt, jsi::String deviceID) = 0; - virtual jsi::Value initializeNotificationsOutboundSession(jsi::Runtime &rt, jsi::String identityKeys, jsi::String prekey, jsi::String prekeySignature, std::optional oneTimeKey, jsi::String deviceID, bool olmCompatibilityMode) = 0; + virtual jsi::Value initializeNotificationsOutboundSession(jsi::Runtime &rt, jsi::String identityKeys, jsi::String prekey, jsi::String prekeySignature, std::optional oneTimeKey, jsi::String deviceID) = 0; virtual jsi::Value encrypt(jsi::Runtime &rt, jsi::String message, jsi::String deviceID) = 0; virtual jsi::Value encryptNotification(jsi::Runtime &rt, jsi::String payload, jsi::String deviceID) = 0; virtual jsi::Value encryptAndPersist(jsi::Runtime &rt, jsi::String message, jsi::String deviceID, jsi::String messageID) = 0; @@ -222,13 +222,13 @@ return bridging::callFromJs( rt, &T::validateAndUploadPrekeys, jsInvoker_, instance_, std::move(authUserID), std::move(authDeviceID), std::move(authAccessToken)); } - jsi::Value initializeNotificationsSession(jsi::Runtime &rt, jsi::String identityKeys, jsi::String prekey, jsi::String prekeySignature, std::optional oneTimeKey, jsi::String keyserverID, bool olmCompatibilityMode) override { + jsi::Value initializeNotificationsSession(jsi::Runtime &rt, jsi::String identityKeys, jsi::String prekey, jsi::String prekeySignature, std::optional oneTimeKey, jsi::String keyserverID) override { static_assert( - bridging::getParameterCount(&T::initializeNotificationsSession) == 7, - "Expected initializeNotificationsSession(...) to have 7 parameters"); + bridging::getParameterCount(&T::initializeNotificationsSession) == 6, + "Expected initializeNotificationsSession(...) to have 6 parameters"); return bridging::callFromJs( - rt, &T::initializeNotificationsSession, jsInvoker_, instance_, std::move(identityKeys), std::move(prekey), std::move(prekeySignature), std::move(oneTimeKey), std::move(keyserverID), std::move(olmCompatibilityMode)); + rt, &T::initializeNotificationsSession, jsInvoker_, instance_, std::move(identityKeys), std::move(prekey), std::move(prekeySignature), std::move(oneTimeKey), std::move(keyserverID)); } jsi::Value isNotificationsSessionInitialized(jsi::Runtime &rt) override { static_assert( @@ -294,13 +294,13 @@ return bridging::callFromJs( rt, &T::getUnreadThickThreadIDsFromNotifsStorage, jsInvoker_, instance_); } - jsi::Value initializeContentOutboundSession(jsi::Runtime &rt, jsi::String identityKeys, jsi::String prekey, jsi::String prekeySignature, std::optional oneTimeKey, jsi::String deviceID, bool olmCompatibilityMode) override { + jsi::Value initializeContentOutboundSession(jsi::Runtime &rt, jsi::String identityKeys, jsi::String prekey, jsi::String prekeySignature, std::optional oneTimeKey, jsi::String deviceID) override { static_assert( - bridging::getParameterCount(&T::initializeContentOutboundSession) == 7, - "Expected initializeContentOutboundSession(...) to have 7 parameters"); + bridging::getParameterCount(&T::initializeContentOutboundSession) == 6, + "Expected initializeContentOutboundSession(...) to have 6 parameters"); return bridging::callFromJs( - rt, &T::initializeContentOutboundSession, jsInvoker_, instance_, std::move(identityKeys), std::move(prekey), std::move(prekeySignature), std::move(oneTimeKey), std::move(deviceID), std::move(olmCompatibilityMode)); + rt, &T::initializeContentOutboundSession, jsInvoker_, instance_, std::move(identityKeys), std::move(prekey), std::move(prekeySignature), std::move(oneTimeKey), std::move(deviceID)); } jsi::Value initializeContentInboundSession(jsi::Runtime &rt, jsi::String identityKeys, jsi::Object encryptedContent, jsi::String deviceID, double sessionVersion, bool overwrite) override { static_assert( @@ -318,13 +318,13 @@ return bridging::callFromJs( rt, &T::isContentSessionInitialized, jsInvoker_, instance_, std::move(deviceID)); } - jsi::Value initializeNotificationsOutboundSession(jsi::Runtime &rt, jsi::String identityKeys, jsi::String prekey, jsi::String prekeySignature, std::optional oneTimeKey, jsi::String deviceID, bool olmCompatibilityMode) override { + jsi::Value initializeNotificationsOutboundSession(jsi::Runtime &rt, jsi::String identityKeys, jsi::String prekey, jsi::String prekeySignature, std::optional oneTimeKey, jsi::String deviceID) override { static_assert( - bridging::getParameterCount(&T::initializeNotificationsOutboundSession) == 7, - "Expected initializeNotificationsOutboundSession(...) to have 7 parameters"); + bridging::getParameterCount(&T::initializeNotificationsOutboundSession) == 6, + "Expected initializeNotificationsOutboundSession(...) to have 6 parameters"); return bridging::callFromJs( - rt, &T::initializeNotificationsOutboundSession, jsInvoker_, instance_, std::move(identityKeys), std::move(prekey), std::move(prekeySignature), std::move(oneTimeKey), std::move(deviceID), std::move(olmCompatibilityMode)); + rt, &T::initializeNotificationsOutboundSession, jsInvoker_, instance_, std::move(identityKeys), std::move(prekey), std::move(prekeySignature), std::move(oneTimeKey), std::move(deviceID)); } jsi::Value encrypt(jsi::Runtime &rt, jsi::String message, jsi::String deviceID) override { static_assert( diff --git a/native/crypto/olm-api.js b/native/crypto/olm-api.js --- a/native/crypto/olm-api.js +++ b/native/crypto/olm-api.js @@ -58,7 +58,6 @@ async contentOutboundSessionCreator( contentIdentityKeys: OLMIdentityKeys, contentInitializationInfo: OlmSessionInitializationInfo, - olmCompatibilityMode: boolean, ): Promise { const { prekey, prekeySignature, oneTimeKey } = contentInitializationInfo; const identityKeys = JSON.stringify({ @@ -72,7 +71,6 @@ prekeySignature, oneTimeKey, contentIdentityKeys.ed25519, - olmCompatibilityMode, ); }, keyserverNotificationsSessionCreator( @@ -80,7 +78,6 @@ notificationsIdentityKeys: OLMIdentityKeys, notificationsInitializationInfo: OlmSessionInitializationInfo, keyserverID: string, - olmCompatibilityMode: boolean, ): Promise { const { prekey, prekeySignature, oneTimeKey } = notificationsInitializationInfo; @@ -90,14 +87,12 @@ prekeySignature, oneTimeKey, keyserverID, - olmCompatibilityMode, ); }, async notificationsOutboundSessionCreator( deviceID: string, notificationsIdentityKeys: OLMIdentityKeys, notificationsInitializationInfo: OlmSessionInitializationInfo, - olmCompatibilityMode: boolean, ): Promise { const { prekey, prekeySignature, oneTimeKey } = notificationsInitializationInfo; @@ -111,7 +106,6 @@ prekeySignature, oneTimeKey, deviceID, - olmCompatibilityMode, ); }, isDeviceNotificationsSessionInitialized: diff --git a/native/schema/CommCoreModuleSchema.js b/native/schema/CommCoreModuleSchema.js --- a/native/schema/CommCoreModuleSchema.js +++ b/native/schema/CommCoreModuleSchema.js @@ -73,7 +73,6 @@ prekeySignature: string, oneTimeKey: ?string, keyserverID: string, - olmCompatibilityMode: boolean, ) => Promise; +isNotificationsSessionInitialized: () => Promise; +isDeviceNotificationsSessionInitialized: ( @@ -103,7 +102,6 @@ prekeySignature: string, oneTimeKey: ?string, deviceID: string, - olmCompatibilityMode: boolean, ) => Promise; +initializeContentInboundSession: ( identityKeys: string, @@ -119,7 +117,6 @@ prekeySignature: string, oneTimeKey: ?string, deviceID: string, - olmCompatibilityMode: boolean, ) => Promise; +encrypt: (message: string, deviceID: string) => Promise; +encryptNotification: ( diff --git a/web/shared-worker/worker/worker-crypto.js b/web/shared-worker/worker/worker-crypto.js --- a/web/shared-worker/worker/worker-crypto.js +++ b/web/shared-worker/worker/worker-crypto.js @@ -185,7 +185,6 @@ notificationsInitializationInfo: OlmSessionInitializationInfo, dataPersistenceKey: string, dataEncryptionKeyDBLabel: string, - olmCompatibilityMode: boolean, ): Promise { if (!cryptoStore) { throw new Error('Crypto account not initialized'); @@ -209,7 +208,7 @@ notificationsInitializationInfo.oneTimeKey || '', notificationsPrekey, notificationsInitializationInfo.prekeySignature, - olmCompatibilityMode, + true, // olmCompatibilityMode ); const encryptedMessage = session.encrypt( @@ -842,7 +841,6 @@ async contentOutboundSessionCreator( contentIdentityKeys: OLMIdentityKeys, contentInitializationInfo: OlmSessionInitializationInfo, - olmCompatibilityMode: boolean, ): Promise { if (!cryptoStore) { throw new Error('Crypto account not initialized'); @@ -858,7 +856,7 @@ contentInitializationInfo.oneTimeKey || '', contentInitializationInfo.prekey, contentInitializationInfo.prekeySignature, - olmCompatibilityMode, + true, // olmCompatibilityMode ); const olmMessage = session.encrypt( @@ -898,7 +896,6 @@ deviceID: string, notificationsIdentityKeys: OLMIdentityKeys, notificationsInitializationInfo: OlmSessionInitializationInfo, - olmCompatibilityMode: boolean, ): Promise { const dataPersistenceKey = getOlmDataKeyForDeviceID(deviceID); const dataEncryptionKeyDBLabel = @@ -909,7 +906,6 @@ notificationsInitializationInfo, dataPersistenceKey, dataEncryptionKeyDBLabel, - olmCompatibilityMode, ); }, async isDeviceNotificationsSessionInitialized(deviceID: string) { @@ -948,7 +944,6 @@ notificationsIdentityKeys: OLMIdentityKeys, notificationsInitializationInfo: OlmSessionInitializationInfo, keyserverID: string, - olmCompatibilityMode: boolean, ): Promise { const platformDetails = getPlatformDetails(); if (!platformDetails) { @@ -963,7 +958,6 @@ notificationsInitializationInfo, notifsOlmDataContentKey, notifsOlmDataEncryptionKeyDBLabel, - olmCompatibilityMode, ); return message;