diff --git a/briar-api/src/main/java/org/briarproject/briar/api/remotewipe/RemoteWipeManager.java b/briar-api/src/main/java/org/briarproject/briar/api/remotewipe/RemoteWipeManager.java index 57c086ca5..fb60a2846 100644 --- a/briar-api/src/main/java/org/briarproject/briar/api/remotewipe/RemoteWipeManager.java +++ b/briar-api/src/main/java/org/briarproject/briar/api/remotewipe/RemoteWipeManager.java @@ -53,6 +53,8 @@ public interface RemoteWipeManager extends ConversationManager.ConversationClien void revoke(Transaction txn, ContactId contactId) throws DbException, FormatException; + void revokeAll(Transaction txn) throws DbException, FormatException; + boolean remoteWipeIsSetup(Transaction txn); List getWipers(Transaction txn) throws DbException; diff --git a/briar-core/src/main/java/org/briarproject/briar/remotewipe/RemoteWipeManagerImpl.java b/briar-core/src/main/java/org/briarproject/briar/remotewipe/RemoteWipeManagerImpl.java index 20744b065..f6eb11eba 100644 --- a/briar-core/src/main/java/org/briarproject/briar/remotewipe/RemoteWipeManagerImpl.java +++ b/briar-core/src/main/java/org/briarproject/briar/remotewipe/RemoteWipeManagerImpl.java @@ -400,9 +400,7 @@ public class RemoteWipeManagerImpl extends ConversationClientImpl BdfDictionary meta = clientHelper.getGroupMetadataAsDictionary(txn, localGroup.getId()); return meta.getBoolean(GROUP_KEY_AM_WIPER, false); - } catch (DbException e) { - return false; - } catch (FormatException e) { + } catch (DbException | FormatException e) { return false; } } @@ -434,6 +432,21 @@ public class RemoteWipeManagerImpl extends ConversationClientImpl } } + public void revokeAll(Transaction txn) throws DbException, FormatException { + List currentWipers = getWiperContactIds(txn); + for (ContactId c : currentWipers) { + sendRevokeMessage(txn, db.getContact(txn, c)); + } + + BdfList noWipers = new BdfList(); + BdfDictionary meta = new BdfDictionary(); + meta.put(GROUP_KEY_WIPERS, noWipers); + + if (!db.containsGroup(txn, localGroup.getId())) + db.addGroup(txn, localGroup); + clientHelper.mergeGroupMetadata(txn, localGroup.getId(), meta); + } + @Override public Group getContactGroup(Contact c) { return contactGroupFactory.createContactGroup(CLIENT_ID,