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()); } }