Skip to content

Commit 554bc23

Browse files
authored
Merge pull request #274 from DimensionDev/bugfix/backup_msg_decode
fix backup msg pack decode
2 parents da8dbd3 + f10ceda commit 554bc23

2 files changed

Lines changed: 10 additions & 1 deletion

File tree

setting/build.gradle.kts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ kotlin {
1313
dependencies {
1414
implementation(projects.common.routeProcessor.annotations)
1515
kspAndroid(projects.common.routeProcessor)
16+
implementation("com.fasterxml.jackson.core:jackson-core:2.13.3")
17+
implementation("org.msgpack:jackson-dataformat-msgpack:0.9.1")
1618
}
1719
}
1820
val commonTest by getting {

setting/src/androidMain/kotlin/com/dimension/maskbook/setting/util/EncryptUtils.kt

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,14 +20,19 @@
2020
*/
2121
package com.dimension.maskbook.setting.util
2222

23+
import com.dimension.maskbook.common.ext.JSON
2324
import com.dimension.maskbook.common.ext.msgPack
2425
import com.dimension.maskbook.setting.export.model.BackupMetaFile
2526
import com.dimension.maskbook.setting.export.model.BackupWrongPasswordException
2627
import com.dimension.maskbook.setting.model.RemoteBackupData
28+
import com.fasterxml.jackson.core.type.TypeReference
29+
import com.fasterxml.jackson.databind.ObjectMapper
2730
import kotlinx.serialization.builtins.serializer
31+
import kotlinx.serialization.decodeFromString
2832
import org.bouncycastle.crypto.digests.SHA256Digest
2933
import org.bouncycastle.crypto.generators.PKCS5S2ParametersGenerator
3034
import org.bouncycastle.crypto.params.KeyParameter
35+
import org.msgpack.jackson.dataformat.MessagePackMapper
3136
import java.security.SecureRandom
3237
import javax.crypto.Cipher
3338
import javax.crypto.spec.IvParameterSpec
@@ -68,7 +73,9 @@ object EncryptUtils {
6873
kotlin.runCatching {
6974
cipher.doFinal(remoteBackupData.encrypted)
7075
}.onSuccess {
71-
return msgPack.decodeFromByteArray(BackupMetaFile.serializer(), it)
76+
val map = MessagePackMapper().readValue(it, object : TypeReference<Map<String, Any>>() {})
77+
val json = ObjectMapper().writeValueAsString(map)
78+
return JSON.decodeFromString<BackupMetaFile>(json)
7279
}.onFailure {
7380
throw BackupWrongPasswordException
7481
}

0 commit comments

Comments
 (0)