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 bc8dd341e1fa5dff7ab3684bdbec1b344befd118..c088cb223029ea633c037996969b13a77992c79a 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 a8cb58a905146ca1a1612e73b4a6da51db136ff7..caade6dbd3afd6634443d39f8bb506c71ee819ae 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
                 )