diff --git a/briar-android/src/net/sf/briar/android/HomeScreenActivity.java b/briar-android/src/net/sf/briar/android/HomeScreenActivity.java
index f33052720509bf02f224ede0e71f26f5385b37e8..4f13b65fc2a371d2a7e80bc0468deb9dad3be32f 100644
--- a/briar-android/src/net/sf/briar/android/HomeScreenActivity.java
+++ b/briar-android/src/net/sf/briar/android/HomeScreenActivity.java
@@ -5,6 +5,7 @@ import static android.view.ViewGroup.LayoutParams.MATCH_PARENT;
 import static java.util.logging.Level.INFO;
 import static java.util.logging.Level.WARNING;
 import static net.sf.briar.android.widgets.CommonLayoutParams.MATCH_MATCH;
+import static net.sf.briar.api.messaging.Rating.GOOD;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -123,6 +124,7 @@ public class HomeScreenActivity extends BriarActivity {
 					serviceConnection.waitForStartup();
 					long now = System.currentTimeMillis();
 					db.addLocalAuthor(a);
+					db.setRating(a.getId(), GOOD);
 					long duration = System.currentTimeMillis() - now;
 					if(LOG.isLoggable(INFO))
 						LOG.info("Storing author took " + duration + " ms");
diff --git a/briar-android/src/net/sf/briar/android/identity/CreateIdentityActivity.java b/briar-android/src/net/sf/briar/android/identity/CreateIdentityActivity.java
index a600f954892bf56a86d81dd1141c13d2a9a626a8..d91a2f95247d34be31d35baa3530498d3e4a128b 100644
--- a/briar-android/src/net/sf/briar/android/identity/CreateIdentityActivity.java
+++ b/briar-android/src/net/sf/briar/android/identity/CreateIdentityActivity.java
@@ -12,6 +12,7 @@ import static java.util.logging.Level.INFO;
 import static java.util.logging.Level.WARNING;
 import static net.sf.briar.android.widgets.CommonLayoutParams.MATCH_MATCH;
 import static net.sf.briar.android.widgets.CommonLayoutParams.WRAP_WRAP;
+import static net.sf.briar.api.messaging.Rating.GOOD;
 
 import java.io.IOException;
 import java.security.KeyPair;
@@ -157,6 +158,7 @@ implements OnEditorActionListener, OnClickListener {
 					serviceConnection.waitForStartup();
 					long now = System.currentTimeMillis();
 					db.addLocalAuthor(a);
+					db.setRating(a.getId(), GOOD);
 					long duration = System.currentTimeMillis() - now;
 					if(LOG.isLoggable(INFO))
 						LOG.info("Storing author took " + duration + " ms");
diff --git a/briar-core/src/net/sf/briar/invitation/Connector.java b/briar-core/src/net/sf/briar/invitation/Connector.java
index c9592538ab8f93dbbd59a8bd38a64bde0be68816..e938f6f0cda5fa14a8cc50bd434a8efc01fb3701 100644
--- a/briar-core/src/net/sf/briar/invitation/Connector.java
+++ b/briar-core/src/net/sf/briar/invitation/Connector.java
@@ -9,6 +9,7 @@ import static net.sf.briar.api.TransportPropertyConstants.MAX_PROPERTIES_PER_TRA
 import static net.sf.briar.api.TransportPropertyConstants.MAX_PROPERTY_LENGTH;
 import static net.sf.briar.api.invitation.InvitationConstants.CONNECTION_TIMEOUT;
 import static net.sf.briar.api.invitation.InvitationConstants.HASH_LENGTH;
+import static net.sf.briar.api.messaging.Rating.GOOD;
 
 import java.io.IOException;
 import java.security.GeneralSecurityException;
@@ -275,13 +276,15 @@ abstract class Connector extends Thread {
 			long epoch, boolean alice) throws DbException {
 		// Add the contact to the database
 		ContactId c = db.addContact(remoteAuthor, localAuthor.getId());
+		// Add a positive rating for the contact's pseudonym
+		db.setRating(remoteAuthor.getId(), GOOD);
 		// Store the remote transport properties
 		db.setRemoteProperties(c, remoteProps);
 		// Create an endpoint for each transport shared with the contact
 		List<TransportId> ids = new ArrayList<TransportId>();
 		for(TransportId id : localProps.keySet())
 			if(remoteProps.containsKey(id)) ids.add(id);
-		// Assign indices to the transports in a deterministic way
+		// Assign indices to the transports deterministically and derive keys
 		Collections.sort(ids, TransportIdComparator.INSTANCE);
 		int size = ids.size();
 		for(int i = 0; i < size; i++) {