From 17f6442c58444cf196a2ca57f73981331a6fc299 Mon Sep 17 00:00:00 2001
From: Florian Duros <florian.duros@gmail.com>
Date: Wed, 25 Oct 2023 16:32:48 +0200
Subject: [PATCH] WIP make rageshake works with rust crypto

---
 src/rageshake/submit-rageshake.ts | 20 +++++++++++---------
 1 file changed, 11 insertions(+), 9 deletions(-)

diff --git a/src/rageshake/submit-rageshake.ts b/src/rageshake/submit-rageshake.ts
index 5cc8449843ca..aac02ef98000 100644
--- a/src/rageshake/submit-rageshake.ts
+++ b/src/rageshake/submit-rageshake.ts
@@ -82,8 +82,9 @@ async function collectBugReport(opts: IOpts = {}, gzipLogs = true): Promise<Form
         body.append("user_id", client.credentials.userId!);
         body.append("device_id", client.deviceId!);
 
-        // TODO: make this work with rust crypto
-        if (client.isCryptoEnabled() && client.crypto) {
+        const cryptoApi = client.getCrypto();
+
+        if (cryptoApi) {
             const keys = [`ed25519:${client.getDeviceEd25519Key()}`];
             if (client.getDeviceCurve25519Key) {
                 keys.push(`curve25519:${client.getDeviceCurve25519Key()}`);
@@ -92,16 +93,17 @@ async function collectBugReport(opts: IOpts = {}, gzipLogs = true): Promise<Form
             body.append("cross_signing_key", (await client.getCrypto()?.getCrossSigningKeyId()) ?? "n/a");
 
             // add cross-signing status information
-            const crossSigning = client.crypto.crossSigningInfo;
-            const secretStorage = client.crypto.secretStorage;
+            const crossSigningStatus = await cryptoApi.getCrossSigningStatus();
+            const secretStorage = client.secretStorage;
 
-            body.append("cross_signing_ready", String(await client.isCrossSigningReady()));
-            body.append("cross_signing_key", crossSigning.getId() ?? "n/a");
+            body.append("cross_signing_ready", String(await cryptoApi.isCrossSigningReady()));
+            body.append("cross_signing_key", (await cryptoApi.getCrossSigningKeyId()) ?? "n/a");
             body.append(
                 "cross_signing_privkey_in_secret_storage",
-                String(!!(await crossSigning.isStoredInSecretStorage(secretStorage))),
+                String(crossSigningStatus.privateKeysInSecretStorage),
             );
 
+            // TODO
             const pkCache = client.getCrossSigningCacheCallbacks();
             body.append(
                 "cross_signing_master_privkey_cached",
@@ -116,11 +118,11 @@ async function collectBugReport(opts: IOpts = {}, gzipLogs = true): Promise<Form
                 String(!!(pkCache && (await pkCache?.getCrossSigningKeyCache?.("user_signing")))),
             );
 
-            body.append("secret_storage_ready", String(await client.isSecretStorageReady()));
+            body.append("secret_storage_ready", String(await cryptoApi.isSecretStorageReady()));
             body.append("secret_storage_key_in_account", String(await secretStorage.hasKey()));
 
             body.append("session_backup_key_in_secret_storage", String(!!(await client.isKeyBackupKeyStored())));
-            const sessionBackupKeyFromCache = await client.crypto.getSessionBackupPrivateKey();
+            const sessionBackupKeyFromCache = await cryptoApi.getSessionBackupPrivateKey();
             body.append("session_backup_key_cached", String(!!sessionBackupKeyFromCache));
             body.append("session_backup_key_well_formed", String(sessionBackupKeyFromCache instanceof Uint8Array));
         }