From 62f25d9ae9d169c7b2ca943aa019edaefa2b4c58 Mon Sep 17 00:00:00 2001 From: r3dh3ck Date: Mon, 22 Jul 2024 17:53:04 +0000 Subject: [PATCH] Strip a biometric slot when a backup is made --- .../aegis/vault/slots/SlotList.java | 15 +++++----- .../aegis/vault/slots/SlotTest.java | 28 +++++++++---------- 2 files changed, 20 insertions(+), 23 deletions(-) diff --git a/app/src/main/java/com/beemdevelopment/aegis/vault/slots/SlotList.java b/app/src/main/java/com/beemdevelopment/aegis/vault/slots/SlotList.java index 99037c52..f479b593 100644 --- a/app/src/main/java/com/beemdevelopment/aegis/vault/slots/SlotList.java +++ b/app/src/main/java/com/beemdevelopment/aegis/vault/slots/SlotList.java @@ -75,6 +75,7 @@ public class SlotList extends UUIDMap { /** * Returns a copy of this SlotList that is suitable for exporting. + * Strips biometric slots. * In case there's a backup password slot, any regular password slots are stripped. */ public SlotList exportable() { @@ -85,18 +86,16 @@ public class SlotList extends UUIDMap { break; } } - - if (!hasBackupSlots) { - return this; - } - SlotList slots = new SlotList(); for (Slot slot : this) { - if (!(slot instanceof PasswordSlot) || ((PasswordSlot) slot).isBackup()) { - slots.add(slot); + if (slot instanceof BiometricSlot) { + continue; } + if (hasBackupSlots && slot instanceof PasswordSlot && !((PasswordSlot) slot).isBackup()) { + continue; + } + slots.add(slot); } - return slots; } } diff --git a/app/src/test/java/com/beemdevelopment/aegis/vault/slots/SlotTest.java b/app/src/test/java/com/beemdevelopment/aegis/vault/slots/SlotTest.java index 345c8f1d..dbee9f54 100644 --- a/app/src/test/java/com/beemdevelopment/aegis/vault/slots/SlotTest.java +++ b/app/src/test/java/com/beemdevelopment/aegis/vault/slots/SlotTest.java @@ -1,7 +1,6 @@ package com.beemdevelopment.aegis.vault.slots; import static org.junit.Assert.assertArrayEquals; -import static org.junit.Assert.assertNotEquals; import static org.junit.Assert.assertThrows; import com.beemdevelopment.aegis.crypto.CryptoUtils; @@ -96,22 +95,21 @@ public class SlotTest { } @Test - public void testPasswordSlotExclusion() { - SlotList slots = new SlotList(); - PasswordSlot passSlot = new PasswordSlot(); - PasswordSlot passSlot2 = new PasswordSlot(); - slots.add(passSlot); - slots.add(passSlot2); - - assertArrayEquals(slots.getValues().toArray(), slots.exportable().getValues().toArray()); - - SlotList backupSlots = new SlotList(); + public void testNonExportableSlotsExclusion() { + Slot rawSlot = new RawSlot(); + Slot passwordSlot = new PasswordSlot(); + Slot biometricSlot = new BiometricSlot(); PasswordSlot backupSlot = new PasswordSlot(); backupSlot.setIsBackup(true); + SlotList slots = new SlotList(); + slots.add(rawSlot); + slots.add(passwordSlot); + slots.add(biometricSlot); slots.add(backupSlot); - backupSlots.add(backupSlot); - - assertArrayEquals(backupSlots.getValues().toArray(), slots.exportable().getValues().toArray()); - assertNotEquals(slots.getValues().toArray(), slots.exportable().getValues().toArray()); + SlotList actual = slots.exportable(); + SlotList expected = new SlotList(); + expected.add(rawSlot); + expected.add(backupSlot); + assertArrayEquals(expected.getValues().toArray(), actual.getValues().toArray()); } }