From 5076ee7f09d7cfe94bbb29b78cff58a0bd4cd436 Mon Sep 17 00:00:00 2001 From: Julian Raufelder Date: Tue, 1 Oct 2024 18:10:23 +0200 Subject: [PATCH] Fix access token migration when app is in pre v1.2.0 and updating to 1.10.3 --- .../data/db/UpgradeDatabaseTest.kt | 25 +++++++++---------- .../org/cryptomator/data/db/Upgrade2To3.kt | 3 ++- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/data/src/androidTest/java/org/cryptomator/data/db/UpgradeDatabaseTest.kt b/data/src/androidTest/java/org/cryptomator/data/db/UpgradeDatabaseTest.kt index 8f79d67cc..b50776a8d 100644 --- a/data/src/androidTest/java/org/cryptomator/data/db/UpgradeDatabaseTest.kt +++ b/data/src/androidTest/java/org/cryptomator/data/db/UpgradeDatabaseTest.kt @@ -102,7 +102,7 @@ class UpgradeDatabaseTest { private fun checkUpgrade2to3ResultForCloud(cloudName: String, accessToken: String, url: String, username: String, webdavCertificate: String) { Sql.query("CLOUD_ENTITY").where("TYPE", Sql.eq(cloudName)).executeOn(db).use { it.moveToFirst() - Assert.assertThat(CredentialCryptor.getInstance(context).decrypt(it.getString(it.getColumnIndex("ACCESS_TOKEN"))), CoreMatchers.`is`(accessToken)) + Assert.assertThat(CredentialCryptor.getInstance(context, CryptoMode.CBC).decrypt(it.getString(it.getColumnIndex("ACCESS_TOKEN"))), CoreMatchers.`is`(accessToken)) Assert.assertThat(it.getString(it.getColumnIndex("WEBDAV_URL")), CoreMatchers.`is`(url)) Assert.assertThat(it.getString(it.getColumnIndex("USERNAME")), CoreMatchers.`is`(username)) Assert.assertThat(it.getString(it.getColumnIndex("WEBDAV_CERTIFICATE")), CoreMatchers.`is`(webdavCertificate)) @@ -918,17 +918,6 @@ class UpgradeDatabaseTest { @Test fun upgrade12To13Webdav() { Upgrade0To1().applyTo(db, 0) - Upgrade1To2().applyTo(db, 1) - Upgrade2To3(context).applyTo(db, 2) - Upgrade3To4().applyTo(db, 3) - Upgrade4To5().applyTo(db, 4) - Upgrade5To6().applyTo(db, 5) - Upgrade6To7().applyTo(db, 6) - Upgrade7To8().applyTo(db, 7) - Upgrade8To9(sharedPreferencesHandler).applyTo(db, 8) - Upgrade9To10(sharedPreferencesHandler).applyTo(db, 9) - Upgrade10To11().applyTo(db, 10) - Upgrade11To12(sharedPreferencesHandler).applyTo(db, 11) val gcmCryptor = CredentialCryptor.getInstance(context, CryptoMode.GCM) val cbcCryptor = CredentialCryptor.getInstance(context, CryptoMode.CBC) @@ -941,9 +930,19 @@ class UpgradeDatabaseTest { .text("TYPE", CloudType.WEBDAV.name) // .text("USERNAME", "username") // .text("ACCESS_TOKEN", accessTokenCiphertext) // - .text("URL", "url") // .executeOn(db) + Upgrade1To2().applyTo(db, 1) + Upgrade2To3(context).applyTo(db, 2) + Upgrade3To4().applyTo(db, 3) + Upgrade4To5().applyTo(db, 4) + Upgrade5To6().applyTo(db, 5) + Upgrade6To7().applyTo(db, 6) + Upgrade7To8().applyTo(db, 7) + Upgrade8To9(sharedPreferencesHandler).applyTo(db, 8) + Upgrade9To10(sharedPreferencesHandler).applyTo(db, 9) + Upgrade10To11().applyTo(db, 10) + Upgrade11To12(sharedPreferencesHandler).applyTo(db, 11) Upgrade12To13(context).applyTo(db, 12) Sql.query("CLOUD_ENTITY").where("_id", Sql.eq(15)).executeOn(db).use { diff --git a/data/src/main/java/org/cryptomator/data/db/Upgrade2To3.kt b/data/src/main/java/org/cryptomator/data/db/Upgrade2To3.kt index 7938f5d27..680dbdda4 100644 --- a/data/src/main/java/org/cryptomator/data/db/Upgrade2To3.kt +++ b/data/src/main/java/org/cryptomator/data/db/Upgrade2To3.kt @@ -3,6 +3,7 @@ package org.cryptomator.data.db import android.content.Context import android.content.SharedPreferences import org.cryptomator.util.crypto.CredentialCryptor +import org.cryptomator.util.crypto.CryptoMode import org.greenrobot.greendao.database.Database import javax.inject.Inject import javax.inject.Singleton @@ -38,7 +39,7 @@ internal class Upgrade2To3 @Inject constructor(private val context: Context) : D private fun encrypt(token: String?): String? { return if (token == null) null else CredentialCryptor // - .getInstance(context) // + .getInstance(context, CryptoMode.CBC) // .encrypt(token) }