diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/identity/AuthorInfo.java b/bramble-api/src/main/java/org/briarproject/bramble/api/identity/AuthorInfo.java
index a93b414052b58128ef4f0d98667a9f8116de6616..8c90d9aff05e6003c2a30b87d0a1bac37c6ab6f8 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/identity/AuthorInfo.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/identity/AuthorInfo.java
@@ -35,4 +35,18 @@ public class AuthorInfo {
 		return alias;
 	}
 
+	@Override
+	public int hashCode() {
+		int hashCode = status.ordinal();
+		if (alias != null) hashCode += alias.hashCode();
+		return hashCode;
+	}
+
+	@Override
+	public boolean equals(Object o) {
+		if (!(o instanceof AuthorInfo)) return false;
+		AuthorInfo info = (AuthorInfo) o;
+		return status == info.status &&
+				(alias == null ? info.alias == null : alias.equals(info.alias));
+	}
 }
diff --git a/bramble-api/src/test/java/org/briarproject/bramble/api/identity/AuthorInfoTest.java b/bramble-api/src/test/java/org/briarproject/bramble/api/identity/AuthorInfoTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..9c059c84ec47ad08ffbc3c545488a92f7df1ee02
--- /dev/null
+++ b/bramble-api/src/test/java/org/briarproject/bramble/api/identity/AuthorInfoTest.java
@@ -0,0 +1,42 @@
+package org.briarproject.bramble.api.identity;
+
+import org.briarproject.bramble.test.BrambleTestCase;
+import org.junit.Test;
+
+import static org.briarproject.bramble.api.identity.AuthorInfo.Status.NONE;
+import static org.briarproject.bramble.api.identity.AuthorInfo.Status.VERIFIED;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotEquals;
+
+public class AuthorInfoTest extends BrambleTestCase {
+
+	@Test
+	public void testEquals() {
+		assertEquals(
+				new AuthorInfo(NONE),
+				new AuthorInfo(NONE, null)
+		);
+		assertEquals(
+				new AuthorInfo(NONE, "test"),
+				new AuthorInfo(NONE, "test")
+		);
+
+		assertNotEquals(
+				new AuthorInfo(NONE),
+				new AuthorInfo(VERIFIED)
+		);
+		assertNotEquals(
+				new AuthorInfo(NONE, "test"),
+				new AuthorInfo(NONE)
+		);
+		assertNotEquals(
+				new AuthorInfo(NONE),
+				new AuthorInfo(NONE, "test")
+		);
+		assertNotEquals(
+				new AuthorInfo(NONE, "a"),
+				new AuthorInfo(NONE, "b")
+		);
+	}
+
+}