mirror of
https://code.briarproject.org/briar/briar.git
synced 2026-02-12 18:59:06 +01:00
Implement message validator for handshake key exchange
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user