From 1697c2af0449718f0940e5fdbea4ebdce6390cbf Mon Sep 17 00:00:00 2001
From: Torsten Grote <t@grobox.de>
Date: Fri, 18 Nov 2016 12:27:47 -0200
Subject: [PATCH] Remove Device ID

---
 .../src/org/briarproject/api/DeviceId.java    | 16 ------------
 .../api/db/DatabaseComponent.java             |  8 ------
 .../src/org/briarproject/db/Database.java     |  8 ------
 .../db/DatabaseComponentImpl.java             |  7 ------
 .../briarproject/db/DatabaseConstants.java    | 11 --------
 .../org/briarproject/db/DatabaseModule.java   |  6 ++---
 .../src/org/briarproject/db/H2Database.java   |  5 ++--
 .../src/org/briarproject/db/JdbcDatabase.java | 25 +------------------
 .../org/briarproject/db/H2DatabaseTest.java   |  2 +-
 9 files changed, 6 insertions(+), 82 deletions(-)
 delete mode 100644 briar-api/src/org/briarproject/api/DeviceId.java

diff --git a/briar-api/src/org/briarproject/api/DeviceId.java b/briar-api/src/org/briarproject/api/DeviceId.java
deleted file mode 100644
index e6501f41c5..0000000000
--- a/briar-api/src/org/briarproject/api/DeviceId.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package org.briarproject.api;
-
-/**
- * Type-safe wrapper for a byte array that uniquely identifies a device.
- */
-public class DeviceId extends UniqueId {
-
-	public DeviceId(byte[] id) {
-		super(id);
-	}
-
-	@Override
-	public boolean equals(Object o) {
-		return o instanceof DeviceId && super.equals(o);
-	}
-}
diff --git a/briar-api/src/org/briarproject/api/db/DatabaseComponent.java b/briar-api/src/org/briarproject/api/db/DatabaseComponent.java
index 96ec6f17d3..d2a0b28210 100644
--- a/briar-api/src/org/briarproject/api/db/DatabaseComponent.java
+++ b/briar-api/src/org/briarproject/api/db/DatabaseComponent.java
@@ -1,6 +1,5 @@
 package org.briarproject.api.db;
 
-import org.briarproject.api.DeviceId;
 import org.briarproject.api.TransportId;
 import org.briarproject.api.contact.Contact;
 import org.briarproject.api.contact.ContactId;
@@ -205,13 +204,6 @@ public interface DatabaseComponent {
 	Collection<ContactId> getContacts(Transaction txn, AuthorId a)
 			throws DbException;
 
-	/**
-	 * Returns the unique ID for this device.
-	 * <p/>
-	 * Read-only.
-	 */
-	DeviceId getDeviceId(Transaction txn) throws DbException;
-
 	/**
 	 * Returns the group with the given ID.
 	 * <p/>
diff --git a/briar-core/src/org/briarproject/db/Database.java b/briar-core/src/org/briarproject/db/Database.java
index 1eb5c484d5..0d2327200d 100644
--- a/briar-core/src/org/briarproject/db/Database.java
+++ b/briar-core/src/org/briarproject/db/Database.java
@@ -1,6 +1,5 @@
 package org.briarproject.db;
 
-import org.briarproject.api.DeviceId;
 import org.briarproject.api.TransportId;
 import org.briarproject.api.contact.Contact;
 import org.briarproject.api.contact.ContactId;
@@ -227,13 +226,6 @@ interface Database<T> {
 	 */
 	Collection<ContactId> getContacts(T txn, AuthorId a) throws DbException;
 
-	/**
-	 * Returns the unique ID for this device.
-	 * <p/>
-	 * Read-only.
-	 */
-	DeviceId getDeviceId(T txn) throws DbException;
-
 	/**
 	 * Returns the amount of free storage space available to the database, in
 	 * bytes. This is based on the minimum of the space available on the device
diff --git a/briar-core/src/org/briarproject/db/DatabaseComponentImpl.java b/briar-core/src/org/briarproject/db/DatabaseComponentImpl.java
index bac6f84ad0..e09ed8f2c4 100644
--- a/briar-core/src/org/briarproject/db/DatabaseComponentImpl.java
+++ b/briar-core/src/org/briarproject/db/DatabaseComponentImpl.java
@@ -1,6 +1,5 @@
 package org.briarproject.db;
 
-import org.briarproject.api.DeviceId;
 import org.briarproject.api.TransportId;
 import org.briarproject.api.contact.Contact;
 import org.briarproject.api.contact.ContactId;
@@ -414,12 +413,6 @@ class DatabaseComponentImpl<T> implements DatabaseComponent {
 		return db.getContacts(txn, a);
 	}
 
-	@Override
-	public DeviceId getDeviceId(Transaction transaction) throws DbException {
-		T txn = unbox(transaction);
-		return db.getDeviceId(txn);
-	}
-
 	@Override
 	public Group getGroup(Transaction transaction, GroupId g)
 			throws DbException {
diff --git a/briar-core/src/org/briarproject/db/DatabaseConstants.java b/briar-core/src/org/briarproject/db/DatabaseConstants.java
index ddeb138dbc..68e3ca1ef3 100644
--- a/briar-core/src/org/briarproject/db/DatabaseConstants.java
+++ b/briar-core/src/org/briarproject/db/DatabaseConstants.java
@@ -29,15 +29,4 @@ interface DatabaseConstants {
 	 */
 	String MIN_SCHEMA_VERSION_KEY = "minSchemaVersion";
 
-	/**
-	 * The namespace of the {@link Settings Settings}
-	 * where the unique device ID is stored.
-	 */
-	String DEVICE_SETTINGS_NAMESPACE = "device";
-
-	/**
-	 * The {@link Settings Settings} key under which the
-	 * unique device ID is stored.
-	 */
-	String DEVICE_ID_KEY = "deviceId";
 }
