mirror of
https://code.briarproject.org/briar/briar.git
synced 2026-02-19 06:09:55 +01:00
Implement message validator for handshake key exchange
This commit is contained in:
@@ -83,14 +83,21 @@ public class HandshakeKeyExchangeManagerImpl extends ConversationClientImpl
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onDatabaseOpened(Transaction txn) throws DbException {
|
public void onDatabaseOpened(Transaction txn) throws DbException {
|
||||||
if (db.containsGroup(txn, localGroup.getId())) return;
|
|
||||||
db.addGroup(txn, localGroup);
|
|
||||||
|
|
||||||
// Get our own handshake public key
|
// Get our own handshake public key
|
||||||
handshakePublicKey = identityManager.getHandshakeKeys(txn).getPublic();
|
handshakePublicKey = identityManager.getHandshakeKeys(txn).getPublic();
|
||||||
|
|
||||||
// Set things up for any pre-existing contacts
|
if (!db.containsGroup(txn, localGroup.getId())) {
|
||||||
for (Contact c : db.getContacts(txn)) addingContact(txn, c);
|
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
|
@Override
|
||||||
@@ -192,7 +199,7 @@ public class HandshakeKeyExchangeManagerImpl extends ConversationClientImpl
|
|||||||
|
|
||||||
private void sendHandshakePublicKey(Transaction txn, Contact c)
|
private void sendHandshakePublicKey(Transaction txn, Contact c)
|
||||||
throws DbException {
|
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);
|
Group group = getContactGroup(c);
|
||||||
GroupId g = group.getId();
|
GroupId g = group.getId();
|
||||||
if (!db.containsGroup(txn, g)) db.addGroup(txn, group);
|
if (!db.containsGroup(txn, g)) db.addGroup(txn, group);
|
||||||
|
|||||||
@@ -1,8 +1,11 @@
|
|||||||
package org.briarproject.briar.handshakekeyexchange;
|
package org.briarproject.briar.handshakekeyexchange;
|
||||||
|
|
||||||
|
import org.briarproject.bramble.api.client.ClientHelper;
|
||||||
import org.briarproject.bramble.api.contact.ContactManager;
|
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.lifecycle.LifecycleManager;
|
||||||
import org.briarproject.bramble.api.sync.validation.ValidationManager;
|
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.bramble.api.versioning.ClientVersioningManager;
|
||||||
import org.briarproject.briar.api.conversation.ConversationManager;
|
import org.briarproject.briar.api.conversation.ConversationManager;
|
||||||
import org.briarproject.briar.api.handshakekeyexchange.HandshakeKeyExchangeManager;
|
import org.briarproject.briar.api.handshakekeyexchange.HandshakeKeyExchangeManager;
|
||||||
@@ -18,6 +21,9 @@ public class HandshakeKeyExchangeModule {
|
|||||||
public static class EagerSingletons {
|
public static class EagerSingletons {
|
||||||
@Inject
|
@Inject
|
||||||
HandshakeKeyExchangeManager handshakeKeyExchangeManager;
|
HandshakeKeyExchangeManager handshakeKeyExchangeManager;
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
HandshakeKeyExchangeValidator handshakeKeyExchangeValidator;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Provides
|
@Provides
|
||||||
@@ -41,4 +47,18 @@ public class HandshakeKeyExchangeModule {
|
|||||||
conversationManager.registerConversationClient(handshakeKeyExchangeManager);
|
conversationManager.registerConversationClient(handshakeKeyExchangeManager);
|
||||||
return 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.BdfMessageContext;
|
||||||
import org.briarproject.bramble.api.client.BdfMessageValidator;
|
import org.briarproject.bramble.api.client.BdfMessageValidator;
|
||||||
import org.briarproject.bramble.api.client.ClientHelper;
|
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.BdfList;
|
||||||
import org.briarproject.bramble.api.data.MetadataEncoder;
|
import org.briarproject.bramble.api.data.MetadataEncoder;
|
||||||
import org.briarproject.bramble.api.sync.Group;
|
import org.briarproject.bramble.api.sync.Group;
|
||||||
import org.briarproject.bramble.api.sync.InvalidMessageException;
|
import org.briarproject.bramble.api.sync.InvalidMessageException;
|
||||||
import org.briarproject.bramble.api.sync.Message;
|
import org.briarproject.bramble.api.sync.Message;
|
||||||
import org.briarproject.bramble.api.system.Clock;
|
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;
|
import javax.inject.Inject;
|
||||||
|
|
||||||
@@ -26,6 +31,10 @@ public class HandshakeKeyExchangeValidator extends BdfMessageValidator {
|
|||||||
@Override
|
@Override
|
||||||
protected BdfMessageContext validateMessage(Message m, Group g,
|
protected BdfMessageContext validateMessage(Message m, Group g,
|
||||||
BdfList body) throws InvalidMessageException, FormatException {
|
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