Implement message validator for handshake key exchange

This commit is contained in:
ameba23
2021-06-29 09:48:19 +02:00
parent b860e73bdc
commit eb66a13ded
3 changed files with 43 additions and 7 deletions

View File

@@ -83,14 +83,21 @@ public class HandshakeKeyExchangeManagerImpl extends ConversationClientImpl
@Override
public void onDatabaseOpened(Transaction txn) throws DbException {
if (db.containsGroup(txn, localGroup.getId())) return;
db.addGroup(txn, localGroup);
// Get our own handshake public key
handshakePublicKey = identityManager.getHandshakeKeys(txn).getPublic();
// Set things up for any pre-existing contacts
for (Contact c : db.getContacts(txn)) addingContact(txn, c);
if (!db.containsGroup(txn, localGroup.getId())) {
db.addGroup(txn, localGroup);
// Set things up for any pre-existing contacts
for (Contact c : db.getContacts(txn)) addingContact(txn, c);
} else {
for (Contact c : db.getContacts(txn)) {
if (c.getHandshakePublicKey() == null) {
sendHandshakePublicKey(txn, c);
}
}
}
}
@Override
@@ -192,7 +199,7 @@ public class HandshakeKeyExchangeManagerImpl extends ConversationClientImpl
private void sendHandshakePublicKey(Transaction txn, Contact c)
throws DbException {
LOG.info("Sending our handshake public key to " + c.getAlias());
LOG.info("Sending our handshake public key to " + c.getAuthor().getName());
Group group = getContactGroup(c);
GroupId g = group.getId();
if (!db.containsGroup(txn, g)) db.addGroup(txn, group);

View File

@@ -1,8 +1,11 @@
package org.briarproject.briar.handshakekeyexchange;
import org.briarproject.bramble.api.client.ClientHelper;
import org.briarproject.bramble.api.contact.ContactManager;
import org.briarproject.bramble.api.data.MetadataEncoder;
import org.briarproject.bramble.api.lifecycle.LifecycleManager;
import org.briarproject.bramble.api.sync.validation.ValidationManager;
import org.briarproject.bramble.api.system.Clock;
import org.briarproject.bramble.api.versioning.ClientVersioningManager;
import org.briarproject.briar.api.conversation.ConversationManager;
import org.briarproject.briar.api.handshakekeyexchange.HandshakeKeyExchangeManager;
@@ -18,6 +21,9 @@ public class HandshakeKeyExchangeModule {
public static class EagerSingletons {
@Inject
HandshakeKeyExchangeManager handshakeKeyExchangeManager;
@Inject
HandshakeKeyExchangeValidator handshakeKeyExchangeValidator;
}
@Provides
@@ -41,4 +47,18 @@ public class HandshakeKeyExchangeModule {
conversationManager.registerConversationClient(handshakeKeyExchangeManager);
return handshakeKeyExchangeManager;
}
@Provides
@Singleton
HandshakeKeyExchangeValidator handshakeKeyExchangeValidator(
ValidationManager validationManager,
ClientHelper clientHelper,
MetadataEncoder metadataEncoder,
Clock clock) {
HandshakeKeyExchangeValidator validator =
new HandshakeKeyExchangeValidator(clientHelper, metadataEncoder, clock);
validationManager.registerMessageValidator(HandshakeKeyExchangeManager.CLIENT_ID, HandshakeKeyExchangeManager.MAJOR_VERSION,
validator);
return validator;
}
}

View File

@@ -4,12 +4,17 @@ import org.briarproject.bramble.api.FormatException;
import org.briarproject.bramble.api.client.BdfMessageContext;
import org.briarproject.bramble.api.client.BdfMessageValidator;
import org.briarproject.bramble.api.client.ClientHelper;
import org.briarproject.bramble.api.data.BdfDictionary;
import org.briarproject.bramble.api.data.BdfEntry;
import org.briarproject.bramble.api.data.BdfList;
import org.briarproject.bramble.api.data.MetadataEncoder;
import org.briarproject.bramble.api.sync.Group;
import org.briarproject.bramble.api.sync.InvalidMessageException;
import org.briarproject.bramble.api.sync.Message;
import org.briarproject.bramble.api.system.Clock;
import static org.briarproject.briar.handshakekeyexchange.HandshakeKeyExchangeConstants.MSG_KEY_LOCAL;
import static org.briarproject.bramble.util.ValidationUtils.checkSize;
import javax.inject.Inject;
@@ -26,6 +31,10 @@ public class HandshakeKeyExchangeValidator extends BdfMessageValidator {
@Override
protected BdfMessageContext validateMessage(Message m, Group g,
BdfList body) throws InvalidMessageException, FormatException {
return null;
checkSize(body,1);
BdfDictionary meta = BdfDictionary.of(
new BdfEntry(MSG_KEY_LOCAL, false)
);
return new BdfMessageContext(meta);
}
}