diff --git a/briar-api/src/net/sf/briar/api/AuthorFactory.java b/briar-api/src/net/sf/briar/api/AuthorFactory.java
index f9c50ca838ad1dafed5246d5c900851d119698d5..5b881f9f5b5dfea627a7e8924a67ccb98dc2604b 100644
--- a/briar-api/src/net/sf/briar/api/AuthorFactory.java
+++ b/briar-api/src/net/sf/briar/api/AuthorFactory.java
@@ -5,4 +5,7 @@ import java.io.IOException;
 public interface AuthorFactory {
 
 	Author createAuthor(String name, byte[] publicKey) throws IOException;
+
+	LocalAuthor createLocalAuthor(String name, byte[] publicKey,
+			byte[] privateKey) throws IOException;
 }
diff --git a/briar-core/src/net/sf/briar/messaging/AuthorFactoryImpl.java b/briar-core/src/net/sf/briar/messaging/AuthorFactoryImpl.java
index 976094a1971d9861b6c0067ed20dd47f5f40a49a..67cfde1a17774c438376f9b074589f4a70461aa4 100644
--- a/briar-core/src/net/sf/briar/messaging/AuthorFactoryImpl.java
+++ b/briar-core/src/net/sf/briar/messaging/AuthorFactoryImpl.java
@@ -8,6 +8,7 @@ import java.io.IOException;
 import net.sf.briar.api.Author;
 import net.sf.briar.api.AuthorFactory;
 import net.sf.briar.api.AuthorId;
+import net.sf.briar.api.LocalAuthor;
 import net.sf.briar.api.crypto.CryptoComponent;
 import net.sf.briar.api.crypto.MessageDigest;
 import net.sf.briar.api.serial.Writer;
@@ -28,6 +29,16 @@ class AuthorFactoryImpl implements AuthorFactory {
 
 	public Author createAuthor(String name, byte[] publicKey)
 			throws IOException {
+		return new Author(getId(name, publicKey), name, publicKey);
+	}
+
+	public LocalAuthor createLocalAuthor(String name, byte[] publicKey,
+			byte[] privateKey) throws IOException {
+		return new LocalAuthor(getId(name, publicKey), name, publicKey,
+				privateKey);
+	}
+
+	private AuthorId getId(String name, byte[] publicKey) throws IOException {
 		ByteArrayOutputStream out = new ByteArrayOutputStream();
 		Writer w = writerFactory.createWriter(out);
 		w.writeStructId(AUTHOR);
@@ -35,7 +46,6 @@ class AuthorFactoryImpl implements AuthorFactory {
 		w.writeBytes(publicKey);
 		MessageDigest messageDigest = crypto.getMessageDigest();
 		messageDigest.update(out.toByteArray());
-		AuthorId id = new AuthorId(messageDigest.digest());
-		return new Author(id, name, publicKey);
+		return new AuthorId(messageDigest.digest());
 	}
 }