diff --git a/briar-android/src/main/AndroidManifest.xml b/briar-android/src/main/AndroidManifest.xml index 7596c8532..5f0972bdc 100644 --- a/briar-android/src/main/AndroidManifest.xml +++ b/briar-android/src/main/AndroidManifest.xml @@ -174,6 +174,14 @@ android:value="org.briarproject.briar.android.account.NewOrRecoverActivity" /> + + + Social Backup - Old Social Backup + Restore Account You have received a social backup shard. diff --git a/briar-api/src/main/java/org/briarproject/briar/api/socialbackup/ContactData.java b/briar-api/src/main/java/org/briarproject/briar/api/socialbackup/ContactData.java index 7d83a6eaa..d1c846390 100644 --- a/briar-api/src/main/java/org/briarproject/briar/api/socialbackup/ContactData.java +++ b/briar-api/src/main/java/org/briarproject/briar/api/socialbackup/ContactData.java @@ -12,14 +12,14 @@ import javax.annotation.concurrent.Immutable; @Immutable @NotNullByDefault -class ContactData { +public class ContactData { private final Contact contact; private final Map properties; @Nullable private final Shard shard; - ContactData(Contact contact, + public ContactData(Contact contact, Map properties, @Nullable Shard shard) { this.contact = contact; diff --git a/briar-api/src/main/java/org/briarproject/briar/api/socialbackup/SocialBackup.java b/briar-api/src/main/java/org/briarproject/briar/api/socialbackup/SocialBackup.java index 76cfa6f05..1be5a0822 100644 --- a/briar-api/src/main/java/org/briarproject/briar/api/socialbackup/SocialBackup.java +++ b/briar-api/src/main/java/org/briarproject/briar/api/socialbackup/SocialBackup.java @@ -9,7 +9,7 @@ public class SocialBackup { private List contacts; private int version; - SocialBackup (Identity identity, List contacts, int version) { + public SocialBackup (Identity identity, List contacts, int version) { this.identity = identity; this.contacts = contacts; this.version = version; diff --git a/briar-core/src/main/java/org/briarproject/briar/socialbackup/BackupPayloadEncoder.java b/briar-core/src/main/java/org/briarproject/briar/socialbackup/BackupPayloadEncoder.java index 7019661c9..ed8e852b2 100644 --- a/briar-core/src/main/java/org/briarproject/briar/socialbackup/BackupPayloadEncoder.java +++ b/briar-core/src/main/java/org/briarproject/briar/socialbackup/BackupPayloadEncoder.java @@ -3,12 +3,14 @@ package org.briarproject.briar.socialbackup; import org.briarproject.bramble.api.crypto.SecretKey; import org.briarproject.bramble.api.identity.Identity; import org.briarproject.bramble.api.nullsafety.NotNullByDefault; +import org.briarproject.briar.api.socialbackup.BackupPayload; +import org.briarproject.briar.api.socialbackup.ContactData; import java.util.List; @NotNullByDefault interface BackupPayloadEncoder { - org.briarproject.briar.api.socialbackup.BackupPayload encodeBackupPayload(SecretKey secret, Identity identity, - List contactData, int version); + BackupPayload encodeBackupPayload(SecretKey secret, Identity identity, + List contactData, int version); } diff --git a/briar-core/src/main/java/org/briarproject/briar/socialbackup/SocialBackupManagerImpl.java b/briar-core/src/main/java/org/briarproject/briar/socialbackup/SocialBackupManagerImpl.java index 3ebc187f9..cadf7b29e 100644 --- a/briar-core/src/main/java/org/briarproject/briar/socialbackup/SocialBackupManagerImpl.java +++ b/briar-core/src/main/java/org/briarproject/briar/socialbackup/SocialBackupManagerImpl.java @@ -52,6 +52,7 @@ import org.briarproject.briar.api.socialbackup.ShardMessageHeader; import org.briarproject.briar.api.socialbackup.ShardReceivedEvent; import org.briarproject.briar.api.socialbackup.SocialBackupManager; import org.briarproject.briar.client.ConversationClientImpl; +import org.briarproject.briar.api.socialbackup.ContactData; import java.util.ArrayList; import java.util.Collection; @@ -193,12 +194,12 @@ class SocialBackupManagerImpl extends ConversationClientImpl // Add the shard to our backup, if any if (localBackupExists(txn)) { Shard shard = messageParser.parseShardMessage(body); - List contactData = loadContactData(txn); - ListIterator it = contactData.listIterator(); + List contactData = loadContactData(txn); + ListIterator it = contactData.listIterator(); while (it.hasNext()) { - org.briarproject.briar.api.socialbackup.ContactData cd = it.next(); + ContactData cd = it.next(); if (cd.getContact().getId().equals(contactId)) { - it.set(new org.briarproject.briar.api.socialbackup.ContactData(cd.getContact(), + it.set(new ContactData(cd.getContact(), cd.getProperties(), shard)); updateBackup(txn, contactData); break; diff --git a/briar-core/src/main/java/org/briarproject/briar/socialbackup/recovery/RestoreAccountImpl.java b/briar-core/src/main/java/org/briarproject/briar/socialbackup/recovery/RestoreAccountImpl.java index 9c6db68de..fb39f7f42 100644 --- a/briar-core/src/main/java/org/briarproject/briar/socialbackup/recovery/RestoreAccountImpl.java +++ b/briar-core/src/main/java/org/briarproject/briar/socialbackup/recovery/RestoreAccountImpl.java @@ -61,7 +61,7 @@ public class RestoreAccountImpl implements RestoreAccount { public int recover() throws FormatException, GeneralSecurityException { if (secretKey == null) throw new GeneralSecurityException(); // Find backup with highest version number - int highestVersion = 0; + int highestVersion = -1; for (ReturnShardPayload returnShardPayload : recoveredShards) { BackupPayload backupPayload = returnShardPayload.getBackupPayload(); SocialBackup s = backupPayloadDecoder.decodeBackupPayload(secretKey, backupPayload);