From 4b9c3a1a96eb82e84f6bb7d161c0d5046ee831c9 Mon Sep 17 00:00:00 2001 From: ameba23 Date: Tue, 29 Jun 2021 11:43:14 +0200 Subject: [PATCH] Call KeyManager#AddContact when restoring contacts --- .../briarproject/bramble/api/contact/ContactManager.java | 9 ++++++--- .../briarproject/bramble/contact/ContactManagerImpl.java | 5 ++++- .../HandshakeKeyExchangeManagerImpl.java | 4 ++++ .../briar/socialbackup/recovery/RestoreAccountImpl.java | 3 +++ 4 files changed, 17 insertions(+), 4 deletions(-) diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/contact/ContactManager.java b/bramble-api/src/main/java/org/briarproject/bramble/api/contact/ContactManager.java index ccd459169..1cb466993 100644 --- a/bramble-api/src/main/java/org/briarproject/bramble/api/contact/ContactManager.java +++ b/bramble-api/src/main/java/org/briarproject/bramble/api/contact/ContactManager.java @@ -50,7 +50,8 @@ public interface ContactManager { boolean active) throws DbException; ContactId addContact(Transaction txn, Author remote, AuthorId local, - PublicKey handshake, boolean verified) throws DbException; + PublicKey handshake, boolean verified) + throws DbException, GeneralSecurityException; /** * Stores a contact associated with the given local and remote pseudonyms, @@ -212,12 +213,14 @@ public interface ContactManager { /** * Sets the contact's handshake public key */ - void setHandshakePublicKey(Transaction txn, ContactId c, PublicKey handshakePublicKey) throws DbException; + void setHandshakePublicKey(Transaction txn, ContactId c, + PublicKey handshakePublicKey) throws DbException; /** * Sets the contact's handshake public key */ - void setHandshakePublicKey(ContactId c, PublicKey handshakePublicKey) throws DbException; + void setHandshakePublicKey(ContactId c, PublicKey handshakePublicKey) + throws DbException; /** * Returns true if a contact with this {@code remoteAuthorId} belongs to diff --git a/bramble-core/src/main/java/org/briarproject/bramble/contact/ContactManagerImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/contact/ContactManagerImpl.java index 6ec0ebdfd..a95b761b6 100644 --- a/bramble-core/src/main/java/org/briarproject/bramble/contact/ContactManagerImpl.java +++ b/bramble-core/src/main/java/org/briarproject/bramble/contact/ContactManagerImpl.java @@ -122,9 +122,12 @@ class ContactManagerImpl implements ContactManager, EventListener { @Override public ContactId addContact(Transaction txn, Author remote, AuthorId local, - PublicKey handshake, boolean verified) throws DbException { + PublicKey handshake, boolean verified) + throws DbException, GeneralSecurityException { ContactId c = db.addContact(txn, remote, local, handshake, verified); Contact contact = db.getContact(txn, c); + KeyPair ourKeyPair = identityManager.getHandshakeKeys(txn); + keyManager.addContact(txn, c, handshake, ourKeyPair); for (ContactHook hook : hooks) hook.addingContact(txn, contact); return c; } diff --git a/briar-core/src/main/java/org/briarproject/briar/handshakekeyexchange/HandshakeKeyExchangeManagerImpl.java b/briar-core/src/main/java/org/briarproject/briar/handshakekeyexchange/HandshakeKeyExchangeManagerImpl.java index cd7bf4380..dd5bfd6b2 100644 --- a/briar-core/src/main/java/org/briarproject/briar/handshakekeyexchange/HandshakeKeyExchangeManagerImpl.java +++ b/briar-core/src/main/java/org/briarproject/briar/handshakekeyexchange/HandshakeKeyExchangeManagerImpl.java @@ -95,6 +95,8 @@ public class HandshakeKeyExchangeManagerImpl extends ConversationClientImpl for (Contact c : db.getContacts(txn)) { if (c.getHandshakePublicKey() == null) { sendHandshakePublicKey(txn, c); + } else { + LOG.info("Have pk for contact " + c.getAuthor().getName()); } } } @@ -194,6 +196,8 @@ public class HandshakeKeyExchangeManagerImpl extends ConversationClientImpl if (c.getHandshakePublicKey() == null) { sendHandshakePublicKey(txn, c); + } else { + LOG.info("Have pk for contact " + c.getAuthor().getName()); } } diff --git a/briar-core/src/main/java/org/briarproject/briar/socialbackup/recovery/RestoreAccountImpl.java b/briar-core/src/main/java/org/briarproject/briar/socialbackup/recovery/RestoreAccountImpl.java index 50a05af35..1e91ede33 100644 --- a/briar-core/src/main/java/org/briarproject/briar/socialbackup/recovery/RestoreAccountImpl.java +++ b/briar-core/src/main/java/org/briarproject/briar/socialbackup/recovery/RestoreAccountImpl.java @@ -184,6 +184,9 @@ public class RestoreAccountImpl implements RestoreAccount { } catch (DbException e) { LOG.warning("Error adding contacts to database"); LOG.warning(e.getMessage()); + } catch (GeneralSecurityException e) { + LOG.warning("Error adding handshake key"); + LOG.warning(e.getMessage()); } LOG.info("Added all contacts"); }