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.")
|
|
}
|
|
}
|
|
}
|