Page Menu
Home
Phabricator
Search
Configure Global Search
Log In
Files
F3333732
D13849.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
11 KB
Referenced Files
None
Subscribers
None
D13849.diff
View Options
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
@@ -231,8 +231,10 @@
jsi::String backupDataKey,
jsi::String backupLogDataKey,
jsi::String maxVersion) override;
- virtual jsi::Value
- retrieveBackupKeys(jsi::Runtime &rt, jsi::String backupSecret) override;
+ virtual jsi::Value retrieveBackupKeys(
+ jsi::Runtime &rt,
+ jsi::String backupSecret,
+ jsi::String backupID) override;
virtual jsi::Value retrieveLatestBackupInfo(
jsi::Runtime &rt,
jsi::String userIdentifier) override;
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
@@ -2598,14 +2598,20 @@
});
}
-jsi::Value
-CommCoreModule::retrieveBackupKeys(jsi::Runtime &rt, jsi::String backupSecret) {
+jsi::Value CommCoreModule::retrieveBackupKeys(
+ jsi::Runtime &rt,
+ jsi::String backupSecret,
+ jsi::String backupID) {
std::string backupSecretStr = backupSecret.utf8(rt);
+ std::string backupIDStr = backupID.utf8(rt);
return createPromiseAsJSIValue(
rt, [=](jsi::Runtime &innerRt, std::shared_ptr<Promise> promise) {
auto currentID = RustPromiseManager::instance.addPromise(
{promise, this->jsInvoker_, innerRt});
- ::retrieveBackupKeys(rust::string(backupSecretStr), currentID);
+ ::retrieveBackupKeys(
+ rust::string(backupSecretStr),
+ rust::string(backupIDStr),
+ currentID);
});
}
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
@@ -194,7 +194,7 @@
return static_cast<CommCoreModuleSchemaCxxSpecJSI *>(&turboModule)->restoreBackupData(rt, args[0].asString(rt), args[1].asString(rt), args[2].asString(rt), args[3].asString(rt));
}
static jsi::Value __hostFunction_CommCoreModuleSchemaCxxSpecJSI_retrieveBackupKeys(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
- return static_cast<CommCoreModuleSchemaCxxSpecJSI *>(&turboModule)->retrieveBackupKeys(rt, args[0].asString(rt));
+ return static_cast<CommCoreModuleSchemaCxxSpecJSI *>(&turboModule)->retrieveBackupKeys(rt, args[0].asString(rt), args[1].asString(rt));
}
static jsi::Value __hostFunction_CommCoreModuleSchemaCxxSpecJSI_retrieveLatestBackupInfo(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
return static_cast<CommCoreModuleSchemaCxxSpecJSI *>(&turboModule)->retrieveLatestBackupInfo(rt, args[0].asString(rt));
@@ -302,7 +302,7 @@
methodMap_["createNewSIWEBackup"] = MethodMetadata {2, __hostFunction_CommCoreModuleSchemaCxxSpecJSI_createNewSIWEBackup};
methodMap_["restoreBackup"] = MethodMetadata {3, __hostFunction_CommCoreModuleSchemaCxxSpecJSI_restoreBackup};
methodMap_["restoreBackupData"] = MethodMetadata {4, __hostFunction_CommCoreModuleSchemaCxxSpecJSI_restoreBackupData};
- methodMap_["retrieveBackupKeys"] = MethodMetadata {1, __hostFunction_CommCoreModuleSchemaCxxSpecJSI_retrieveBackupKeys};
+ methodMap_["retrieveBackupKeys"] = MethodMetadata {2, __hostFunction_CommCoreModuleSchemaCxxSpecJSI_retrieveBackupKeys};
methodMap_["retrieveLatestBackupInfo"] = MethodMetadata {1, __hostFunction_CommCoreModuleSchemaCxxSpecJSI_retrieveLatestBackupInfo};
methodMap_["setSIWEBackupSecrets"] = MethodMetadata {1, __hostFunction_CommCoreModuleSchemaCxxSpecJSI_setSIWEBackupSecrets};
methodMap_["getSIWEBackupSecrets"] = MethodMetadata {0, __hostFunction_CommCoreModuleSchemaCxxSpecJSI_getSIWEBackupSecrets};
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
@@ -78,7 +78,7 @@
virtual jsi::Value createNewSIWEBackup(jsi::Runtime &rt, jsi::String backupSecret, jsi::String siweBackupMsg) = 0;
virtual jsi::Value restoreBackup(jsi::Runtime &rt, jsi::String backupSecret, jsi::String maxVersion, jsi::String backupID) = 0;
virtual jsi::Value restoreBackupData(jsi::Runtime &rt, jsi::String backupID, jsi::String backupDataKey, jsi::String backupLogDataKey, jsi::String maxVersion) = 0;
- virtual jsi::Value retrieveBackupKeys(jsi::Runtime &rt, jsi::String backupSecret) = 0;
+ virtual jsi::Value retrieveBackupKeys(jsi::Runtime &rt, jsi::String backupSecret, jsi::String backupID) = 0;
virtual jsi::Value retrieveLatestBackupInfo(jsi::Runtime &rt, jsi::String userIdentifier) = 0;
virtual jsi::Value setSIWEBackupSecrets(jsi::Runtime &rt, jsi::Object siweBackupSecrets) = 0;
virtual jsi::Value getSIWEBackupSecrets(jsi::Runtime &rt) = 0;
@@ -579,13 +579,13 @@
return bridging::callFromJs<jsi::Value>(
rt, &T::restoreBackupData, jsInvoker_, instance_, std::move(backupID), std::move(backupDataKey), std::move(backupLogDataKey), std::move(maxVersion));
}
- jsi::Value retrieveBackupKeys(jsi::Runtime &rt, jsi::String backupSecret) override {
+ jsi::Value retrieveBackupKeys(jsi::Runtime &rt, jsi::String backupSecret, jsi::String backupID) override {
static_assert(
- bridging::getParameterCount(&T::retrieveBackupKeys) == 2,
- "Expected retrieveBackupKeys(...) to have 2 parameters");
+ bridging::getParameterCount(&T::retrieveBackupKeys) == 3,
+ "Expected retrieveBackupKeys(...) to have 3 parameters");
return bridging::callFromJs<jsi::Value>(
- rt, &T::retrieveBackupKeys, jsInvoker_, instance_, std::move(backupSecret));
+ rt, &T::retrieveBackupKeys, jsInvoker_, instance_, std::move(backupSecret), std::move(backupID));
}
jsi::Value retrieveLatestBackupInfo(jsi::Runtime &rt, jsi::String userIdentifier) override {
static_assert(
diff --git a/native/native_rust_library/src/backup.rs b/native/native_rust_library/src/backup.rs
--- a/native/native_rust_library/src/backup.rs
+++ b/native/native_rust_library/src/backup.rs
@@ -120,20 +120,12 @@
});
}
- pub fn retrieve_backup_keys(backup_secret: String, promise_id: u32) {
+ pub fn retrieve_backup_keys(
+ backup_secret: String,
+ backup_id: String,
+ promise_id: u32,
+ ) {
RUNTIME.spawn(async move {
- let latest_backup_id_response = download_latest_backup_id()
- .await
- .map_err(|err| err.to_string());
-
- let backup_id = match latest_backup_id_response {
- Ok(result) => result.backup_id,
- Err(error) => {
- string_callback(error, promise_id, "".to_string());
- return;
- }
- };
-
let result = download_backup_keys(backup_id, backup_secret)
.await
.map_err(|err| err.to_string());
@@ -326,32 +318,6 @@
download_backup_data(backup_keys).await
}
-async fn download_latest_backup_id(
-) -> Result<LatestBackupInfoResponse, Box<dyn Error>> {
- let backup_client = BackupClient::new(BACKUP_SOCKET_ADDR)?;
- let user_identity = get_user_identity_from_secure_store()?;
-
- let latest_backup_descriptor = BackupDescriptor::Latest {
- user_identifier: user_identity.user_id.clone(),
- };
-
- let backup_info_response = backup_client
- .download_backup_data(&latest_backup_descriptor, RequestedData::BackupInfo)
- .await?;
-
- let LatestBackupInfoResponse {
- backup_id,
- user_id,
- siwe_backup_msg,
- } = serde_json::from_slice(&backup_info_response)?;
-
- Ok(LatestBackupInfoResponse {
- backup_id,
- user_id,
- siwe_backup_msg,
- })
-}
-
async fn download_latest_backup_info(
user_identifier: String,
) -> Result<LatestBackupInfoResponse, Box<dyn Error>> {
@@ -383,12 +349,13 @@
let backup_client = BackupClient::new(BACKUP_SOCKET_ADDR)?;
let user_identity = get_user_identity_from_secure_store()?;
- let latest_backup_descriptor = BackupDescriptor::Latest {
- user_identifier: user_identity.user_id.clone(),
+ let backup_descriptor = BackupDescriptor::BackupID {
+ backup_id: backup_id.clone(),
+ user_identity: user_identity.clone(),
};
let mut encrypted_user_keys = backup_client
- .download_backup_data(&latest_backup_descriptor, RequestedData::UserKeys)
+ .download_backup_data(&backup_descriptor, RequestedData::UserKeys)
.await?;
let mut backup_key = compute_backup_key_str(&backup_secret, &backup_id)?;
let user_keys =
diff --git a/native/native_rust_library/src/lib.rs b/native/native_rust_library/src/lib.rs
--- a/native/native_rust_library/src/lib.rs
+++ b/native/native_rust_library/src/lib.rs
@@ -454,7 +454,11 @@
);
#[cxx_name = "retrieveBackupKeys"]
- fn retrieve_backup_keys(backup_secret: String, promise_id: u32);
+ fn retrieve_backup_keys(
+ backup_secret: String,
+ backup_id: String,
+ promise_id: u32,
+ );
#[cxx_name = "retrieveLatestBackupInfo"]
fn retrieve_latest_backup_info(user_identifier: String, promise_id: u32);
diff --git a/native/profile/secondary-device-qr-code-scanner.react.js b/native/profile/secondary-device-qr-code-scanner.react.js
--- a/native/profile/secondary-device-qr-code-scanner.react.js
+++ b/native/profile/secondary-device-qr-code-scanner.react.js
@@ -44,6 +44,7 @@
import { assertWithValidator } from 'lib/utils/validation-utils.js';
import type { ProfileNavigationProp } from './profile.react.js';
+import { useClientBackup } from '../backup/use-client-backup.js';
import { useGetBackupSecretForLoggedInUser } from '../backup/use-get-backup-secret.js';
import TextInput from '../components/text-input.react.js';
import { commCoreModule } from '../native-modules.js';
@@ -89,6 +90,7 @@
const ownPeerDevices = useSelector(getOwnPeerDevices);
const keyserverDeviceID = getKeyserverDeviceID(ownPeerDevices);
const getBackupSecret = useGetBackupSecretForLoggedInUser();
+ const { retrieveLatestBackupInfo } = useClientBackup();
const { panelForegroundTertiaryLabel } = useColors();
@@ -159,9 +161,14 @@
return;
}
- const backupSecret = await getBackupSecret();
- const backupKeysResponse =
- await commCoreModule.retrieveBackupKeys(backupSecret);
+ const [backupSecret, latestBackupInfo] = await Promise.all([
+ getBackupSecret(),
+ retrieveLatestBackupInfo(),
+ ]);
+ const backupKeysResponse = await commCoreModule.retrieveBackupKeys(
+ backupSecret,
+ latestBackupInfo.backupID,
+ );
const backupKeys = assertWithValidator<BackupKeys>(
JSON.parse(backupKeysResponse),
backupKeysValidator,
@@ -191,6 +198,7 @@
getBackupSecret,
tunnelbrokerContext,
goBack,
+ retrieveLatestBackupInfo,
],
);
diff --git a/native/schema/CommCoreModuleSchema.js b/native/schema/CommCoreModuleSchema.js
--- a/native/schema/CommCoreModuleSchema.js
+++ b/native/schema/CommCoreModuleSchema.js
@@ -172,7 +172,10 @@
backupLogDataKey: string,
maxVersion: string,
) => Promise<void>;
- +retrieveBackupKeys: (backupSecret: string) => Promise<string>;
+ +retrieveBackupKeys: (
+ backupSecret: string,
+ backupID: string,
+ ) => Promise<string>;
+retrieveLatestBackupInfo: (userIdentifier: string) => Promise<string>;
+setSIWEBackupSecrets: (siweBackupSecrets: Object) => Promise<void>;
+getSIWEBackupSecrets: () => Promise<?Object>;
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Fri, Nov 22, 5:08 AM (19 h, 55 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
2560038
Default Alt Text
D13849.diff (11 KB)
Attached To
Mode
D13849: [CommCoreModule][native_rust_library] update downloading User Keys to support user identifier
Attached
Detach File
Event Timeline
Log In to Comment