diff --git a/briar-core/src/org/briarproject/db/DatabaseModule.java b/briar-core/src/org/briarproject/db/DatabaseModule.java
index d7a4b123ed..39b1e49dbe 100644
--- a/briar-core/src/org/briarproject/db/DatabaseModule.java
+++ b/briar-core/src/org/briarproject/db/DatabaseModule.java
@@ -6,7 +6,6 @@ import org.briarproject.api.event.EventBus;
 import org.briarproject.api.lifecycle.ShutdownManager;
 import org.briarproject.api.system.Clock;
 
-import java.security.SecureRandom;
 import java.sql.Connection;
 
 import javax.inject.Singleton;
@@ -19,9 +18,8 @@ public class DatabaseModule {
 
 	@Provides
 	@Singleton
-	Database<Connection> provideDatabase(DatabaseConfig config,
-			SecureRandom random, Clock clock) {
-		return new H2Database(config, random, clock);
+	Database<Connection> provideDatabase(DatabaseConfig config, Clock clock) {
+		return new H2Database(config, clock);
 	}
 
 	@Provides
diff --git a/briar-core/src/org/briarproject/db/H2Database.java b/briar-core/src/org/briarproject/db/H2Database.java
index 5c062120d4..27099f15ba 100644
--- a/briar-core/src/org/briarproject/db/H2Database.java
+++ b/briar-core/src/org/briarproject/db/H2Database.java
@@ -6,7 +6,6 @@ import org.briarproject.api.system.Clock;
 import org.briarproject.util.StringUtils;
 
 import java.io.File;
-import java.security.SecureRandom;
 import java.sql.Connection;
 import java.sql.DriverManager;
 import java.sql.SQLException;
@@ -26,8 +25,8 @@ class H2Database extends JdbcDatabase {
 	private final String url;
 
 	@Inject
-	H2Database(DatabaseConfig config, SecureRandom random, Clock clock) {
-		super(HASH_TYPE, BINARY_TYPE, COUNTER_TYPE, SECRET_TYPE, random, clock);
+	H2Database(DatabaseConfig config, Clock clock) {
+		super(HASH_TYPE, BINARY_TYPE, COUNTER_TYPE, SECRET_TYPE, clock);
 		this.config = config;
 		File dir = config.getDatabaseDirectory();
 		String path = new File(dir, "db").getAbsolutePath();
diff --git a/briar-core/src/org/briarproject/db/JdbcDatabase.java b/briar-core/src/org/briarproject/db/JdbcDatabase.java
index cce35cacad..4131ec9f4e 100644
--- a/briar-core/src/org/briarproject/db/JdbcDatabase.java
+++ b/briar-core/src/org/briarproject/db/JdbcDatabase.java
@@ -1,8 +1,6 @@
 package org.briarproject.db;
 
-import org.briarproject.api.DeviceId;
 import org.briarproject.api.TransportId;
-import org.briarproject.api.UniqueId;
 import org.briarproject.api.contact.Contact;
 import org.briarproject.api.contact.ContactId;
 import org.briarproject.api.crypto.SecretKey;
@@ -25,10 +23,8 @@ import org.briarproject.api.system.Clock;
 import org.briarproject.api.transport.IncomingKeys;
 import org.briarproject.api.transport.OutgoingKeys;
 import org.briarproject.api.transport.TransportKeys;
-import org.briarproject.util.StringUtils;
 import org.jetbrains.annotations.Nullable;
 
-import java.security.SecureRandom;
 import java.sql.Connection;
 import java.sql.PreparedStatement;
 import java.sql.ResultSet;
@@ -59,8 +55,6 @@ import static org.briarproject.api.sync.ValidationManager.State.INVALID;
 import static org.briarproject.api.sync.ValidationManager.State.PENDING;
 import static org.briarproject.api.sync.ValidationManager.State.UNKNOWN;
 import static org.briarproject.db.DatabaseConstants.DB_SETTINGS_NAMESPACE;
-import static org.briarproject.db.DatabaseConstants.DEVICE_ID_KEY;
-import static org.briarproject.db.DatabaseConstants.DEVICE_SETTINGS_NAMESPACE;
 import static org.briarproject.db.DatabaseConstants.MIN_SCHEMA_VERSION_KEY;
 import static org.briarproject.db.DatabaseConstants.SCHEMA_VERSION_KEY;
 import static org.briarproject.db.ExponentialBackoff.calculateExpiry;
@@ -240,7 +234,6 @@ abstract class JdbcDatabase implements Database<Connection> {
 
 	// Different database libraries use different names for certain types
 	private final String hashType, binaryType, counterType, secretType;
-	private final SecureRandom random;
 	private final Clock clock;
 
 	private final LinkedList<Connection> connections =
@@ -255,12 +248,11 @@ abstract class JdbcDatabase implements Database<Connection> {
 	private final Condition connectionsChanged = connectionsLock.newCondition();
 
 	JdbcDatabase(String hashType, String binaryType, String counterType,
-			String secretType, SecureRandom random, Clock clock) {
+			String secretType, Clock clock) {
 		this.hashType = hashType;
 		this.binaryType = binaryType;
 		this.counterType = counterType;
 		this.secretType = secretType;
-		this.random = random;
 		this.clock = clock;
 	}
 
@@ -279,7 +271,6 @@ abstract class JdbcDatabase implements Database<Connection> {
 			} else {
 				createTables(txn);
 				storeSchemaVersion(txn);
-				storeDeviceId(txn);
 			}
 			commitTransaction(txn);
 		} catch (DbException e) {
@@ -304,14 +295,6 @@ abstract class JdbcDatabase implements Database<Connection> {
 		mergeSettings(txn, s, DB_SETTINGS_NAMESPACE);
 	}
 
-	private void storeDeviceId(Connection txn) throws DbException {
-		byte[] deviceId = new byte[UniqueId.LENGTH];
-		random.nextBytes(deviceId);
-		Settings s = new Settings();
-		s.put(DEVICE_ID_KEY, StringUtils.toHexString(deviceId));
-		mergeSettings(txn, s, DEVICE_SETTINGS_NAMESPACE);
-	}
-
 	private void tryToClose(ResultSet rs) {
 		try {
 			if (rs != null) rs.close();
@@ -463,12 +446,6 @@ abstract class JdbcDatabase implements Database<Connection> {
 		if (interrupted) Thread.currentThread().interrupt();
 	}
 
-	@Override
-	public DeviceId getDeviceId(Connection txn) throws DbException {
-		Settings s = getSettings(txn, DEVICE_SETTINGS_NAMESPACE);
-		return new DeviceId(StringUtils.fromHexString(s.get(DEVICE_ID_KEY)));
-	}
-
 	@Override
 	public ContactId addContact(Connection txn, Author remote, AuthorId local,
 			boolean verified, boolean active) throws DbException {
diff --git a/briar-tests/src/org/briarproject/db/H2DatabaseTest.java b/briar-tests/src/org/briarproject/db/H2DatabaseTest.java
index 0b092c3d9a..5f1270265b 100644
--- a/briar-tests/src/org/briarproject/db/H2DatabaseTest.java
+++ b/briar-tests/src/org/briarproject/db/H2DatabaseTest.java
@@ -1658,7 +1658,7 @@ public class H2DatabaseTest extends BriarTestCase {
 
 	private Database<Connection> open(boolean resume) throws Exception {
 		Database<Connection> db = new H2Database(new TestDatabaseConfig(testDir,
-				MAX_SIZE), new SecureRandom(), new SystemClock());
+				MAX_SIZE), new SystemClock());
 		if (!resume) TestUtils.deleteTestDirectory(testDir);
 		db.open();
 		return db;
-- 
GitLab