kopia lustrzana https://github.com/ryukoposting/Signal-Android
41 wiersze
1.3 KiB
Kotlin
41 wiersze
1.3 KiB
Kotlin
|
package org.thoughtcrime.securesms.absbackup.backupables
|
||
|
|
||
|
import com.google.protobuf.InvalidProtocolBufferException
|
||
|
import org.signal.core.util.logging.Log
|
||
|
import org.thoughtcrime.securesms.absbackup.AndroidBackupItem
|
||
|
import org.thoughtcrime.securesms.absbackup.ExternalBackupProtos
|
||
|
import org.thoughtcrime.securesms.keyvalue.SignalStore
|
||
|
|
||
|
/**
|
||
|
* This backs up the not-secret KBS Auth tokens, which can be combined with a PIN to prove ownership of a phone number in order to complete the registration process.
|
||
|
*/
|
||
|
object KbsAuthTokens : AndroidBackupItem {
|
||
|
private const val TAG = "KbsAuthTokens"
|
||
|
|
||
|
override fun getKey(): String {
|
||
|
return TAG
|
||
|
}
|
||
|
|
||
|
override fun getDataForBackup(): ByteArray {
|
||
|
val registrationRecoveryTokenList = SignalStore.kbsValues().kbsAuthTokenList
|
||
|
val proto = ExternalBackupProtos.KbsAuthToken.newBuilder()
|
||
|
.addAllToken(registrationRecoveryTokenList)
|
||
|
.build()
|
||
|
return proto.toByteArray()
|
||
|
}
|
||
|
|
||
|
override fun restoreData(data: ByteArray) {
|
||
|
if (SignalStore.kbsValues().kbsAuthTokenList.isNotEmpty()) {
|
||
|
return
|
||
|
}
|
||
|
|
||
|
try {
|
||
|
val proto = ExternalBackupProtos.KbsAuthToken.parseFrom(data)
|
||
|
|
||
|
SignalStore.kbsValues().putAuthTokenList(proto.tokenList)
|
||
|
} catch (e: InvalidProtocolBufferException) {
|
||
|
Log.w(TAG, "Cannot restore KbsAuthToken from backup service.")
|
||
|
}
|
||
|
}
|
||
|
}
|