From 8ff81de988a6a2021adc0917ff8a9ecaae5615a9 Mon Sep 17 00:00:00 2001
From: Taras Smakula <tarassmakula@gmail.com>
Date: Mon, 28 Aug 2023 16:10:31 +0300
Subject: [PATCH] Generate random key outside sdk

---
 .../sdk/api/session/crypto/keysbackup/KeysBackupService.kt  | 5 ++++-
 .../internal/crypto/keysbackup/DefaultKeysBackupService.kt  | 6 ++----
 2 files changed, 6 insertions(+), 5 deletions(-)

diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/crypto/keysbackup/KeysBackupService.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/crypto/keysbackup/KeysBackupService.kt
index bc8dd341..c088cb22 100644
--- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/crypto/keysbackup/KeysBackupService.kt
+++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/crypto/keysbackup/KeysBackupService.kt
@@ -128,8 +128,11 @@ interface KeysBackupService {
             callback: MatrixCallback<MegolmBackupCreationInfo>
     )
 
+    fun prepareKeysBackupVersion(
+            key: ByteArray,
+            callback: MatrixCallback<MegolmBackupCreationInfo>
+    )
 
-    fun prepareRandomKeyBackupVersion(callback: MatrixCallback<MegolmBackupCreationInfo>)
     /**
      * Delete a keys backup version. It will delete all backed up keys on the server, and the backup itself.
      * If we are backing up to this version. Backup will be stopped.
diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/keysbackup/DefaultKeysBackupService.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/keysbackup/DefaultKeysBackupService.kt
index a8cb58a9..caade6db 100644
--- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/keysbackup/DefaultKeysBackupService.kt
+++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/keysbackup/DefaultKeysBackupService.kt
@@ -237,14 +237,12 @@ internal class DefaultKeysBackupService @Inject constructor(
         }
     }
 
-    override fun prepareRandomKeyBackupVersion(callback: MatrixCallback<MegolmBackupCreationInfo>) {
+    override fun prepareKeysBackupVersion(key: ByteArray, callback: MatrixCallback<MegolmBackupCreationInfo>) {
         cryptoCoroutineScope.launch(coroutineDispatchers.io) {
             try {
-                val privateKey = ByteArray(32)
-                SecureRandom().nextBytes(privateKey)
                 val olmPkDecryption = OlmPkDecryption()
                 val signalableBackupAuthData = SignalableMegolmBackupAuthData(
-                        publicKey = olmPkDecryption.setPrivateKey(privateKey),
+                        publicKey = olmPkDecryption.setPrivateKey(key),
                         privateKeySalt = null,
                         privateKeyIterations = null
                 )
-- 
GitLab