mirror of
https://code.briarproject.org/briar/briar.git
synced 2026-02-15 20:29:52 +01:00
merge with 1872-key-agreement
This commit is contained in:
@@ -32,7 +32,7 @@ import static org.briarproject.briar.api.attachment.MediaConstants.MAX_CONTENT_T
|
||||
import static org.briarproject.briar.api.attachment.MediaConstants.MSG_KEY_CONTENT_TYPE;
|
||||
import static org.briarproject.briar.api.attachment.MediaConstants.MSG_KEY_DESCRIPTOR_LENGTH;
|
||||
import static org.briarproject.briar.api.messaging.MessagingConstants.MAX_ATTACHMENTS_PER_MESSAGE;
|
||||
import static org.briarproject.briar.api.messaging.MessagingConstants.MAX_PRIVATE_MESSAGE_TEXT_LENGTH;
|
||||
import static org.briarproject.briar.api.messaging.MessagingConstants.MAX_PRIVATE_MESSAGE_INCOMING_TEXT_LENGTH;
|
||||
import static org.briarproject.briar.client.MessageTrackerConstants.MSG_KEY_READ;
|
||||
import static org.briarproject.briar.messaging.MessageTypes.ATTACHMENT;
|
||||
import static org.briarproject.briar.messaging.MessageTypes.PRIVATE_MESSAGE;
|
||||
@@ -103,7 +103,7 @@ class PrivateMessageValidator implements MessageValidator {
|
||||
// Private message text
|
||||
checkSize(body, 1);
|
||||
String text = body.getString(0);
|
||||
checkLength(text, 0, MAX_PRIVATE_MESSAGE_TEXT_LENGTH);
|
||||
checkLength(text, 0, MAX_PRIVATE_MESSAGE_INCOMING_TEXT_LENGTH);
|
||||
// Return the metadata
|
||||
BdfDictionary meta = new BdfDictionary();
|
||||
meta.put(MSG_KEY_TIMESTAMP, m.getTimestamp());
|
||||
@@ -117,7 +117,7 @@ class PrivateMessageValidator implements MessageValidator {
|
||||
// Message type, optional private message text, attachment headers
|
||||
checkSize(body, 3);
|
||||
String text = body.getOptionalString(1);
|
||||
checkLength(text, 0, MAX_PRIVATE_MESSAGE_TEXT_LENGTH);
|
||||
checkLength(text, 0, MAX_PRIVATE_MESSAGE_INCOMING_TEXT_LENGTH);
|
||||
BdfList headers = body.getList(2);
|
||||
if (text == null) checkSize(headers, 1, MAX_ATTACHMENTS_PER_MESSAGE);
|
||||
else checkSize(headers, 0, MAX_ATTACHMENTS_PER_MESSAGE);
|
||||
|
||||
@@ -1,10 +1,14 @@
|
||||
package org.briarproject.briar.messaging;
|
||||
|
||||
import org.briarproject.bramble.api.UniqueId;
|
||||
import org.briarproject.bramble.api.client.ClientHelper;
|
||||
import org.briarproject.bramble.api.crypto.CryptoComponent;
|
||||
import org.briarproject.bramble.api.data.BdfList;
|
||||
import org.briarproject.bramble.api.identity.AuthorFactory;
|
||||
import org.briarproject.bramble.api.identity.LocalAuthor;
|
||||
import org.briarproject.bramble.api.sync.GroupId;
|
||||
import org.briarproject.bramble.api.sync.Message;
|
||||
import org.briarproject.bramble.api.sync.MessageFactory;
|
||||
import org.briarproject.bramble.api.sync.MessageId;
|
||||
import org.briarproject.briar.api.attachment.AttachmentHeader;
|
||||
import org.briarproject.briar.api.forum.ForumPost;
|
||||
@@ -14,6 +18,8 @@ import org.briarproject.briar.api.messaging.PrivateMessageFactory;
|
||||
import org.briarproject.briar.test.BriarTestCase;
|
||||
import org.junit.Test;
|
||||
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@@ -22,12 +28,16 @@ import javax.inject.Inject;
|
||||
import static org.briarproject.bramble.api.identity.AuthorConstants.MAX_AUTHOR_NAME_LENGTH;
|
||||
import static org.briarproject.bramble.api.identity.AuthorConstants.MAX_PUBLIC_KEY_LENGTH;
|
||||
import static org.briarproject.bramble.api.record.Record.MAX_RECORD_PAYLOAD_BYTES;
|
||||
import static org.briarproject.bramble.test.TestUtils.getRandomBytes;
|
||||
import static org.briarproject.bramble.test.TestUtils.getRandomId;
|
||||
import static org.briarproject.bramble.util.IoUtils.copyAndClose;
|
||||
import static org.briarproject.bramble.util.StringUtils.getRandomString;
|
||||
import static org.briarproject.briar.api.attachment.MediaConstants.MAX_CONTENT_TYPE_BYTES;
|
||||
import static org.briarproject.briar.api.attachment.MediaConstants.MAX_IMAGE_SIZE;
|
||||
import static org.briarproject.briar.api.forum.ForumConstants.MAX_FORUM_POST_TEXT_LENGTH;
|
||||
import static org.briarproject.briar.api.messaging.MessagingConstants.MAX_ATTACHMENTS_PER_MESSAGE;
|
||||
import static org.briarproject.briar.api.messaging.MessagingConstants.MAX_PRIVATE_MESSAGE_TEXT_LENGTH;
|
||||
import static org.briarproject.briar.messaging.MessageTypes.ATTACHMENT;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
|
||||
public class MessageSizeIntegrationTest extends BriarTestCase {
|
||||
@@ -40,6 +50,10 @@ public class MessageSizeIntegrationTest extends BriarTestCase {
|
||||
PrivateMessageFactory privateMessageFactory;
|
||||
@Inject
|
||||
ForumPostFactory forumPostFactory;
|
||||
@Inject
|
||||
ClientHelper clientHelper;
|
||||
@Inject
|
||||
MessageFactory messageFactory;
|
||||
|
||||
public MessageSizeIntegrationTest() {
|
||||
MessageSizeIntegrationTestComponent component =
|
||||
@@ -87,6 +101,32 @@ public class MessageSizeIntegrationTest extends BriarTestCase {
|
||||
assertTrue(length <= MAX_RECORD_PAYLOAD_BYTES);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testAttachmentFitsIntoRecord() throws Exception {
|
||||
// Create a maximum-length attachment
|
||||
String contentType = getRandomString(MAX_CONTENT_TYPE_BYTES);
|
||||
byte[] data = getRandomBytes(MAX_IMAGE_SIZE);
|
||||
|
||||
ByteArrayInputStream dataIn = new ByteArrayInputStream(data);
|
||||
ByteArrayOutputStream bodyOut = new ByteArrayOutputStream();
|
||||
byte[] descriptor =
|
||||
clientHelper.toByteArray(BdfList.of(ATTACHMENT, contentType));
|
||||
bodyOut.write(descriptor);
|
||||
copyAndClose(dataIn, bodyOut);
|
||||
byte[] body = bodyOut.toByteArray();
|
||||
|
||||
GroupId groupId = new GroupId(getRandomId());
|
||||
long timestamp = Long.MAX_VALUE;
|
||||
Message message =
|
||||
messageFactory.createMessage(groupId, timestamp, body);
|
||||
|
||||
// Check the size of the serialised message
|
||||
int length = message.getRawLength();
|
||||
assertTrue(length > UniqueId.LENGTH + 8
|
||||
+ 1 + MAX_CONTENT_TYPE_BYTES + MAX_IMAGE_SIZE);
|
||||
assertTrue(length <= MAX_RECORD_PAYLOAD_BYTES);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testForumPostFitsIntoRecord() throws Exception {
|
||||
// Create a maximum-length author
|
||||
|
||||
@@ -31,7 +31,7 @@ import static org.briarproject.briar.api.attachment.MediaConstants.MAX_CONTENT_T
|
||||
import static org.briarproject.briar.api.attachment.MediaConstants.MSG_KEY_CONTENT_TYPE;
|
||||
import static org.briarproject.briar.api.attachment.MediaConstants.MSG_KEY_DESCRIPTOR_LENGTH;
|
||||
import static org.briarproject.briar.api.messaging.MessagingConstants.MAX_ATTACHMENTS_PER_MESSAGE;
|
||||
import static org.briarproject.briar.api.messaging.MessagingConstants.MAX_PRIVATE_MESSAGE_TEXT_LENGTH;
|
||||
import static org.briarproject.briar.api.messaging.MessagingConstants.MAX_PRIVATE_MESSAGE_INCOMING_TEXT_LENGTH;
|
||||
import static org.briarproject.briar.client.MessageTrackerConstants.MSG_KEY_READ;
|
||||
import static org.briarproject.briar.messaging.MessageTypes.ATTACHMENT;
|
||||
import static org.briarproject.briar.messaging.MessageTypes.PRIVATE_MESSAGE;
|
||||
@@ -55,7 +55,7 @@ public class PrivateMessageValidatorTest extends BrambleMockTestCase {
|
||||
private final Message message = getMessage(group.getId());
|
||||
private final long now = message.getTimestamp() + 1000;
|
||||
private final String text =
|
||||
getRandomString(MAX_PRIVATE_MESSAGE_TEXT_LENGTH);
|
||||
getRandomString(MAX_PRIVATE_MESSAGE_INCOMING_TEXT_LENGTH);
|
||||
private final BdfList attachmentHeader = getAttachmentHeader();
|
||||
private final MessageId attachmentId = new MessageId(getRandomId());
|
||||
private final String contentType = getRandomString(MAX_CONTENT_TYPE_BYTES);
|
||||
@@ -132,7 +132,7 @@ public class PrivateMessageValidatorTest extends BrambleMockTestCase {
|
||||
@Test(expected = InvalidMessageException.class)
|
||||
public void testRejectsTooLongTextForLegacyMessage() throws Exception {
|
||||
String invalidText =
|
||||
getRandomString(MAX_PRIVATE_MESSAGE_TEXT_LENGTH + 1);
|
||||
getRandomString(MAX_PRIVATE_MESSAGE_INCOMING_TEXT_LENGTH + 1);
|
||||
|
||||
testRejectsLegacyMessage(BdfList.of(invalidText));
|
||||
}
|
||||
@@ -190,7 +190,7 @@ public class PrivateMessageValidatorTest extends BrambleMockTestCase {
|
||||
@Test(expected = InvalidMessageException.class)
|
||||
public void testRejectsTooLongTextForPrivateMessage() throws Exception {
|
||||
String invalidText =
|
||||
getRandomString(MAX_PRIVATE_MESSAGE_TEXT_LENGTH + 1);
|
||||
getRandomString(MAX_PRIVATE_MESSAGE_INCOMING_TEXT_LENGTH + 1);
|
||||
|
||||
testRejectsPrivateMessage(
|
||||
BdfList.of(PRIVATE_MESSAGE, invalidText, new BdfList()));
|
||||
|
||||
Reference in New Issue
Block a user