Skip to content
Snippets Groups Projects
Commit c3b44338 authored by bontric's avatar bontric
Browse files

Add mailbox_contact type and initialisation for mailbox contacts

parent e3fdb7c3
No related branches found
No related tags found
No related merge requests found
......@@ -22,6 +22,9 @@ public interface ContactFactory {
case CONTACT_MAILBOX:
return new ContactMailbox(c, author, localAuthorId, verified,
active);
case MAILBOX_CONTACT:
return new MailboxContact(c, author, localAuthorId, verified,
active);
default:
throw new IllegalArgumentException("Unknown contact type");
}
......
......@@ -49,6 +49,10 @@ public interface ContactManager {
long timestamp, boolean alice, boolean verified, boolean active)
throws DbException;
ContactId addMailboxContact(Transaction txn, Author remote, AuthorId local,
boolean verified, boolean active)
throws DbException;
ContactId addPrivateMailbox(Author remote, AuthorId local, SecretKey master,
long timestamp, boolean alice)
throws DbException;
......
package org.briarproject.bramble.api.contact;
import org.briarproject.bramble.api.identity.Author;
import org.briarproject.bramble.api.identity.AuthorId;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
import javax.annotation.concurrent.Immutable;
import static org.briarproject.bramble.api.contact.ContactType.CONTACT_MAILBOX;
import static org.briarproject.bramble.api.contact.ContactType.MAILBOX_CONTACT;
@Immutable
@NotNullByDefault
public class MailboxContact extends Contact {
public MailboxContact(ContactId id,
Author author,
AuthorId localAuthorId,
boolean verified, boolean active) {
super(id, author, localAuthorId, verified, active);
}
@Override
public ContactType getType() {
return MAILBOX_CONTACT;
}
}
......@@ -25,6 +25,7 @@ import javax.inject.Inject;
import static org.briarproject.bramble.api.contact.ContactType.CONTACT;
import static org.briarproject.bramble.api.contact.ContactType.CONTACT_MAILBOX;
import static org.briarproject.bramble.api.contact.ContactType.MAILBOX_CONTACT;
import static org.briarproject.bramble.api.contact.ContactType.MAILBOX_OWNER;
import static org.briarproject.bramble.api.contact.ContactType.PRIVATE_MAILBOX;
......@@ -92,6 +93,20 @@ class ContactManagerImpl implements ContactManager {
return c;
}
@Override
public ContactId addMailboxContact(Transaction txn, Author remote, AuthorId local,
boolean verified, boolean active)
throws DbException {
ContactId c = db.addContact(txn, remote, local, verified, active,
MAILBOX_CONTACT);
Contact contact = db.getContact(txn, c);
for (ContactHook hook : hooks) {
if (hook.getApplicableContactTypes().contains(contact.getType()))
hook.addingContact(txn, contact);
}
return c;
}
@Override
public ContactId addPrivateMailbox(Author remote, AuthorId local,
SecretKey master,
......
......@@ -218,7 +218,7 @@ class MailboxProtocolEngine extends AbstractProtocolEngine<MailboxSession> {
crypto.sign(aliceMacKey, localAuthor.getPrivateKey());
contactManager
.addContact(txn, s.getRemote().author, localAuthor.getId(),
.addMailboxContact(txn, s.getRemote().author, localAuthor.getId(),
false, true);
// Only add transport properties and keys when the contact was added
// This will be changed once we have a way to reset state for peers
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment